mcpField
D
dd-logs

dd-logs

github.com/datadog-labsクラウド・DevOps1802.1k 回インストール6 日前に更新
リポジトリ

dd-logs について

dd-logsは、AIエージェントがDatadogのログを検索、処理、アーカイブするためのスキルで、コスト管理にも配慮しています。クエリの使い方や設定例に加え、大量ログや機密データを扱う手順を含みます。

主な機能

  1. 01条件とクエリ構文によるログ検索
  2. 02アーカイブとログ設定の確認
  3. 03プロセッサーと除外フィルターの設定
  4. 04ログベースメトリクスの作成と確認
  5. 05コストと機密データの扱い方

活用シーン

  1. 01指定した期間のエラー検索
  2. 02除外フィルターによるインデックス量の削減
  3. 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 のセットアップを参照してください。

コマンド実行順序(トークン効率化)

対象を絞ったコマンドでは、次の順序で実行してください。

  1. まずコンテキストを確認します(以前の出力、会話、保存済みの値)。
  2. 必要な値が不足している場合は、最初に情報を取得するコマンドを実行します。
  3. それでも曖昧な場合は、ユーザーに確認を求めます。
  4. その後、対象のコマンドを実行します。
  5. 失敗する可能性の高い推測に基づくコマンドは避けます。

クイックスタート

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 パーサーを確認します

参考資料・ドキュメント

コメント