mcpField
A
alertmanager-query

alertmanager-query

github.com/victoriametricsクラウド・DevOps59284 回インストール2 週間前に更新
リポジトリ

alertmanager-query について

alertmanager-queryは、curlでPrometheus互換のAlertManager HTTP API v2を操作するスキルです。運用担当者向けに、アラートの確認とサイレンス管理を支援し、接続確認やVictoriaMetricsへのフォールバックも扱います。

主な機能

  1. 01アラートの一覧表示と絞り込み
  2. 02アラート状態の確認
  3. 03サイレンスの一覧表示と取得
  4. 04サイレンスの作成と削除
  5. 05接続確認とフォールバック案内

活用シーン

  1. 01発火中・サイレンス中・抑制中のアラート確認
  2. 02メンテナンス中のサイレンス作成や解除
  3. 03アラートルーティングと抑制状態の確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/victoriametrics/skills --skill alertmanager-query

インストール後、Claude Code で/alertmanager-queryを入力して読み込まれたか確認します。

同梱ファイルreferences/api-reference.md

詳細

AlertManager クエリ(API v2)

curl を使って Prometheus 互換の AlertManager HTTP API v2 に直接クエリを送信します。フィルター付きのアラート一覧、サイレンスの管理(一覧表示、作成、取得、削除)、アラート状態の確認に対応しています。

利用可能性に関する警告

AlertManager はクラスター内のポッドとして実行されており、利用できない場合があります(クラッシュループ、DNS の失敗、ローカル環境に未デプロイなど)。必ず最初に接続を確認してください。AlertManager がダウンしている場合は、アラートデータの取得先を VictoriaMetrics に切り替えてください。

# Fallback: firing/pending alerts from VictoriaMetrics (always available)
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_METRICS_URL/api/v1/alerts" | jq '.data.alerts[]'

AlertManager は、VM のアラートでは得られないサイレンス、抑制状態、アラートルーティングの情報を提供します。

環境

# $VM_ALERTMANAGER_URL - base URL
#   Remote: export VM_ALERTMANAGER_URL="https://alertmanager.example.com"
#   Local:  N/A (AlertManager typically not deployed locally)
# $VM_CURL_CONFIG - curl config file with auth header (set for remote, unset for local)
#   Remote: export VM_CURL_CONFIG="$HOME/.config/victoriametrics/curl.conf"
#   Local:  leave unset (defaults to /dev/null - no auth)

認証パターン

すべての curl コマンドで、curl 設定ファイルから認証情報を読み込みます。

curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s "$VM_ALERTMANAGER_URL/api/v2/alerts" | jq .

VM_CURL_CONFIG が設定されていない場合、curl は /dev/null を読み込み、認証ヘッダーを送信しません。設定されている場合は、header = "Authorization: Bearer <token>" を含む、モード 0600 の curl 設定ファイルを指定する必要があります。ファイルの内容を表示してはいけません。

主なエンドポイント

アラート一覧の取得
# All alerts (active, silenced, inhibited)
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_ALERTMANAGER_URL/api/v2/alerts" | jq .

# Only active (not silenced, not inhibited)
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_ALERTMANAGER_URL/api/v2/alerts?active=true&silenced=false&inhibited=false" | jq .

# Filter by label matcher (URL-encode the matcher)
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s -G \
  --data-urlencode 'filter=alertname="HighMemory"' \
  "$VM_ALERTMANAGER_URL/api/v2/alerts" | jq .

# Filter by receiver
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_ALERTMANAGER_URL/api/v2/alerts?receiver=slack-critical" | jq .

パラメーター:active(bool、デフォルトは true)、silenced(bool、デフォルトは true)、inhibited(bool、デフォルトは true)、unprocessed(bool、デフォルトは true)、filter(文字列配列、マッチャー式)、receiver(文字列正規表現)

サイレンス一覧の取得
# All silences
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_ALERTMANAGER_URL/api/v2/silences" | jq .

# Filter silences by matcher
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s -G \
  --data-urlencode 'filter=alertname="HighMemory"' \
  "$VM_ALERTMANAGER_URL/api/v2/silences" | jq .

