configure-alerting-rules
정보
이 스킬은 실행 가능한 인시던트 알림을 위해 Prometheus Alertmanager를 설정합니다. 여기에는 라우팅 트리, 수신자(Slack, PagerDuty, 이메일) 및 알림 템플릿이 포함됩니다. 심각도에 따라 적절한 팀에 알림을 라우팅하고, 그룹화 및 중복 제거를 통해 알림 피로도를 줄여 사전 예방적 모니터링을 구현하는 데 도움이 됩니다. 온콜 시스템과 통합하거나 레거시 알림에서 Prometheus 기반 알림으로 마이그레이션할 때 사용하세요.
빠른 설치
Claude Code
추천npx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/configure-alerting-rulesClaude 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 저장소
연관 스킬
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 기반 인증, 지속적인 백그라운드 동기화, 텍스트 및 파일 전송 기능이 포함됩니다.
