MCP HubMCP Hub
스킬 목록으로 돌아가기

configure-alerting-rules

pjt222
업데이트됨 Yesterday
4 조회
17
2
17
GitHub에서 보기
커뮤니케이션general

정보

이 스킬은 실행 가능한 인시던트 알림을 위해 Prometheus Alertmanager를 설정합니다. 여기에는 라우팅 트리, 수신자(Slack, PagerDuty, 이메일) 및 알림 템플릿이 포함됩니다. 심각도에 따라 적절한 팀에 알림을 라우팅하고, 그룹화 및 중복 제거를 통해 알림 피로도를 줄여 사전 예방적 모니터링을 구현하는 데 도움이 됩니다. 온콜 시스템과 통합하거나 레거시 알림에서 Prometheus 기반 알림으로 마이그레이션할 때 사용하세요.

빠른 설치

Claude Code

추천
기본
npx skills add pjt222/agent-almanac -a claude-code
플러그인 명령대체
/plugin add https://github.com/pjt222/agent-almanac
Git 클론대체
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/configure-alerting-rules

Claude Code에서 이 명령을 복사하여 붙여넣어 스킬을 설치하세요

문서


name: configure-alerting-rules description: > アクション可能なインシデントアラートのために、ルーティングツリー、レシーバー (Slack、PagerDuty、メール)、インヒビションルール、サイレンス、通知テンプレートを 含むPrometheus Alertmanagerを設定する。自動インシデント検出のプロアクティブな モニタリングを実装する場合、重大度に基づいて適切なチームにアラートをルーティングする場合、 グルーピングと重複排除によるアラート疲れを軽減する場合、PagerDutyなどのオンコール システムと統合する場合、またはレガシーアラートからPrometheusベースのアラートに 移行する場合に使用する。 locale: ja source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: observability complexity: intermediate language: multi tags: alertmanager, alerting, routing, pagerduty, slack

アラートルールの設定

信頼性が高くアクション可能なインシデント通知のために、Prometheusのアラートルールと Alertmanagerをセットアップする。

完全な設定ファイルとテンプレートは拡張例を参照。

使用タイミング

  • 自動インシデント検出のプロアクティブなモニタリングを実装する場合
  • 重大度とサービスオーナーシップに基づいて適切なチームにアラートをルーティングする場合
  • インテリジェントなグルーピングと重複排除によるアラート疲れを軽減する場合
  • モニタリングをオンコールシステム(PagerDuty、Opsgenie)と統合する場合
  • 重大な本番問題のためのエスカレーションポリシーを確立する場合
  • レガシーモニタリングシステムからPrometheusベースのアラートに移行する場合
  • 対応者を解決策に導くアクション可能なアラートを作成する場合

入力

  • 必須: アラート対象のPrometheusメトリクス(エラーレート、レイテンシ、飽和度)
  • 必須: オンコールローテーションとエスカレーションポリシー
  • 任意: 移行する既存のアラート定義
  • 任意: 通知チャンネル(Slack、メール、PagerDuty)
  • 任意: 一般的なアラートのためのランブックドキュメント

手順

ステップ1: Alertmanagerのデプロイ

AlertmanagerをインストールしてPrometheusからアラートを受信するよう設定する。

Docker Composeデプロイ(基本構造):

version: '3.8'
services:
  alertmanager:
    image: prom/alertmanager:v0.26.0
    ports:
      - "9093:9093"
    volumes:
      - ./alertmanager.yml:/etc/alertmanager/alertmanager.yml
    # ... (完全な設定はEXAMPLES.mdを参照)

基本的なAlertmanager設定alertmanager.ymlの抜粋):

global:
  resolve_timeout: 5m
  slack_api_url: 'https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK'

route:
  receiver: 'default-receiver'
  group_by: ['alertname', 'cluster', 'service']
  group_wait: 30s
  group_interval: 5m
  repeat_interval: 4h

  routes:
    - match:
        severity: critical
      receiver: pagerduty-critical

# ... (完全なルーティング、インヒビションルール、レシーバーはEXAMPLES.mdを参照)

AlertmanagerをPrometheusに設定prometheus.yml):