パラメーター:filter(文字列配列、マッチャー式)

ID によるサイレンスの取得
# Note: singular "silence" in path (not "silences")
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_ALERTMANAGER_URL/api/v2/silence/{silenceID}" | jq .

{silenceID} を UUID に置き換えます。

サイレンスの作成
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  -X POST -H "Content-Type: application/json" \
  -d '{
    "matchers": [
      {"name": "alertname", "value": "HighMemory", "isRegex": false, "isEqual": true}
    ],
    "startsAt": "2026-03-07T00:00:00Z",
    "endsAt": "2026-03-08T00:00:00Z",
    "createdBy": "claude",
    "comment": "Maintenance window"
  }' \
  "$VM_ALERTMANAGER_URL/api/v2/silences" | jq .

{"silenceID": "uuid-here"} が返されます。マッチャーフィールド:name(ラベル名)、value(一致させる値)、isRegex(bool)、isEqual(bool — 否定一致の場合は false)。時刻は RFC3339 形式です。

サイレンスの削除(期限切れ)
# Note: singular "silence" in path
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  -X DELETE \
  "$VM_ALERTMANAGER_URL/api/v2/silence/{silenceID}"

{silenceID} を UUID に置き換えます。成功時には空の本文が返されます。

タイムスタンプ形式

すべてのタイムスタンプは RFC3339 形式です:2026-03-07T00:00:00Z

レスポンスの解析(jq)

# Count alerts by state
... | jq 'group_by(.status.state) | map({state: .[0].status.state, count: length})'

# List alert names and states
... | jq '.[] | {alertname: .labels.alertname, state: .status.state, severity: .labels.severity}'

# Active silences only (not expired)
... | jq '[.[] | select(.status.state == "active")]'

# Silence details (ID, matchers, expiry)
... | jq '.[] | {id: .id, matchers: [.matchers[] | "\(.name)=\(.value)"], endsAt: .endsAt, createdBy: .createdBy}'

よく使うパターン

# Quick connectivity check
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -sf -o /dev/null -w "%{http_code}" \
  "$VM_ALERTMANAGER_URL/api/v2/alerts" && echo " OK" || echo " UNREACHABLE"

# Count firing alerts
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  "$VM_ALERTMANAGER_URL/api/v2/alerts?active=true&silenced=false&inhibited=false" | jq 'length'

# Silence an alert for 2 hours from now
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s \
  -X POST -H "Content-Type: application/json" \
  -d "$(jq -n --arg start "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
    --arg end "$(date -u -d '+2 hours' +%Y-%m-%dT%H:%M:%SZ)" \
    '{matchers: [{name: "alertname", value: $ARGS.named.alert, isRegex: false, isEqual: true}],
      startsAt: $start, endsAt: $end, createdBy: "claude", comment: $ARGS.named.reason}' \
    --arg alert "AlertName" --arg reason "Investigation in progress")" \
  "$VM_ALERTMANAGER_URL/api/v2/silences" | jq .

# Check if a specific alert is silenced
curl -q --config "${VM_CURL_CONFIG:-/dev/null}" -s -G \
  --data-urlencode 'filter=alertname="TargetAlert"' \
  "$VM_ALERTMANAGER_URL/api/v2/alerts?active=false&silenced=true" | jq 'length'

環境の切り替え

# Check current environment
echo "VM_ALERTMANAGER_URL: $VM_ALERTMANAGER_URL"
echo "VM_CURL_CONFIG: ${VM_CURL_CONFIG:-(unset - no auth)}"

重要な注意事項

  • パスの違い:一覧表示/作成には複数形の /api/v2/silences、取得/削除には単数形の /api/v2/silence/{id} を使います
  • POST エンドポイントには Content-Type: application/json が必要です
  • DELETE は成功時(HTTP 200)に空の本文を返します
  • filter パラメーターでは PromQL 形式のマッチャーを使います:alertname="Foo"、severity=~"critical|warning"
  • AlertManager はダウンしている場合があります。必ず $VM_METRICS_URL/api/v1/alerts を使う代替手段を用意してください
  • エンドポイント、パラメーター、レスポンス形式の詳細については、references/api-reference.md を参照してください

コメント