opsgenie
Opsgenieを活用して、アラート通知の振り分けやエスカレーションポリシーの設定、オンコール体制の管理、監視ツールとの連携、インシデント対応の自動化などを実現し、効率的なアラート管理体制を構築するSkill。
📜 元の英語説明(参考)
Configure Opsgenie for alert management, on-call scheduling, routing rules, and incident response. Use when a user needs to set up alert routing, create escalation policies, manage on-call rotations, integrate with monitoring tools, or automate incident workflows with Opsgenie.
🇯🇵 日本人クリエイター向け解説
Opsgenieを活用して、アラート通知の振り分けやエスカレーションポリシーの設定、オンコール体制の管理、監視ツールとの連携、インシデント対応の自動化などを実現し、効率的なアラート管理体制を構築するSkill。
※ jpskill.com 編集部が日本のビジネス現場向けに補足した解説です。Skill本体の挙動とは独立した参考情報です。
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o opsgenie.zip https://jpskill.com/download/15215.zip && unzip -o opsgenie.zip && rm opsgenie.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/15215.zip -OutFile "$d\opsgenie.zip"; Expand-Archive "$d\opsgenie.zip" -DestinationPath $d -Force; ri "$d\opsgenie.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
opsgenie.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
opsgenieフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Opsgenie
概要
ルーティングルール、オンコールスケジュール、エスカレーションポリシー、および統合による集中アラート管理のために Opsgenie を設定します。アラート API、チーム管理、通知ポリシー、および自動化について説明します。
手順
タスク A: チームとルーティングの作成
# チームを作成する
curl -X POST "https://api.opsgenie.com/v2/teams" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Engineering",
"description": "Infrastructure and platform services team",
"members": [
{ "user": { "username": "marta@example.com" }, "role": "admin" },
{ "user": { "username": "tom@example.com" }, "role": "user" },
{ "user": { "username": "nina@example.com" }, "role": "user" }
]
}'
# チームのルーティングルールを作成する
curl -X POST "https://api.opsgenie.com/v2/teams/Platform%20Engineering/routing-rules" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Critical Production Alerts",
"order": 0,
"criteria": {
"type": "match-all-conditions",
"conditions": [
{ "field": "priority", "operation": "equals", "expectedValue": "P1" },
{ "field": "tags", "operation": "contains", "expectedValue": "production" }
]
},
"notify": {
"type": "escalation",
"name": "Platform Critical Escalation"
},
"timezone": "America/New_York"
}'
タスク B: アラートの作成
# アラートを作成する
curl -X POST "https://api.opsgenie.com/v2/alerts" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"message": "Payment Service: Error rate exceeded 5%",
"alias": "payment-service-error-rate-prod",
"description": "Error rate for payment-service in production has exceeded the 5% threshold. Current rate: 8.3%.\n\nAffected endpoints: /api/charge, /api/refund\nDashboard: https://grafana.internal/d/payments",
"responders": [
{ "name": "Platform Engineering", "type": "team" }
],
"tags": ["production", "payment", "critical"],
"priority": "P1",
"entity": "payment-service",
"source": "prometheus-alertmanager",
"details": {
"error_rate": "8.3%",
"threshold": "5%",
"runbook": "https://wiki.internal/runbooks/payment-errors"
}
}'
# アラートを承認する
curl -X POST "https://api.opsgenie.com/v2/alerts/payment-service-error-rate-prod/acknowledge?identifierType=alias" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{ "user": "marta@example.com", "note": "Investigating — checking database connections." }'
# アラートをクローズする
curl -X POST "https://api.opsgenie.com/v2/alerts/payment-service-error-rate-prod/close?identifierType=alias" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{ "user": "marta@example.com", "note": "Fixed connection pool sizing. Error rate back to normal." }'
タスク C: オンコールスケジュール
# 毎週のローテーションでオンコールスケジュールを作成する
curl -X POST "https://api.opsgenie.com/v2/schedules" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Primary On-Call",
"ownerTeam": { "name": "Platform Engineering" },
"timezone": "America/New_York",
"enabled": true,
"rotations": [
{
"name": "Weekday Rotation",
"type": "weekly",
"startDate": "2026-02-23T09:00:00Z",
"participants": [
{ "type": "user", "username": "marta@example.com" },
{ "type": "user", "username": "tom@example.com" },
{ "type": "user", "username": "nina@example.com" }
],
"timeRestriction": {
"type": "weekday-and-time-of-day",
"restrictions": [
{ "startDay": "monday", "startHour": 9, "startMin": 0, "endDay": "friday", "endHour": 18, "endMin": 0 }
]
}
}
]
}'
# 現在のオンコール参加者を取得する
curl -s "https://api.opsgenie.com/v2/schedules/Platform%20Primary%20On-Call/on-calls" \
-H "Authorization: GenieKey ${OG_API_KEY}" | \
jq '.data.onCallParticipants[] | {name: .name, type: .type}'
タスク D: エスカレーションポリシー
# エスカレーションポリシーを作成する
curl -X POST "https://api.opsgenie.com/v2/escalations" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Critical Escalation",
"ownerTeam": { "name": "Platform Engineering" },
"rules": [
{
"condition": "if-not-acked",
"notifyType": "default",
"delay": { "timeAmount": 5 },
"recipient": { "type": "schedule", "name": "Platform Primary On-Call" }
},
{
"condition": "if-not-acked",
"notifyType": "default",
"delay": { "timeAmount": 15 },
"recipient": { "type": "user", "username": "marta@example.com" }
},
{
"condition": "if-not-acked",
"notifyType": "all",
"delay": { "timeAmount": 30 },
"recipient": { "type": "team", "name": "Platform Engineering" }
}
],
"repeat": { "waitInterval": 10, "count": 3, "resetRecipientStates": true }
}'
タスク E: Prometheus Alertmanager との統合
# alertmanager.yml — Opsgenie レシーバーの設定
receivers:
- name: 'opsgenie-critical'
opsgenie_configs:
- api_key: '<OG_API_KEY>'
message: '{{ .CommonLabels.alertname }}: {{ .CommonAnnotations.summary }}'
description: '{{ .CommonAnnotations.description }}'
priority: '{{ if eq .CommonLabels.severity "critical" }}P1{{ else if eq .CommonLabels.severity "warning" }}P3{{ else }}P5{{ end }}'
tags: '{{ .CommonLabels.environment }},{{ .CommonLabels.service }}'
entity: '{{ .CommonLabels.service }}'
source: 'prometheus'
responders:
(原文がここで切り詰められています) 📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Opsgenie
Overview
Set up Opsgenie for centralized alert management with routing rules, on-call schedules, escalation policies, and integrations. Covers alert API, team management, notification policies, and automation.
Instructions
Task A: Create Teams and Routing
# Create a team
curl -X POST "https://api.opsgenie.com/v2/teams" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Engineering",
"description": "Infrastructure and platform services team",
"members": [
{ "user": { "username": "marta@example.com" }, "role": "admin" },
{ "user": { "username": "tom@example.com" }, "role": "user" },
{ "user": { "username": "nina@example.com" }, "role": "user" }
]
}'
# Create a routing rule for the team
curl -X POST "https://api.opsgenie.com/v2/teams/Platform%20Engineering/routing-rules" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Critical Production Alerts",
"order": 0,
"criteria": {
"type": "match-all-conditions",
"conditions": [
{ "field": "priority", "operation": "equals", "expectedValue": "P1" },
{ "field": "tags", "operation": "contains", "expectedValue": "production" }
]
},
"notify": {
"type": "escalation",
"name": "Platform Critical Escalation"
},
"timezone": "America/New_York"
}'
Task B: Create Alerts
# Create an alert
curl -X POST "https://api.opsgenie.com/v2/alerts" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"message": "Payment Service: Error rate exceeded 5%",
"alias": "payment-service-error-rate-prod",
"description": "Error rate for payment-service in production has exceeded the 5% threshold. Current rate: 8.3%.\n\nAffected endpoints: /api/charge, /api/refund\nDashboard: https://grafana.internal/d/payments",
"responders": [
{ "name": "Platform Engineering", "type": "team" }
],
"tags": ["production", "payment", "critical"],
"priority": "P1",
"entity": "payment-service",
"source": "prometheus-alertmanager",
"details": {
"error_rate": "8.3%",
"threshold": "5%",
"runbook": "https://wiki.internal/runbooks/payment-errors"
}
}'
# Acknowledge an alert
curl -X POST "https://api.opsgenie.com/v2/alerts/payment-service-error-rate-prod/acknowledge?identifierType=alias" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{ "user": "marta@example.com", "note": "Investigating — checking database connections." }'
# Close an alert
curl -X POST "https://api.opsgenie.com/v2/alerts/payment-service-error-rate-prod/close?identifierType=alias" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{ "user": "marta@example.com", "note": "Fixed connection pool sizing. Error rate back to normal." }'
Task C: On-Call Schedules
# Create an on-call schedule with weekly rotation
curl -X POST "https://api.opsgenie.com/v2/schedules" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Primary On-Call",
"ownerTeam": { "name": "Platform Engineering" },
"timezone": "America/New_York",
"enabled": true,
"rotations": [
{
"name": "Weekday Rotation",
"type": "weekly",
"startDate": "2026-02-23T09:00:00Z",
"participants": [
{ "type": "user", "username": "marta@example.com" },
{ "type": "user", "username": "tom@example.com" },
{ "type": "user", "username": "nina@example.com" }
],
"timeRestriction": {
"type": "weekday-and-time-of-day",
"restrictions": [
{ "startDay": "monday", "startHour": 9, "startMin": 0, "endDay": "friday", "endHour": 18, "endMin": 0 }
]
}
}
]
}'
# Get current on-call participants
curl -s "https://api.opsgenie.com/v2/schedules/Platform%20Primary%20On-Call/on-calls" \
-H "Authorization: GenieKey ${OG_API_KEY}" | \
jq '.data.onCallParticipants[] | {name: .name, type: .type}'
Task D: Escalation Policies
# Create an escalation policy
curl -X POST "https://api.opsgenie.com/v2/escalations" \
-H "Authorization: GenieKey ${OG_API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"name": "Platform Critical Escalation",
"ownerTeam": { "name": "Platform Engineering" },
"rules": [
{
"condition": "if-not-acked",
"notifyType": "default",
"delay": { "timeAmount": 5 },
"recipient": { "type": "schedule", "name": "Platform Primary On-Call" }
},
{
"condition": "if-not-acked",
"notifyType": "default",
"delay": { "timeAmount": 15 },
"recipient": { "type": "user", "username": "marta@example.com" }
},
{
"condition": "if-not-acked",
"notifyType": "all",
"delay": { "timeAmount": 30 },
"recipient": { "type": "team", "name": "Platform Engineering" }
}
],
"repeat": { "waitInterval": 10, "count": 3, "resetRecipientStates": true }
}'
Task E: Integration with Prometheus Alertmanager
# alertmanager.yml — Opsgenie receiver configuration
receivers:
- name: 'opsgenie-critical'
opsgenie_configs:
- api_key: '<OG_API_KEY>'
message: '{{ .CommonLabels.alertname }}: {{ .CommonAnnotations.summary }}'
description: '{{ .CommonAnnotations.description }}'
priority: '{{ if eq .CommonLabels.severity "critical" }}P1{{ else if eq .CommonLabels.severity "warning" }}P3{{ else }}P5{{ end }}'
tags: '{{ .CommonLabels.environment }},{{ .CommonLabels.service }}'
entity: '{{ .CommonLabels.service }}'
source: 'prometheus'
responders:
- name: 'Platform Engineering'
type: 'team'
details:
alertname: '{{ .CommonLabels.alertname }}'
cluster: '{{ .CommonLabels.cluster }}'
Best Practices
- Use alert aliases for deduplication so the same issue doesn't create multiple alerts
- Configure notification policies per user — allow P1 alerts to phone at night, P3 only during work hours
- Use routing rules to direct alerts to the correct team based on tags and priority
- Set escalation timeouts based on SLA requirements — shorter for P1, longer for P3
- Add runbook URLs and dashboard links in alert details for faster resolution
- Use heartbeat monitoring to detect when integrations stop sending alerts