alerting:
  alertmanagers:
    - static_configs:
        - targets:
            - alertmanager:9093
      timeout: 10s
      api_version: v2

期待結果: AlertmanagerのUIがhttp://localhost:9093でアクセス可能で、Prometheusの「Status > Alertmanagers」がUPステータスを表示する。

失敗時:

  • Alertmanagerのログを確認する: docker logs alertmanager
  • PrometheusがAlertmanagerに到達できることを確認する: curl http://alertmanager:9093/api/v2/status
  • WebhookのURLをテストする: curl -X POST <SLACK_WEBHOOK_URL> -d '{"text":"test"}'
  • YAML構文を検証する: amtool check-config alertmanager.yml

ステップ2: Prometheusでアラートルールを定義する

条件が満たされたときに発火するアラートルールを作成する。

アラートルールファイルを作成/etc/prometheus/rules/alerts.ymlの抜粋):

groups:
  - name: instance_alerts
    interval: 30s
    rules:
      - alert: InstanceDown
        expr: up == 0
        for: 5m
        labels:
          severity: critical
          team: infrastructure
        annotations:
          summary: "Instance {{ $labels.instance }} is down"
          description: "{{ $labels.instance }} has been down for >5min."
          runbook_url: "https://wiki.example.com/runbooks/instance-down"

      - alert: HighCPUUsage
        expr: 100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 10m
        labels:
          severity: warning
        annotations:
          summary: "High CPU usage on {{ $labels.instance }}"
          # ... (完全なアラートはEXAMPLES.mdを参照)

アラート設計のベストプラクティス

  • forの時間: フラッピングアラートを防ぐ。ほとんどのアラートには5〜10分を使用する。
  • 説明的なアノテーション: 現在の値、影響を受けるリソース、ランブックリンクを含める。
  • 重大度レベル: critical(オンコールをページング)、warning(調査)、info(FYI)
  • チームラベル: 正しいチーム/チャンネルへのルーティングを可能にする
  • ランブックリンク: すべてのアラートにランブックのURLが必要

ルールをPrometheusに読み込む:

# prometheus.yml
rule_files:
  - "rules/*.yml"

検証とリロード:

promtool check rules /etc/prometheus/rules/alerts.yml
curl -X POST http://localhost:9090/-/reload

期待結果: アラートがPrometheusの「Alerts」ページに表示され、しきい値を超えたときにアラートが発火し、Alertmanagerが発火したアラートを受信する。

失敗時:

  • ルール評価エラーのためにPrometheusのログを確認する
  • promtool check rulesでルール構文を確認する
  • PrometheusのUIでアラートクエリを独立してテストする
  • アラートの状態遷移を確認する:Inactive → Pending → Firing

ステップ3: 通知テンプレートを作成する

読みやすくアクション可能な通知メッセージを設計する。

テンプレートファイルを作成/etc/alertmanager/templates/default.tmplの抜粋):

{{ define "slack.default.title" }}
[{{ .Status | toUpper }}] {{ .GroupLabels.alertname }}
{{ end }}

{{ define "slack.default.text" }}
{{ range .Alerts }}
*Alert:* {{ .Labels.alertname }}
*Severity:* {{ .Labels.severity }}
*Summary:* {{ .Annotations.summary }}
{{ if .Annotations.runbook_url }}*Runbook:* {{ .Annotations.runbook_url }}{{ end }}
{{ end }}
{{ end }}

# ... (完全なメールとPagerDutyのテンプレートはEXAMPLES.mdを参照)

レシーバーでテンプレートを使用

receivers:
  - name: 'slack-custom'
    slack_configs:
      - channel: '#alerts'
        title: '{{ template "slack.default.title" . }}'
        text: '{{ template "slack.default.text" . }}'

期待結果: 通知が一貫してフォーマットされ、すべての関連コンテキストを含み、ランブックリンクによりアクション可能。

失敗時:

  • テンプレートのレンダリングをテストする: amtool template test --config.file=alertmanager.yml
  • Alertmanagerのログのテンプレート構文エラーを確認する
  • テンプレートのデータ構造をデバッグするために{{ . | json }}を使用する

ステップ4: ルーティングとグルーピングの設定

インテリジェントなルーティングルールでアラートの配信を最適化する。

