dd-logs について
dd-logsは、AIエージェントがDatadogのログを検索、処理、アーカイブするためのスキルで、コスト管理にも配慮しています。クエリの使い方や設定例に加え、大量ログや機密データを扱う手順を含みます。
主な機能
- 01条件とクエリ構文によるログ検索
- 02アーカイブとログ設定の確認
- 03プロセッサーと除外フィルターの設定
- 04ログベースメトリクスの作成と確認
- 05コストと機密データの扱い方
活用シーン
- 01指定した期間のエラー検索
- 02除外フィルターによるインデックス量の削減
- 03コンプライアンス保管向けログアーカイブの設定
MCP 対応
Pupを通じてDatadogのログを管理するスキルです。入力にはMCP機能の説明はありません。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ datadog-labs/ agent-skills --skill dd-logsインストール後、Claude Code で/dd-logsを入力して読み込まれたか確認します。
詳細
Datadog ログ
コストを考慮しながら、ログを検索、処理、アーカイブします。
前提条件
Datadog Pup がすでにインストールされている必要があります。まだの場合は、Pup のセットアップを参照してください。
コマンド実行順序(トークン効率化)
対象を絞ったコマンドでは、次の順序で実行してください。
- まずコンテキストを確認します(以前の出力、会話、保存済みの値)。
- 必要な値が不足している場合は、最初に情報を取得するコマンドを実行します。
- それでも曖昧な場合は、ユーザーに確認を求めます。
- その後、対象のコマンドを実行します。
- 失敗する可能性の高い推測に基づくコマンドは避けます。
クイックスタート
pup auth login
ログを検索する
# Basic search
pup logs search --query="status:error" --from="1h"
# With filters
pup logs search --query="service:api status:error" --from="1h" --limit 100
# JSON output
pup logs search --query="@http.status_code:>=500" --from="1h"
検索構文
| クエリ | 意味 |
|---|---|
error | 全文検索 |
status:error | タグが一致 |
@http.status_code:500 | 属性が一致 |
@http.status_code:>=400 | 数値範囲 |
service:api AND env:prod | ブール演算 |
@message:*timeout* | ワイルドカード |
設定 API
pup 0.42.0 で利用できるログ設定コマンド:
# List log archives
pup logs archives list
# List log restriction queries
pup logs restriction-queries list
# List custom log destinations
pup logs custom-destinations list
よく使われるプロセッサー
{
"name": "API Logs",
"filter": {"query": "service:api"},
"processors": [
{
"type": "grok-parser",
"name": "Parse nginx",
"source": "message",
"grok": {"match_rules": "%{IPORHOST:client_ip} %{DATA:method} %{DATA:path} %{NUMBER:status}"}
},
{
"type": "status-remapper",
"name": "Set severity",
"sources": ["level", "severity"]
},
{
"type": "attribute-remapper",
"name": "Remap user_id",
"sources": ["user_id"],
"target": "usr.id"
}
]
}
除外フィルター(コスト管理)
重要なものだけをインデックス化します:
{
"name": "Drop debug logs",
"filter": {"query": "status:debug"},
"is_enabled": true
}
大量発生するログの除外
# Find noisiest log sources
pup logs search --query="*" --from="1h" | jq 'group_by(.service) | map({service: .[0].service, count: length}) | sort_by(-.count)[:10]'
| 除外対象 | クエリ |
|---|---|
| ヘルスチェック | @http.url:"/health" OR @http.url:"/ready" |
| デバッグログ | status:debug |
| 静的アセット | @http.url:*.css OR @http.url:*.js |
| ハートビート | @message:*heartbeat* |
アーカイブ
コンプライアンス対応のため、ログを低コストで保存します:
# List archives
pup logs archives list
# Archive config (S3 example)
{
"name": "compliance-archive",
"query": "*",
"destination": {
"type": "s3",
"bucket": "my-logs-archive",
"path": "/datadog"
},
"rehydration_tags": ["team:platform"]
}
再取り込み(復元)
# No `pup logs rehydrate` command in pup 0.42.0.
# Use Datadog UI/API for rehydration workflows.
ログベースのメトリクス
ログからメトリクスを作成します(インデックス化より低コストです):
# List log-based metrics
pup logs metrics list
# Get one metric by ID
pup logs metrics get api.errors.count
カーディナリティに関する警告: グループ化する値には、範囲が限定されたものだけを使用してください。
機密データ
マスキングルール
{
"type": "hash-remapper",
"name": "Hash emails",
"sources": ["email", "@user.email"]
}
ログに記録してはいけない情報
# In your app - sanitize before sending
import re
def sanitize_log(message: str) -> str:
# Remove credit cards
message = re.sub(r'\b\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}\b', '[REDACTED]', message)
# Remove SSNs
message = re.sub(r'\b\d{3}-\d{2}-\d{4}\b', '[REDACTED]', message)
return message
トラブルシューティング
| 問題 | 対処方法 |
|---|---|
| ログが表示されない | エージェントとパイプラインのフィルターを確認します |
| コストが高い | 除外フィルターを追加します |
| 検索が遅い | 時間範囲を絞り、インデックスを使用します |
| 属性が不足している | grok パーサーを確認します |
参考資料・ドキュメント
コメント
Markdown 対応