プロジェクト

全般

プロフィール

バグ #372

未完了

claude-search ログ機能実装とモニタリング

Redmine Admin さんが13日前に追加. 13日前に更新.

ステータス:
新規
優先度:
通常
担当者:
-
開始日:
2025-06-08
期日:
進捗率:

0%

予定工数:

説明

概要

claude-searchサービスのログ機能実装とモニタリング強化

親チケット

  • #368 claude-search Phase2短期改善
  • #369 claude-search Phase3中期改善

現状の問題

  • ログはコンソール出力のみ
  • ファイルへの保存未実装
  • ログローテーションなし
  • エラー追跡が困難

実装内容

1. アプリケーションログ設定

1.1 ログファイル出力

  • ファイルパス: /root/claude-search-system/logs/app.log
  • フォーマット: JSON形式
  • ログレベル: DEBUG/INFO/WARNING/ERROR/CRITICAL

1.2 ログローテーション

  • 日次ローテーション
  • 最大30日保存
  • 圧縮保存(.gz)

1.3 構造化ログ

logger.info("search_performed", {
    "query": query,
    "results_count": len(results),
    "query_time_ms": query_time,
    "user_ip": request.client.host
})

2. アクセスログ

2.1 Nginxアクセスログ

  • 現在: /var/log/nginx/access.log
  • 追加: claude-search専用ログ
  • フォーマット: Combined + レスポンスタイム

2.2 APIアクセスログ

  • リクエスト/レスポンス記録
  • パフォーマンスメトリクス
  • エラー率追跡

3. エラーログ

  • 例外スタックトレース
  • エラーコンテキスト
  • ユーザー影響度

4. モニタリング設定

4.1 ヘルスチェック拡張

  • CPU/メモリ使用率
  • DB接続プール状態
  • ディスク使用量

4.2 メトリクス収集

  • 検索クエリ数/分
  • 平均レスポンスタイム
  • エラー率
  • 同時接続数

5. ログ分析ツール

  • ログ検索スクリプト
  • エラー集計レポート
  • パフォーマンス分析

技術実装

  • Python logging + logging.handlers
  • structlog for 構造化ログ
  • logrotate設定
  • Prometheusメトリクス(オプション)

ファイル構成

/root/claude-search-system/logs/
├── app.log          # アプリケーションログ
├── error.log        # エラー専用
├── access.log       # APIアクセス
├── performance.log  # パフォーマンス
└── archive/         # ローテート済み

成功基準

  • すべてのエラーがファイルに記録
  • 30日分のログ保存
  • ログから問題調査可能
  • パフォーマンス分析可能

Redmine Admin さんが13日前に更新

実装アプローチ

段階的実装計画

  1. 第1段階: 基本的なファイルログ出力

    • main.pyへのlogging設定追加
    • logs/app.logへの出力
  2. 第2段階: ログローテーション

    • logging.handlers.TimedRotatingFileHandler
    • 日次ローテーション設定
  3. 第3段階: 構造化ログ

    • JSON形式での出力
    • 検索・分析しやすい形式

現在のログ状況

  • v2.1.0で基本的なロギング実装済み
  • コンソール出力のみ
  • ファイル出力の設定追加で対応可能

作業見積もり

  • 基本実装: 1時間
  • テスト・調整: 30分

他の形式にエクスポート: Atom PDF