
Datadog MCP サーバで自然言語分析&障害対応をやってみた
こんにちは。テクニカルサポートチームのShiinaです。
はじめに
Datadog の監視データを、自然言語で簡単に扱える時代が到来しました。
注目を集めている MCP と Claude Desktop を組み合わせることで、専門知識がなくても分析が可能になります。
本記事では、その導入手順と活用例をご紹介します。
利用する Datadog MCP Server
今回、こちらの MCP Server を利用しました。
前提
- Datadog API キーを発行していること
- Datadog アプリケーションキー(APPキー)を発行していること
- Claude Desktop がインストールされていること
Claude Desktop 設定手順
- 下記の json 形式の設定ファイルに MCP サーバーの定義を追加します。
MacOS:~/Library/Application Support/Claude/claude_desktop_config.json
WindowsOS:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"mcp-server-datadog": {
"command": "npx",
"args": ["-y", "@winor30/mcp-server-datadog"],
"env": {
"DATADOG_API_KEY": "<YOUR_API_KEY>",
"DATADOG_APP_KEY": "<YOUR_APP_KEY>",
"DATADOG_SITE": "datadoghq.com"
}
}
}
}
- Claude Desktop を一度終了し、再起動してください。
- 利用可能な MCP ツールに表示されたら設定は完了です。
使ってみた
ホスト数を取得
Datadogでは何台のホストが稼働していますか?
出力結果
過去データに基づいた数値を出力してくれます。
メトリクス情報をグラフ化
直近1時間でホスト「XXXXXXXXXXXXXXX」のCPU使用率をグラフ化してください。
出力結果
グラフも正確に出力されていました。
さらに特徴と分析を行ってくれています。
将来予測
Datadogで[production] web-server disk usage Forecast monitorモニター名でモニタリングしているディスクの使用量を12時間後の将来予測値を教えて
出力結果
Datadog では過去のメトリクス値から将来予測(Forecast)が行えます。
予測値もしっかりと出力してくれました。
エラーログ検索
nginx で発生した 404 Not Found エラーログを見つけてください。
出力結果
発生時刻、ホスト、リクエストURL、メッセージなどログの詳細まで解説がされています。
アラート抑止(ダウンタイム)
今週末メンテナンスのためサービスを停止します。
メンテナンス時間帯にアラートが発生しないよう設定をしてください
メンテナンス時間:4/13 9:00〜17:00 (日本時間)
対象ホスト:XXXXXXXXXXXXXXX
出力結果
実際にダウンタイム設定をスケジュールできますが、Datadog コンソールから確認してみると、開始時刻が異なっているようでした。
設定には注意が必要です。
発生しているアラート確認
Datadogで監視しているモニターで現在アラートが発生しているものはありますか?
出力結果
対象モニターに加え、何を監視しているか説明も行ってくれます。
アラート対処方法
このアラートが出たときはどうすればいい?
出力結果
アラート対応手順を詳細に教えてくれました。
これは非常に助かります。
障害レポート作成
モニター名:[production] nginx process monitorがアラート状態となっていた件について復旧対応が完了しました。
モニターステータスの変化があった時系列を整理して障害レポート書いてください。
出力結果
# Nginxプロセス障害レポート
## 概要
2025年4月11日に本番環境(production)のNginxプロセスモニター「[production] nginx process monitor」がアラート状態となりました。本レポートでは、障害の経緯と対応について記録します。
## 障害内容
- **モニター名**: [production] nginx process monitor
- **アラート条件**: Nginxプロセスの数が2未満(`processes('').over('command:nginx').rollup('count').last('5m') < 2`)
- **影響を受けたサーバー**: XXXXXXXXXXXXXXX(web-prod)
## 時系列
| 時刻(JST) | イベント | 詳細 |
|------------|----------|------|
| 04:24:27 | 正常動作確認 | Nginxへのアクセスログが記録されており、正常に応答(200 OK)していた |
| 04:28:24〜04:28:26 | 正常動作最終確認 | この時間帯も正常にレスポンス(200 OK)を返していた |
| 04:49:20頃 | 障害発生推定時刻 | CPU使用率が急激に低下(10.7%→3.6%→0.4%)、Nginxプロセスが停止したと推測される |
| 04:49:20〜05:10:20 | 障害継続 | CPU使用率が低いまま推移、Nginxプロセスが動作していない状態が続く |
| 05:10:20頃 | 復旧対応実施 | CPU使用率が急上昇(0.6%→27.3%→32.1%)、Nginxプロセスが再起動されたと推測される |
| 05:10:50頃 | 復旧完了 | CPU使用率が安定し、通常レベルに戻る |
## 原因分析
システムログやエラーログの詳細情報は取得できていないため、具体的な障害原因は特定できていませんが、以下の可能性が考えられます:
1. Nginxプロセスのクラッシュ
2. システムリソース不足による自動停止
3. 設定ファイルの問題による起動失敗
4. セキュリティソフトウェアによる意図しない終了
## 対応内容
障害検知後、以下の対応を実施しました:
1. サーバーへSSH接続
2. Nginxプロセスの状態確認
3. Nginxサービスの再起動
4. 動作確認
## 再発防止策
1. Nginxの自動再起動設定の見直し
2. エラーログ監視の強化
3. リソース監視の閾値調整の検討
4. 定期的なヘルスチェックの導入
## 教訓と改善点
1. モニタリング通知の即時対応体制の確認
2. 復旧手順のドキュメント化と共有
3. 類似サービスに対する予防的チェックの実施
4. インシデント対応訓練の実施
## まとめ
本番環境のNginxプロセスが2025年4月11日04:49頃に停止し、約21分後の05:10頃に復旧しました。今回の障害を教訓に、モニタリングとインシデント対応プロセスの改善を進めていきます。
障害対応時系列の整理は大変ですが、すぐに結果が得られます。
素案作成にとても役立ちます。
ポストモーテム作成
ポストモーテム書いてください
出力結果
# [production] nginx process monitorアラート ポストモーテム
## 概要
2025年4月11日04:49頃、本番環境のNginxプロセスがダウンし、「[production] nginx process monitor」モニターがアラート状態となった。約21分後の05:10頃に復旧作業が完了し、サービスは正常に戻った。
## 発生日時と対応履歴
- **2025年4月11日04:49頃**: Nginxプロセスが停止、モニターアラート発生
- **2025年4月11日05:10頃**: 復旧対応完了、Nginxプロセス再起動
- **復旧所要時間**: 約21分間
## 影響範囲
- **影響を受けたサービス**: 本番環境Webサーバー(web-prod)
- **影響を受けたインスタンス**: XXXXXXXXXXXXXXX(ap-northeast-1a)
- **ユーザーへの影響**: 約21分間、Webサイトへのアクセスが不可
- **影響を受けたリクエスト数**: 調査中
## 原因
### 直接的原因
- Nginxプロセスが予期せず停止した
### 根本原因(推測)
以下のいずれかの可能性が考えられる:
1. メモリ不足によるOOM Killer(Out Of Memory Killer)によるプロセス終了
2. Nginxの設定ファイル問題による自動再読み込み失敗
3. 予期せぬシステムクラッシュ
4. セキュリティアップデートの自動適用による再起動
(注: 詳細なログ分析が必要)
## 検出
- **検出手段**: Datadogモニター「[production] nginx process monitor」
- **検出条件**: `processes('').over('command:nginx').rollup('count').last('5m') < 2`
- **アラート遅延**: なし(即時検出)
## 対応手順
1. アラート通知を受け、インシデント対応チームが調査開始
2. サーバーへSSH接続し、状態確認(`ps aux | grep nginx`)
3. システムログ確認(`/var/log/nginx/error.log`)
4. Nginxサービス再起動(`systemctl restart nginx`)
5. 動作確認テスト実施(`curl http://localhost/`)
6. モニターの復帰確認
## うまくいったこと
1. モニタリングシステムによる迅速な検出
2. 標準化された復旧手順による速やかな対応
3. 再起動後の安定動作確認
## うまくいかなかったこと
1. 根本原因の即時特定ができなかった
2. 予防的な監視(メモリ使用量など)が不十分だった可能性
3. 自動復旧の仕組みが機能しなかった
## 今後の改善策
### 短期対応(1週間以内)
1. [ ] Nginxログの詳細分析による根本原因の特定
2. [ ] 自動復旧スクリプトの導入・強化
3. [ ] メモリ・CPU使用率の詳細監視設定
### 中期対応(1ヶ月以内)
1. [ ] 類似環境の予防的チェックと設定見直し
2. [ ] インシデント対応手順の文書化と訓練
3. [ ] サーバーリソースのスケーリング検討
### 長期対応(3ヶ月以内)
1. [ ] 高可用性(HA)構成への移行検討
2. [ ] システム監視戦略の見直し
3. [ ] 定期的なストレステストの実施
## 教訓
1. プロセス監視だけでなく、システムリソース(メモリ、CPU、ディスク)の複合的な監視が重要
2. 自動復旧メカニズムの信頼性検証と改善が必要
3. インシデント対応の迅速性とルート原因分析のバランスを取るプロセスの確立
## 次のステップ
- 2025年4月18日までに根本原因分析を完了
- 2025年4月25日までに短期対応を完了
- 2025年5月11日までに中期対応の進捗確認ミーティングを実施
## 担当者
- インシデント対応: (担当者名)
- ルート原因分析: (担当者名)
- 改善施策実施: (担当者名)
- フォローアップ: (担当者名)
構成が整理されており、非常に分かりやすい内容でした。
今後の改善に活用できそうです。
まとめ
Datadog と LLM を組み合わせることで、専門知識がなくても監視データの取得や分析が可能になりました。
MCP Server と Claude Desktop を連携させることで、グラフ表示から障害対応まで自然言語で操作できます。
障害レポートやポストモーテムも自動生成され、対応の迅速化と業務効率の向上が期待されます。
今後は AI による自動対応の進化により、監視のあり方が大きく変化していくと考えられます。
本記事が参考になれば幸いです。