alertmanager-query について
alertmanager-queryは、curlでPrometheus互換のAlertManager HTTP API v2を操作するスキルです。運用担当者向けに、アラートの確認とサイレンス管理を支援し、接続確認やVictoriaMetricsへのフォールバックも扱います。
主な機能
- 01アラートの一覧表示と絞り込み
- 02アラート状態の確認
- 03サイレンスの一覧表示と取得
- 04サイレンスの作成と削除
- 05接続確認とフォールバック案内
活用シーン
- 01発火中・サイレンス中・抑制中のアラート確認
- 02メンテナンス中のサイレンス作成や解除
- 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を参照してください