高度なルーティング設定(抜粋):

route:
  receiver: 'default-receiver'
  group_by: ['alertname', 'cluster', 'service']
  group_wait: 30s

  routes:
    - match:
        team: platform
      receiver: 'team-platform'
      routes:
        - match:
            severity: critical
          receiver: 'pagerduty-platform'
          group_wait: 10s
          repeat_interval: 15m
          continue: true   # Also send to Slack

# ... (時間間隔付きの完全なルーティングはEXAMPLES.mdを参照)

グルーピング戦略

# Group by alertname: All HighCPU alerts bundled together
group_by: ['alertname']

# Group by alertname AND cluster: Separate notifications per cluster
group_by: ['alertname', 'cluster']

期待結果: アラートが正しいチームにルーティングされ、論理的にグループ化され、重大度に適切なタイミング。

失敗時:

  • ルーティングをテストする: amtool config routes test --config.file=alertmanager.yml --alertname=HighCPU --label=severity=critical
  • ルーティングツリーを確認する: amtool config routes show --config.file=alertmanager.yml
  • アラートが複数のルートにマッチすべき場合はcontinue: trueを確認する

ステップ5: インヒビションとサイレンシングの実装

インヒビションルールと一時的なサイレンスでアラートノイズを削減する。

インヒビションルール(依存アラートを抑制):

inhibit_rules:
  # Cluster down suppresses all node alerts in that cluster
  - source_match:
      alertname: 'ClusterDown'
      severity: 'critical'
    target_match_re:
      alertname: '(InstanceDown|HighCPU|HighMemory)'
    equal: ['cluster']

  # Service down suppresses latency and error alerts
  - source_match:
      alertname: 'ServiceDown'
    target_match_re:
      alertname: '(HighLatency|HighErrorRate)'
    equal: ['service', 'namespace']

# ... (その他のインヒビションパターンはEXAMPLES.mdを参照)

サイレンスをプログラムで作成

# Silence during maintenance
amtool silence add \
  instance=app-server-1 \
  --author="ops-team" \
  --comment="Scheduled maintenance" \
  --duration=2h

# List and manage silences
amtool silence query
amtool silence expire <SILENCE_ID>

期待結果: インヒビションがカスケードアラートを自動的に削減し、計画メンテナンス中はサイレンスが通知を防ぐ。

失敗時:

  • ライブアラートでインヒビションロジックをテストする
  • AlertmanagerのUIの「Silences」タブを確認する
  • サイレンスマッチャーが正確であることを確認する(ラベルは完全に一致しなければならない)

ステップ6: 外部システムとの統合

AlertmanagerをPagerDuty、Opsgenie、Jiraなどに接続する。

PagerDuty統合(抜粋):

receivers:
  - name: 'pagerduty'
    pagerduty_configs:
      - routing_key: 'YOUR_INTEGRATION_KEY'
        severity: '{{ .CommonLabels.severity }}'
        description: '{{ range .Alerts.Firing }}{{ .Annotations.summary }}{{ end }}'
        details:
          firing: '{{ .Alerts.Firing | len }}'
          alertname: '{{ .GroupLabels.alertname }}'
        # ... (完全な統合例はEXAMPLES.mdを参照)

カスタム統合のためのWebhook

receivers:
  - name: 'webhook-custom'
    webhook_configs:
      - url: 'https://your-webhook-endpoint.com/alerts'
        send_resolved: true

期待結果: アラートがPagerDutyでインシデントを作成し、チームのコミュニケーションチャンネルに表示され、オンコールのエスカレーションをトリガーする。

失敗時:

  • APIキー/トークンが有効であることを確認する
  • 外部サービスへのネットワーク接続を確認する
  • curlでWebhookエンドポイントを独立してテストする
  • デバッグモードを有効にする: --log.level=debug

バリデーション

  • AlertmanagerがPrometheusからアラートを正常に受信する
  • アラートがラベルと重大度に基づいて正しいチームにルーティングされる
  • Slack、メール、またはPagerDutyに通知が配信される
  • アラートのグルーピングが通知量を適切に削減する
  • インヒビションルールが依存アラートを正しく抑制する
  • サイレンスがメンテナンスウィンドウ中に通知を防ぐ
  • 通知テンプレートにランブックリンクとコンテキストが含まれている
  • 繰り返し間隔が長時間続く問題のアラート疲れを防ぐ
  • アラートが解消されたときに解決通知が送信される
  • 外部統合(PagerDuty、Opsgenie)がインシデントを作成する

