mcpField
P
pagerduty-automation

pagerduty-automation

github.com/davepoonクラウド・DevOps3.7k120 回インストール1 日前に更新
リポジトリ

pagerduty-automation について

Rube MCP と Composio のツールキットを使って PagerDuty 運用を自動化するスキルです。インシデント、サービス、オンコール、エスカレーションを扱います。

主な機能

  1. 01インシデントの作成と更新
  2. 02アラートと分析の確認
  3. 03サービス設定の管理
  4. 04オンコール予定の確認と調整
  5. 05エスカレーションポリシーとチームの管理

活用シーン

  1. 01発生したインシデントの確認と解決
  2. 02アラートと対応指標の確認
  3. 03現在のオンコール担当者の確認
  4. 04サービスのエスカレーション手順の調整

MCP 対応

Rube MCP 経由で Composio の PagerDuty ツールキットを利用します。Rube MCP への接続と PagerDuty の認証が必要です。

インストール

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

$npx skills add https://github.com/davepoon/buildwithclaude --skill pagerduty-automation

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

詳細

Rube MCP による PagerDuty の自動化

Rube MCP を介して、Composio の PagerDuty ツールキットを使用し、PagerDuty のインシデント管理と運用を自動化します。

ツールキットのドキュメント:composio.dev/toolkits/pagerduty

前提条件

  • Rube MCP が接続されていること(RUBE_SEARCH_TOOLS が利用可能)
  • pagerduty ツールキットを指定した RUBE_MANAGE_CONNECTIONS による有効な PagerDuty 接続
  • 現在のツールスキーマを取得するため、必ず最初に RUBE_SEARCH_TOOLS を呼び出してください

セットアップ

Rube MCP を取得する:クライアント設定で https://rube.app/mcp を MCP サーバーとして追加します。API キーは不要です。エンドポイントを追加するだけで動作します。

  1. RUBE_SEARCH_TOOLS が応答することを確認し、Rube MCP が利用可能であることを検証します
  2. ツールキットに pagerduty を指定して RUBE_MANAGE_CONNECTIONS を呼び出します
  3. 接続が ACTIVE でない場合は、返された認証リンクに従って PagerDuty の認証を完了します
  4. ワークフローを実行する前に、接続ステータスが ACTIVE であることを確認します

主なワークフロー

1. インシデントの管理

使用する場面:ユーザーがインシデントの作成、更新、確認応答、または解決を希望する場合

ツールの呼び出し順序:

  1. PAGERDUTY_FETCH_INCIDENT_LIST - フィルターを指定してインシデントを一覧表示します[必須]
  2. PAGERDUTY_RETRIEVE_INCIDENT_BY_INCIDENT_ID - 特定のインシデントの詳細を取得します[任意]
  3. PAGERDUTY_CREATE_INCIDENT_RECORD - 新しいインシデントを作成します[任意]
  4. PAGERDUTY_UPDATE_INCIDENT_BY_ID - インシデントのステータスまたは割り当てを更新します[任意]
  5. PAGERDUTY_POST_INCIDENT_NOTE_USING_ID - インシデントにメモを追加します[任意]
  6. PAGERDUTY_SNOOZE_INCIDENT_BY_DURATION - 指定した時間、インシデントをスヌーズします[任意]

主なパラメーター:

  • statuses[]:ステータスで絞り込みます('triggered'、'acknowledged'、'resolved')
  • service_ids[]:サービス ID で絞り込みます
  • urgencies[]:緊急度で絞り込みます('high'、'low')
  • title:インシデントのタイトル(作成時)
  • service:id と type を含むサービスオブジェクト(作成時)
  • status:更新操作で設定する新しいステータス

注意点:

  • インシデントの作成には、id と type: 'service_reference' の両方を含む service オブジェクトが必要です
  • ステータスは次の順に遷移します:triggered -> acknowledged -> resolved
  • resolved から triggered に直接遷移することはできません
  • PAGERDUTY_UPDATE_INCIDENT_BY_ID では、パスパラメーターとしてインシデント ID が必要です
  • スヌーズ時間の単位は秒です。スヌーズ時間が経過すると、インシデントが再トリガーされます
2. インシデントのアラートと分析を確認する

使用する場面:ユーザーがインシデント内のアラートを確認したい場合、またはインシデントの指標を分析したい場合

ツールの呼び出し順序:

  1. PAGERDUTY_GET_ALERTS_BY_INCIDENT_ID - インシデントのアラートを一覧表示します[必須]
  2. PAGERDUTY_GET_INCIDENT_ALERT_DETAILS - 特定のアラートの詳細を取得します[任意]
  3. PAGERDUTY_FETCH_INCIDENT_ANALYTICS_BY_ID - インシデントの分析データ/指標を取得します[任意]

主なパラメーター:

  • incident_id:インシデント ID
  • alert_id:インシデント内の特定のアラート ID
  • statuses[]:ステータスでアラートを絞り込みます

