mcpField
A
alerting-irm

alerting-irm

github.com/grafanaクラウド・DevOps2955.2k 回インストール1 日前に更新
リポジトリ

alerting-irm について

alerting-irmは、Grafana AlertingとIRMの運用スキルで、アラートルール、通知ルーティング、サイレンス、SLOを扱います。通知とオンコールのワークフローを管理するチーム向けに、ルーティングや連携の検証手順を示します。

主な機能

  1. 01コンタクトポイントとアラートルールの設定
  2. 02ラベルマッチャーによる通知ルーティング
  3. 03条件に一致するアラートのサイレンス設定
  4. 04Grafana AlertingとIRMの接続
  5. 05SLOバーンレートアラートの定義と検証

活用シーン

  1. 01アラート通知を一連の流れで設定
  2. 02指定した重大度をオンコールへルーティング
  3. 03メンテナンス中の通知抑制
  4. 04Grafana AlertingとIRMの連携検証

インストール

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

$npx skills add https://github.com/grafana/skills --skill alerting-irm

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
alerting.md
irm.md
slo.md

詳細

Grafana Alerting & IRM

ドキュメント:https://grafana.com/docs/grafana/latest/alerting.md

よくあるワークフロー

新しいアラートを最初から最後までプロビジョニングする
  1. コンタクトポイントを作成します(通知の送信先):

    curl -X POST https://grafana.example.com/api/v1/provisioning/contact-points \
      -H 'Authorization: Bearer <token>' -H 'Content-Type: application/json' \
      -d @contact-points.json
    

    確認します:

    curl https://grafana.example.com/api/v1/provisioning/contact-points \
      -H 'Authorization: Bearer <token>' | jq '.[].name'
    
  2. 通知ポリシーを追加します(各アラートの送信先を指定します)。マッチャーパターンについては、以下の§ 通知ポリシーを参照してください。

  3. アラートルールを作成します。種類を選択してください:

  4. 運用を開始する前に、ルーティングを確認します:

    # Force-fire a test alert from the rule's UI, then check Alertmanager's view
    curl https://grafana.example.com/api/alertmanager/grafana/api/v2/alerts \
      -H 'Authorization: Bearer <token>' | jq '.[] | {alertname: .labels.alertname, receiver: .receivers}'
    

    想定したレシーバーが表示されるはずです。別のレシーバーが表示された場合は、ポリシーのマッチャーを再確認してください。

アラートを IRM/オンコールにルーティングする
  1. IRM で「Grafana Alerting webhook」タイプのインテグレーションを作成し、インテグレーション URL をコピーします
  2. Grafana Alerting で、その URL を指定する webhook コンタクトポイントを追加します(完全な YAML はreferences/irm.md § Routingを参照してください)
  3. 適切な重大度を新しいコンタクトポイントにルーティングする通知ポリシーマッチャーを追加します
  4. 確認します:テストアラートを発生させます。約30秒以内に IRM に表示されるはずです。デバッグ手順の詳細はreferences/irm.md § Verifying the IRM integrationを参照してください。
SLO を定義する
  1. UI または API で SLO を作成します → Grafana が記録ルール、ダッシュボード、バーンレートアラートを自動生成します(生成された YAML はreferences/slo.mdにあります)
  2. 単一ウィンドウではなく、複数ウィンドウのバーンレートアラートを使用します。単一ウィンドウではノイズで発火する理由については、references/slo.md § Multi-window burn-rate alertsを参照してください
  3. references/slo.md § Validating SLO configの4ステップの手順で確認します

コンタクトポイント(YAML プロビジョニング)

# provisioning/alerting/contact_points.yaml
apiVersion: 1
contactPoints:
  - orgId: 1
    name: pagerduty-critical
    receivers:
      - uid: pd-receiver
        type: pagerduty
        settings:
          integrationKey: YOUR_PAGERDUTY_KEY
          severity: critical

  - orgId: 1
    name: slack-alerts
    receivers:
      - uid: slack-receiver
        type: slack
        settings:
          url: https://hooks.slack.com/services/YOUR/WEBHOOK/URL
          channel: '#alerts'

メール、webhook、Teams、Telegram、OnCall、その他のレシーバータイプについては、references/alerting.md § Contact point receiver typesを参照してください。

通知ポリシー

ラベルマッチャーを使用する階層型ルーティングツリー:

# provisioning/alerting/notification_policies.yaml
apiVersion: 1
policies:
  - orgId: 1
    receiver: default-receiver
    group_by: ['alertname', 'cluster', 'service']
    group_wait: 30s
    group_interval: 5m
    repeat_interval: 12h
    routes:
      # Critical alerts → PagerDuty
      - receiver: pagerduty-critical
        matchers:
          - severity = critical
        group_wait: 10s
        repeat_interval: 4h

      # Platform team → Slack, but page on critical
      - receiver: slack-alerts
        matchers:
          - team = platform
        routes:
          - receiver: pagerduty-critical
            matchers:
              - severity = critical

      # Everything else → email
      - receiver: email-alerts
        matchers:
          - severity =~ "warning|info"

サイレンス

評価を停止せずに、一致するアラートの通知を抑制します:

curl -X POST https://grafana.example.com/api/alertmanager/grafana/api/v2/silences \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "matchers": [
      {"name": "alertname", "value": "HighErrorRate", "isRegex": false},
      {"name": "env", "value": "staging", "isRegex": false}
    ],
    "startsAt": "2024-01-01T00:00:00Z",
    "endsAt": "2024-01-01T02:00:00Z",
    "comment": "Maintenance window",
    "createdBy": "admin"
  }'

# Verify it was created
curl https://grafana.example.com/api/alertmanager/grafana/api/v2/silences \
  -H 'Authorization: Bearer <token>' | jq '.[] | select(.status.state == "active")'

アラートルールの状態

状態説明
Normal条件を満たしていません
Pending条件を満たしており、for の期間が経過するのを待っています
Firingfor の期間全体にわたって条件を満たしています
NoDataクエリがデータを返しませんでした
Errorクエリ/評価エラー
Recovering発火状態でしたが、条件を満たさなくなりました

プロビジョニングディレクトリのレイアウト

provisioning/alerting/
├── alert_rules.yaml          # Alert and recording rules
├── contact_points.yaml       # Notification destinations
├── notification_policies.yaml  # Routing tree
├── templates.yaml            # Message templates
└── mute_timings.yaml         # Recurring mute windows

API プロビジョニング(UI での編集を維持)

API でプロビジョニングした後も UI でリソースを編集できるようにするには、X-Disable-Provenance: true を追加します:

curl -X PUT https://grafana.example.com/api/v1/provisioning/policies \
  -H 'Authorization: Bearer <token>' \
  -H 'X-Disable-Provenance: true' \
  -H 'Content-Type: application/json' \
  -d @policy.json

curl -X POST https://grafana.example.com/api/v1/provisioning/alert-rules \
  -H 'Authorization: Bearer <token>' \
  -H 'X-Disable-Provenance: true' \
  -H 'Content-Type: application/json' \
  -d @rule.json

参考資料

  • references/alerting.md — アラートルール YAML の全容(Grafana 管理/Prometheus/Loki)+通知テンプレート
  • references/slo.md — 生成される SLO 記録ルール+複数ウィンドウのバーンレートアラートパターン+検証手順
  • references/irm.md — IRM の機能、インテグレーションソース、Alerting → IRM のルーティング+検証+よくある失敗の原因

コメント