よくある落とし穴

  • アラート疲れ: 優先度の低いアラートが多すぎると、対応者が重要なアラートを無視するようになる。厳格なしきい値を設定し、インヒビションを使用する。
  • forの時間がない: forなしのアラートは一時的なスパイクで発火する。常に5〜10分のウィンドウを使用する。
  • 過度に広いグルーピング: ['...']によるグルーピングは個別の通知を送信する。特定のラベルグルーピングを使用する。
  • ランブックリンクなし: ランブックのないアラートは対応者を推測に任せる。すべてのアラートにランブックのURLが必要。
  • 不正な重大度: 警告をcriticalとして誤ってラベル付けするとチームの感覚が鈍くなる。criticalは緊急事態のために予約する。
  • 忘れられたサイレンス: 期限のないサイレンスは本物の問題を隠す可能性がある。常に終了時間を設定する。
  • 単一ルート: すべてのアラートを1つのチャンネルに送るとコンテキストが失われる。チーム固有のルーティングを使用する。
  • インヒビションなし: 停止中のカスケードアラートがノイズを生む。インヒビションルールを実装する。

関連スキル

  • setup-prometheus-monitoring - アラートルールにフィードするメトリクスと記録ルールを定義する
  • define-slo-sli-sla - エラーバジェット管理のためにSLOバーンレートアラートを生成する
  • write-incident-runbook - アラートアノテーションからリンクされるランブックを作成する
  • build-grafana-dashboards - アラート発火履歴とサイレンスパターンを可視化する

GitHub 저장소

pjt222/agent-almanac
경로: i18n/ja/skills/configure-alerting-rules
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

연관 스킬

himalaya-email-manager

커뮤니케이션

이 Claude Skill은 IMAP을 통해 Himalaya CLI 도구를 이용한 이메일 관리를 가능하게 합니다. 개발자들이 자연어 쿼리로 IMAP 계정의 이메일을 검색하고, 요약하고, 삭제할 수 있게 해줍니다. 일일 요약 수신이나 Claude에서 직접 배치 작업 수행과 같은 자동화된 이메일 워크플로우에 활용하세요.

스킬 보기

imsg

커뮤니케이션

imsg는 macOS용 CLI 도구로, Messages.app을 통해 iMessage/SMS와 프로그래밍 방식으로 상호작용할 수 있게 해줍니다. 이 도구를 사용하면 개발자가 채팅 목록을 확인하고, 메시지 기록을 조회하며, 대화를 실시간으로 모니터링하고, 메시지나 첨부 파일을 보낼 수 있습니다. 이 스킬을 활용하여 메시징 작업을 자동화하거나 개발 워크플로우에 iMessage/SMS 기능을 통합해 보세요.

스킬 보기

internationalization-i18n

커뮤니케이션

이 Claude Skill은 애플리케이션에 국제화(i18n)와 현지화를 구현하기 위한 포괄적인 지침을 제공합니다. i18next 및 gettext와 같은 라이브러리를 활용하여 메시지 추출, 번역 관리, 로케일별 형식 지정, RTL(오른쪽에서 왼쪽) 지원 등 주요 작업을 다룹니다. 다국어 애플리케이션을 구축하거나 국제 사용자를 위한 현지화 기능을 추가할 때 활용하세요.

스킬 보기

wacli

커뮤니케이션

wacli는 WhatsApp Web 프로토콜을 통해 WhatsApp 메시징, 검색 및 동기화를 가능하게 하는 명령줄 도구입니다. 주로 Clawdis 워크플로우 내에서 자동화 처리를 위해 사용되지만, 메시지 전송, 채팅 동기화 또는 기록 조회를 위해 직접 호출할 수도 있습니다. 주요 기능으로는 QR 기반 인증, 지속적인 백그라운드 동기화, 텍스트 및 파일 전송 기능이 포함됩니다.

스킬 보기