注意点:

  • 1 つのインシデントに複数のアラートが含まれることがあり、各アラートはそれぞれ独自のステータスを持ちます
  • アラート ID はインシデントごとにスコープが設定されています
  • 分析データには、応答時間、エンゲージメント指標、解決時間が含まれます
3. サービスを管理する

使用するタイミング:ユーザーがサービスの作成、更新、一覧表示を希望している場合

ツールの順序:

  1. PAGERDUTY_RETRIEVE_LIST_OF_SERVICES - すべてのサービスを一覧表示します[必須]
  2. PAGERDUTY_RETRIEVE_SERVICE_BY_ID - サービスの詳細を取得します[任意]
  3. PAGERDUTY_CREATE_NEW_SERVICE - 新しいテクニカルサービスを作成します[任意]
  4. PAGERDUTY_UPDATE_SERVICE_BY_ID - サービスの設定を更新します[任意]
  5. PAGERDUTY_CREATE_INTEGRATION_FOR_SERVICE - サービスにインテグレーションを追加します[任意]
  6. PAGERDUTY_CREATE_BUSINESS_SERVICE - ビジネスサービスを作成します[任意]
  7. PAGERDUTY_UPDATE_BUSINESS_SERVICE_BY_ID - ビジネスサービスを更新します[任意]

主なパラメーター:

  • name:サービス名
  • escalation_policy:id と type を含むエスカレーションポリシーオブジェクト
  • alert_creation:アラート作成モード('create_alerts_and_incidents' または 'create_incidents')
  • status:サービスのステータス('active'、'warning'、'critical'、'maintenance'、'disabled')

注意点:

  • サービスの作成には、既存のエスカレーションポリシーが必要です
  • ビジネスサービスはテクニカルサービスとは異なり、ビジネスレベルのグループを表します
  • サービスインテグレーションは、アラートの作成方法(メール、API、イベント)を定義します
  • サービスを無効にすると、そのサービスのインシデント作成がすべて停止します
4. スケジュールとオンコールを管理する

使用するタイミング:ユーザーがオンコールのスケジュールやローテーションの表示または管理を希望している場合

ツールの順序:

  1. PAGERDUTY_GET_SCHEDULES - すべてのスケジュールを一覧表示します[必須]
  2. PAGERDUTY_RETRIEVE_SCHEDULE_BY_ID - 特定のスケジュールの詳細を取得します[任意]
  3. PAGERDUTY_CREATE_NEW_SCHEDULE_LAYER - 新しいスケジュールを作成します[任意]
  4. PAGERDUTY_UPDATE_SCHEDULE_BY_ID - 既存のスケジュールを更新します[任意]
  5. PAGERDUTY_RETRIEVE_ONCALL_LIST - 現在オンコール中の担当者を表示します[任意]
  6. PAGERDUTY_CREATE_SCHEDULE_OVERRIDES_CONFIGURATION - 一時的なオーバーライドを作成します[任意]
  7. PAGERDUTY_DELETE_SCHEDULE_OVERRIDE_BY_ID - オーバーライドを削除します[任意]
  8. PAGERDUTY_RETRIEVE_USERS_BY_SCHEDULE_ID - スケジュールに含まれるユーザーを一覧表示します[任意]
  9. PAGERDUTY_PREVIEW_SCHEDULE_OBJECT - 保存前にスケジュールの変更をプレビューします[任意]

主なパラメーター:

  • schedule_id:スケジュール識別子
  • time_zone:スケジュールのタイムゾーン(例:'America/New_York')
  • schedule_layers:ローテーションレイヤー設定の配列
  • since/until:オンコールのクエリ対象期間(ISO 8601)
  • override:ユーザー、開始時刻、終了時刻を含むオーバーライドオブジェクト

注意点:

  • スケジュールレイヤーはローテーションの順序を定義します。複数のレイヤーが重なることもあります
  • オーバーライドは一時的なもので、通常のスケジュールより優先されます
  • オンコールのクエリでは、対象期間を指定するために since と until が必要です
  • タイムゾーンには、有効なIANAタイムゾーン文字列を指定する必要があります
  • 複雑なスケジュール変更は、正しく設定されていることを確認するため、保存前にプレビューしてください
5. エスカレーションポリシーを管理する

使用するタイミング:ユーザーがエスカレーションポリシーの作成または変更を希望している場合

ツールの順序:

  1. PAGERDUTY_FETCH_ESCALATION_POLICES_LIST - すべてのエスカレーションポリシーを一覧表示します[必須]
  2. PAGERDUTY_GET_ESCALATION_POLICY_BY_ID - ポリシーの詳細を取得します[任意]
  3. PAGERDUTY_CREATE_ESCALATION_POLICY - 新しいポリシーを作成します[任意]
  4. PAGERDUTY_UPDATE_ESCALATION_POLICY_BY_ID - 既存のポリシーを更新します[任意]
  5. PAGERDUTY_AUDIT_ESCALATION_POLICY_RECORDS - ポリシーの監査履歴を表示します[任意]

