log-analysis-parsing について
構造化・非構造化ログの解析と分析を支援するスキルです。オブザーバビリティ、トラブルシューティング、セキュリティ分析向けに、検索、相関分析、異常検知、レポート作成を扱います。
主な機能
- 01正規表現、Grok、JSONによる解析
- 02複数行ログとタイムスタンプの処理
- 03全文・フィールド・期間の検索
- 04複数ソースの相関と異常分析
- 05指標抽出と可視化レポート
活用シーン
- 01テキストログから項目を抽出して構造化
- 02大量ログからエラーやパターンを検索
- 03ログソースを関連付けて障害を調査
- 04過去ログからセキュリティ事象や性能傾向を分析
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ wojons/ skills --skill log-analysis-parsingインストール後、Claude Code で/log-analysis-parsingを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdreferences/README.mdscripts/parse-logs.sh詳細
ログの分析と解析
正規表現パターン、解析エンジン、ログ分析ツール、データ処理手法を使って、ログデータを解析、分析、検索、フィルタリングし、インサイトを抽出して、生のログを実用的な情報に変換します。
こんなときに使います
次のような場合にこのスキルを使います。
- 構造化されていないログファイルから特定の情報を抽出する必要がある
- オブザーバビリティプラットフォーム向けのログ解析パイプラインを構築する
- 大量のログから特定のパターンやエラーを検索する
- ログの内容に基づいてダッシュボードやアラートを作成する
- セキュリティインシデントやパフォーマンスの問題についてログデータを分析する
- レガシーなテキストログを構造化形式に変換する
- カスタムのログ分析ツールやスクリプトを構築する
- 複数のログソースをまたいだ相関分析が必要な複雑な問題をデバッグする
- 過去のログデータをフォレンジック分析する
できること
1. ログの解析手法
- 正規表現によるパターンマッチングで、構造化されていないログから構造化データを抽出します
- Grokパターン解析で、名前付きキャプチャグループと再利用可能なパターンを使います
- JSON解析で、すでに構造化されているログ形式を処理します
- 区切り文字を含むログ形式からキーと値のペアを抽出します
- スタックトレースや例外の詳細情報を対象に複数行ログを処理します
- さまざまな日付・時刻形式からタイムスタンプを解析します
- 不明なログ形式を対象にログ形式を推定します
2. ログの分析手法
- パターン認識で一般的なログメッセージの種類を特定します
- 異常検出で通常とは異なるログパターンやログ量を検出します
- ログ量、エラー率、パフォーマンス指標の傾向分析を行います
- 複数のログソースを対象に相関分析を行います
- イベントの流れを理解するためにシーケンス分析を行います
- ログ属性と指標の統計分析を行います
- ログの分類と予測に機械学習の手法を活用します
3. 検索とフィルタリングの操作
- ログメッセージとフィールドを対象に全文検索します
- 構造化ログデータに対してフィールドを指定してクエリを実行します
- 複雑なクエリにブール演算(AND、OR、NOT)を使用します
- 時系列分析のために時間範囲でフィルタリングします
- パターンマッチングに正規表現検索を使用します
- 近似一致を探すあいまい検索を使用します
- 繰り返しの分析に保存済み検索とクエリテンプレートを使用します
4. インサイトの抽出
- ログパターンからエラー率を計算します
- パフォーマンス指標を抽出します(レイテンシ、処理時間、スループット)
- アプリケーションログからユーザー行動を分析します
- アクセスログと監査ログからセキュリティイベントを検出します
- トランザクションログからビジネス指標を導出します
- インフラストラクチャログからシステムの健全性指標を抽出します
- サービス間のやり取りを記録したログから依存関係の健全性を確認します
5. 可視化とレポート
- ログ量とエラー率を示す時系列グラフ
- パターンの出現頻度を示すヒートマップ
- 最も多いエラーやユーザーを示す上位N件のリスト
- パフォーマンス指標を示す分布グラフ
- 関連するイベントを示す相関行列
- リアルタイム監視用のアラートダッシュボード
- 外部分析ツール向けのエクスポート機能
解析パターン
一般的なログ形式
Apache/Nginx アクセスログ
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326
解析パターン:
^(?P<ip>\S+) \S+ (?P<user>\S+) \[(?P<timestamp>[^\]]+)\] "(?P<method>\S+) (?P<path>\S+) (?P<protocol>\S+)" (?P<status>\d+) (?P<size>\d+)
JSONログ(構造化形式)
{
"timestamp": "2026-02-26T18:00:00Z",
"level": "ERROR",
"service": "api-service",
"message": "Database connection failed",
"error": {
"code": "DB_CONN_001",
"message": "Connection timeout"
}
}
解析方法: JSONを直接解析してフィールドを抽出します
キーと値のログ
timestamp=2026-02-26T18:00:00Z level=ERROR service=api-service message="Database connection failed" error_code=DB_CONN_001
解析パターン:
(\w+)=("[^"]*"|\S+)
複数行のスタックトレース
ERROR 2026-02-26 18:00:00 - Database connection failed
java.sql.SQLException: Connection timeout
at com.example.Database.connect(Database.java:123)
at com.example.Service.process(Service.java:456)
...
解析方法: 先頭行をヘッダーとしてキャプチャし、以降の行をstack_traceフィールドとして扱います
Grokパターン
Grokでは、一般的なログ構成要素に対応する、再利用可能な名前付き正規表現パターンを使用できます。
一般的なGrokパターン:
%{TIMESTAMP_ISO8601:timestamp}%{IP:client_ip}%{WORD:http_method}%{URIPATHPARAM:request_path}%{NUMBER:response_status}%{NUMBER:response_size}%{GREEDYDATA:message}
Apacheログ用のGrokパターンの例:
%{IP:client_ip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] "%{WORD:method} %{URIPATHPARAM:request} HTTP/%{NUMBER:http_version}" %{NUMBER:response_status} %{NUMBER:bytes_sent}
分析手法
パターンの出現頻度分析
最も一般的なログメッセージ、エラーの種類、ユーザーの操作を特定します。
分析例:
Top 5 Error Messages (last 24 hours):
1. "Database connection timeout" (1,234 occurrences)
2. "Invalid API key" (987 occurrences)
3. "Rate limit exceeded" (654 occurrences)
4. "File not found" (543 occurrences)
5. "Memory allocation failed" (432 occurrences)
時系列分析
メトリクスを時系列で追跡し、傾向や異常を特定します。
追跡するメトリクス:
- 1 分/1 時間/1 日あたりのログ量
- 全ログに対するエラー率の割合
- アクセスログから算出した平均応答時間
- ピーク利用時間帯とパターン
- 季節的な傾向(日次、週次、月次)
相関分析
異なるログソース間で関連するイベントを結び付けます。
相関の例:
- アプリケーションエラーをインフラストラクチャのアラートと結び付ける
- ユーザーの操作とパフォーマンスの低下を関連付ける
- 複数のシステムにわたるセキュリティイベントを結び付ける
- マイクロサービスを通じてリクエストのフローを追跡する
異常検出
問題を示している可能性がある、通常とは異なるパターンを特定します。
異常の種類:
- エラー率の急増
- 通常とは異なるアクセスパターン
- 想定外のサービス間のやり取り
- 異常なリソース使用パターン
- 地理的なアクセスの異常
例
# Parse Apache access logs and extract statistics
npm run log-analysis:parse -- --format apache --file access.log --output stats.json
# Search for error patterns in application logs
npm run log-analysis:search -- --pattern "ERROR.*timeout" --files "app*.log" --time-range "last-24h"
# Analyze log trends over time
npm run log-analysis:trends -- --metric "error_rate" --window "7d" --granularity "1h"
# Create parsing pipeline for custom log format
npm run log-analysis:pipeline -- --input-format "custom" --output-format "json" --mapping mapping.yaml
# Perform correlation analysis across log sources
npm run log-analysis:correlate -- --sources "app.log,nginx.log,db.log" --time-window "5m"
出力形式
解析設定:
parsing:
format: "apache_access"
pattern: '^(?P<ip>\S+) \S+ (?P<user>\S+) \[(?P<timestamp>[^\]]+)\] "(?P<method>\S+) (?P<path>\S+) (?P<protocol>\S+)" (?P<status>\d+) (?P<size>\d+)'
timestamp_format: "%d/%b/%Y:%H:%M:%S %z"
fields:
- name: "ip"
type: "string"
- name: "timestamp"
type: "datetime"
- name: "method"
type: "string"
- name: "status"
type: "integer"
- name: "size"
type: "integer"
processing:
- transform: "status >= 400 => error"
- transform: "size > 1000000 => large_response"
- enrich: "geoip(ip)"
- enrich: "user_agent_parse(user_agent)"
output:
format: "json"
include_fields: ["timestamp", "ip", "method", "path", "status", "size", "error"]
ログ分析レポート:
Log Analysis Report
───────────────────
Source: payment-service logs
Period: 2026-02-25 to 2026-02-26
Total logs analyzed: 1,234,567
Parsing Summary:
✅ Successfully parsed: 1,200,123 logs (97.2%)
⚠️ Partially parsed: 23,456 logs (1.9%)
❌ Failed to parse: 10,988 logs (0.9%)
Common Patterns Identified:
1. "Payment processed" (45,678 occurrences)
2. "Database query executed" (32,456 occurrences)
3. "API call to gateway" (28,901 occurrences)
4. "Validation error" (12,345 occurrences)
5. "Cache hit/miss" (9,876 occurrences)
Error Analysis:
- Total errors: 15,678 (1.27% error rate)
- Top error: "Payment gateway timeout" (4,567 occurrences)
- Error trend: Increasing over last 24 hours (+15%)
- Peak error time: 14:00-15:00 (1,234 errors/hour)
Performance Metrics:
- Average response time: 245ms
- 95th percentile: 567ms
- 99th percentile: 1,234ms
- Slowest endpoint: /api/v1/reports (avg 890ms)
Security Insights:
- Unusual access patterns detected: 12
- Failed authentication attempts: 456
- Suspicious user agents: 23
- Geographic anomalies: 5
Recommendations:
1. Investigate increasing error rate trend
2. Optimize /api/v1/reports endpoint performance
3. Review 12 unusual access patterns
4. Consider adding more context to validation errors
5. Implement parsing for currently failed logs
注意事項
- 解析パフォーマンスは重要です - 非効率な正規表現はログ処理を遅くする可能性があります
- 解析の失敗を適切に処理します - 解析エラーによってデータが失われないようにしてください
- 解析を簡素化するため、アプリケーション間でログ形式を標準化します
- ログ量を考慮します - 数百万件のログを解析するには効率的なアルゴリズムが必要です
- 同じログを繰り返し分析する場合は、解析結果をキャッシュします
- 解析したデータを検証します - 抽出したフィールドが正確で一貫していることを確認してください
- 解析ルールを文書化します - 特にカスタムまたは複雑なログ形式の場合は重要です
- すべてのログソースと形式のサンプルデータを使って解析をテストします
- 解析成功率を監視します - 解析成功率が急に低下した場合にアラートを出します
- ログ形式の変更に備えます - 解析ルールにバージョンを付け、移行に対応します
コメント
Markdown 対応