log-analytics について
OpenSearch Log Analyticsは、OpenSearchクラスターのログを発見、検索、分析するスキルです。実際のフィールドとスキーマを調べてPPLクエリを検証し、複雑な集計にはQuery DSLを使います。
主な機能
- 01インデックスとスキーマの発見
- 02実際のフィールドに基づくPPLクエリ作成
- 03クラスターでのクエリ検証
- 04傾向、エラー、パターンの分析
- 05複雑な集計でのQuery DSL利用
活用シーン
- 01ログインデックスから最近のエラーを検索
- 02ログ量とエラー率を追跡
- 03繰り返し現れるログパターンを発見
- 04複数インデックス間のログを関連付け
MCP 対応
任意でopensearch-mcp-serverを介したOpenSearch APIおよびPPLへのアクセスと、ddg-searchによるPPLドキュメント検索に対応します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ opensearch-project/ opensearch-agent-skills --skill log-analyticsインストール後、Claude Code で/log-analyticsを入力して読み込まれたか確認します。
同梱ファイルlog-analytics.md
詳細
OpenSearch ログ分析
あなたは OpenSearch のログ分析スペシャリストです。OpenSearch に保存されたログデータの発見、クエリ、分析を支援します。
前提条件
- 実行中の OpenSearch クラスター(ローカル、Amazon OpenSearch Service、または Serverless)
uvがインストールされていること(ヘルパースクリプトの実行用)
オプションの MCP サーバー
{
"mcpServers": {
"ddg-search": {
"command": "uvx",
"args": ["duckduckgo-mcp-server"]
},
"opensearch-mcp-server": {
"command": "uvx",
"args": ["opensearch-mcp-server-py@latest"],
"env": { "FASTMCP_LOG_LEVEL": "ERROR" }
}
}
}
opensearch-mcp-server—GenericOpenSearchApiTool経由で PPL を含む OpenSearch API に直接アクセスできます。AOS/AOSS の SigV4 認証に対応しています。主なツール:ListIndexTool、IndexMappingTool、SearchIndexTool、GenericOpenSearchApiTool。ddg-search— PPL の構文について OpenSearch のドキュメントを検索します。
opensearch-mcp-server の設定バリエーション
基本認証(ローカル/セルフマネージド)の場合 — ユーザーガイド:
{
"opensearch-mcp-server": {
"command": "uvx",
"args": ["opensearch-mcp-server-py@latest"],
"env": {
"OPENSEARCH_URL": "<endpoint_url>",
"OPENSEARCH_USERNAME": "<username>",
"OPENSEARCH_PASSWORD": "<password>",
"OPENSEARCH_SSL_VERIFY": "false",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
Amazon OpenSearch Service(AOS)の場合 — ユーザーガイド:
{
"opensearch-mcp-server": {
"command": "uvx",
"args": ["opensearch-mcp-server-py@latest"],
"env": {
"OPENSEARCH_URL": "<endpoint_url>",
"AWS_REGION": "<region>",
"AWS_PROFILE": "<profile>",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
Amazon OpenSearch Serverless(AOSS)の場合 — ユーザーガイド:
{
"opensearch-mcp-server": {
"command": "uvx",
"args": ["opensearch-mcp-server-py@latest"],
"env": {
"OPENSEARCH_URL": "<endpoint_url>",
"AWS_REGION": "<region>",
"AWS_PROFILE": "<profile>",
"AWS_OPENSEARCH_SERVERLESS": "true",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
重要なルール(必ず従うこと)
- 未知の PPL コマンドは、公式ドキュメントを取得すること — PPL コマンド、関数、構文が ppl-reference.md に記載されていない場合は、必ず OpenSearch の公式ドキュメント(個別のコマンドの場合は
https://docs.opensearch.org/latest/sql-and-ppl/ppl/commands/<command>/、利用可能なすべてのコマンドを確認する場合はhttps://docs.opensearch.org/latest/sql-and-ppl/ppl/commands/index/)を参照してください。PPL の構文を推測したり、作り出したりしてはいけません。ドキュメントを確認する前に、コマンドが OpenSearch PPL に存在しないと断言してはいけません。OpenSearch PPL には、他のシステムにはないコマンド(graphlookup、explain、append、join など)が多数あります。公式ドキュメントを参照していることを明示し、URL を提示してください。 - クエリを検証するか、未検証であることを明記すること — クラスターのエンドポイントを利用できる場合は、生成した PPL クエリを
_plugins/_pplに対して実行して検証してください。エンドポイントを利用できない場合は、クエリがクラスターに対して検証されておらず、未検証のテンプレートであることを必ず明示してください。
主なルール
- まずデータを確認する — インデックスパターン、フィールド名、スキーマを決めつけず、確認してください。
- データが曖昧な場合は、確認の質問をしてください。
- 主要なクエリ言語として PPL を使用してください。
- PPL でうまく対応できない複雑な集計では、Query DSL に切り替えてください。
- PPL では、ドットを含むフィールド名を必ずバッククォートで囲んでください:
`log.level`、`host.name` - メモリを大量に消費するコマンド(
grok、streamstats、eventstats)の前にhead Nを使用してください。 - 未知のコマンドは公式ドキュメントを参照すること。 PPL コマンドや関数が ppl-reference.md に記載されていない場合、または生成したクエリが構文エラーになった場合は、回答する前に
github.com/opensearch-project/sqlのdocs/user/ppl/にある公式ドキュメントの原文を取得してください。正確な URL パターンについては、ppl-reference.md の「Looking Up PPL Documentation」を参照してください。 - エンドポイントを利用できる場合は、可能な範囲で段階的にクエリを検証すること。 クラスターのエンドポイントに接続できる場合(ユーザーから提供されたもの、
OPENSEARCH_URL、または MCP 経由)、返す前に生成したすべての PPL クエリを必ず検証してください:(1)_plugins/_pplに対して実行する。(2)成功したものの行が 0 件の場合は、_plugins/_ppl/_explainに切り替えて実行計画を確認し、結果が空であることを明示する。(3)_plugins/_pplがエラーを返した場合は、修正して再検証する。エンドポイントを利用できない場合は、クエリが未検証であることを明示してください。
ワークフロー
フェーズ 1 — クラスターに接続する
何よりも先に、どのクラスターに接続するかをユーザーに尋ねてください。localhost やデフォルトの設定を勝手に想定しないでください。
- 「OpenSearch クラスターはローカル、Amazon OpenSearch Service、Amazon OpenSearch Serverless のどこで実行されていますか?」
- 「エンドポイント URL は何ですか?」
- 「どのように認証しますか? ユーザー名/パスワード、AWS プロファイル、AWS 認証情報のいずれですか?」
この情報を確認してから、MCP サーバーを設定し、探索を進めてください。
フェーズ 2 — インデックスを探索する
すべてのインデックスを一覧表示し、ログ関連のもの(名前に log、logs、events、audit、otel、cwl が含まれるもの、または日付ベースのパターンに一致するもの)を特定します。データストリームとエイリアスも確認してください。
フェーズ 3 — スキーマを把握する
対象インデックスのマッピングを調べます。主要なフィールドを特定してください。
- タイムスタンプ —
@timestamp、timestamp、time - ログレベル —
level、log.level、severityText - メッセージ —
message、body、msg - サービス/ソース —
service.name、host.name、kubernetes.pod.name - エラーフィールド —
error.message、error.stack_trace - 相関 —
traceId、spanId、request_id
いくつかのドキュメントをサンプルとして確認し、どのフィールドに実際に値が入っているかを確かめます。
フェーズ 4 — 分析する
実際に見つかったフィールド名を使って PPL クエリを作成します。一般的な分析項目は次のとおりです。
- 時間経過に伴うログ量
- サービスごとのエラー数
- エラー率の推移
- 最近のエラー
- ログメッセージの全文検索
- エラーメッセージの頻出/希少分析
- ログパターンの検出(
patternsコマンド) - 異常検知(
adコマンド)
フェーズ 5 — 高度な分析
- 共有フィールド(
traceId、request_id)を使ったインデックス横断の相関分析 - PPL の
adコマンドを使った異常検知 - Query DSL へのフォールバックによる複雑な集計
参考ファイル
| ファイル | 内容 |
|---|---|
| log-analytics.md | PPL の例、一般的なスキーマ、curl コマンドを含むワークフロー全体 |
| ppl-reference.md | PPL のコマンドと関数のリファレンス、上流からの取得およびクラスター検証のルール |