主なパラメーター:

  • name:ポリシー名
  • escalation_rules:エスカレーションルールオブジェクトの配列
  • num_loops:停止するまでにルールを繰り返す回数(0 = ループなし)
  • escalation_delay_in_minutes:エスカレーションレベル間の遅延時間

注意点:

  • 各エスカレーションルールには、少なくとも1つのターゲット(ユーザー、スケジュール、またはチーム)が必要です
  • escalation_delay_in_minutes は、次のレベルにエスカレーションするまでの時間を定義します
  • num_loops を0に設定すると、ポリシーは1回実行されて停止します
  • サービスが引き続き参照しているポリシーは削除できません
6. チームを管理する

使用する場面:ユーザーがPagerDutyのチームを作成または管理したい場合

ツールの順序:

  1. PAGERDUTY_CREATE_NEW_TEAM_WITH_DETAILS - 新しいチームを作成します[必須]

主なパラメーター:

  • name:チーム名
  • description:チームの説明

注意点:

  • チーム名はアカウント内で一意である必要があります
  • チームはサービス、エスカレーションポリシー、スケジュールの範囲指定に使用されます

よくあるパターン

IDの解決

サービス名 -> サービスID:

1. Call PAGERDUTY_RETRIEVE_LIST_OF_SERVICES
2. Find service by name in response
3. Extract id field

スケジュール名 -> スケジュールID:

1. Call PAGERDUTY_GET_SCHEDULES
2. Find schedule by name in response
3. Extract id field
インシデントのライフサイクル
1. Incident triggered (via API, integration, or manual creation)
2. On-call user notified per escalation policy
3. User acknowledges -> status: 'acknowledged'
4. User resolves -> status: 'resolved'
ページネーション
  • PagerDutyではオフセットベースのページネーションが使用されます
  • レスポンスのmoreブール値フィールドを確認します
  • offsetとlimitパラメーターを使用します
  • moreがfalseになるまで続けます

既知の注意点

IDの形式:

  • PagerDutyのすべてのIDは英数字の文字列です(例:'P1234AB')
  • サービス参照にはtype: 'service_reference'が必要です
  • ユーザー参照にはtype: 'user_reference'が必要です

ステータスの遷移:

  • インシデント:triggered -> acknowledged -> resolved(前方向のみ)
  • サービス:active、warning、critical、maintenance、disabled

レート制限:

  • PagerDuty APIはアカウントごとにレート制限を適用します
  • 429レスポンスに対して指数バックオフを実装します
  • 一括操作は間隔を空けて実行してください

レスポンスの解析:

  • レスポンスデータはdataまたはdata.dataの下にネストされている場合があります
  • フォールバックパターンを使って安全に解析します
  • ページネーションではoffset/limit/moreパターンが使用されます

クイックリファレンス

タスクツールスラッグ主なパラメーター
インシデント一覧を取得PAGERDUTY_FETCH_INCIDENT_LISTstatuses[], service_ids[]
インシデントを取得PAGERDUTY_RETRIEVE_INCIDENT_BY_INCIDENT_IDincident_id
インシデントを作成PAGERDUTY_CREATE_INCIDENT_RECORDtitle, service
インシデントを更新PAGERDUTY_UPDATE_INCIDENT_BY_IDincident_id, status
インシデントにメモを追加PAGERDUTY_POST_INCIDENT_NOTE_USING_IDincident_id, content
インシデントをスヌーズPAGERDUTY_SNOOZE_INCIDENT_BY_DURATIONincident_id, duration
インシデントのアラートを取得PAGERDUTY_GET_ALERTS_BY_INCIDENT_IDincident_id
インシデントの分析情報PAGERDUTY_FETCH_INCIDENT_ANALYTICS_BY_IDincident_id
サービス一覧を取得PAGERDUTY_RETRIEVE_LIST_OF_SERVICES(none)
サービスを取得PAGERDUTY_RETRIEVE_SERVICE_BY_IDservice_id
サービスを作成PAGERDUTY_CREATE_NEW_SERVICEname, escalation_policy
サービスを更新PAGERDUTY_UPDATE_SERVICE_BY_IDservice_id
スケジュール一覧を取得PAGERDUTY_GET_SCHEDULES(none)
スケジュールを取得PAGERDUTY_RETRIEVE_SCHEDULE_BY_IDschedule_id
オンコール担当者を取得PAGERDUTY_RETRIEVE_ONCALL_LISTsince, until
スケジュールの上書きを作成PAGERDUTY_CREATE_SCHEDULE_OVERRIDES_CONFIGURATIONschedule_id
エスカレーションポリシー一覧を取得PAGERDUTY_FETCH_ESCALATION_POLICES_LIST(none)
エスカレーションポリシーを作成PAGERDUTY_CREATE_ESCALATION_POLICYname, escalation_rules
チームを作成PAGERDUTY_CREATE_NEW_TEAM_WITH_DETAILSname, description

Composioによって提供

コメント