Automation Actionsの設定と実行

この演習では、PagerDutyでAutomation ActionsとRBAのJobを紐づけ、PagerDutyからJobを実行する方法を学びます。

Serviceの作成#

PagerDutyはService(Technical Service)という単位で、システムの構成要素と通知先のチームを管理しています。以降の演習でインシデントを起票する必要があるため、インシデントを紐づけるServiceを作成します。

参考: PagerDuty 設定ガイド (動員編5) - Serviceの作成

  1. PagerDutyにログインし、上部メニューの Services > Service Directory を開き、+ New Serviceボタンをクリックします。 Image

  2. Serviceの名称と説明を入力し、Nextをクリック Image

  3. 既存のEscalation Policyを選択し、Nextをクリック Image

  4. Reduce Noiseの設定は、デフォルトのまま変更せず、画面最下部のNextをクリック

  5. Integrationsでは、Events API V2を選択し、Create Serviceをクリック Image

  6. Integration Keyが生成されるので、コピーして後の設定で利用できるよう、メモ帳などに保存しておきます。
    以降、Integration Keyは Services > Service Directory から対象のサービスを選択し、Integrationsタブを開くと確認することができます。 Image

以上でServiceが作成できました。最後にDynamic Notificationを有効にします。
Dynamic Notificationを有効にすると、Eventに含まれるSeverityの値を元に、通知レベル(High-Urgency/Low-Urgency)を動的に変更できるようになります。

参考: AlertのSeverityに合わせて、Urgencyを動的に変更する

  1. Settingsタブを開き、Assign and Notify欄で"Edit"をクリックします。 Image

  2. "How should responders be notified?"のプルダウンメニューから、"Dynamic notifications based on alert severity"を選択します。 Image

RBA API Tokenの発行#

PagerDutyからRBAを操作する際に利用する、API Tokenを発行します。

  1. RBAにログインし、ユーザーアイコンのプルダウンメニューからProfileをクリック、User API Tokens横の + ボタンをクリックします。 Image

  2. Tokenの名称を入力し、+ Generate New Token ボタンをクリック Image

  3. 表示されたTokenをコピーし、後の設定で利用できるよう、メモ帳などに保存してください。

Runnerの設定#

PagerDutyからJobを実行する際に利用するRunnerを設定します。

参考: PagerDuty Automation Actions

Runnerの選定

RBAを利用する場合は、ここで設定するのは個別のRunnerではなく、RBAアカウントになります。
Jobの実行時にどのRunnerを利用するかについては、Jobの設定やAutomation Actionsで指定するNode Filter等によって決定されます。

  1. PagerDutyにログインし、上部メニューの Automation > Automation Actionsを開きます。

  2. Automation Actions画面右上の + Add Actionボタンをクリック

  3. Select typeでは、Runbook Automationを選択し、Nextをクリック Image

  4. Runnerの名称と説明を入力し、Nextをクリックします。 Image

  5. RBAのサブドメイン名と先ほど発行したAPI Tokenの値を入力し、Create Runnerをクリックします。 Image

PD REST API Tokenの発行#

RBAからPagerDutyを操作するために、PagerDuty REST API用のTokenを発行し、RBAのKey Storageに保存します。
この演習では、User Token REST API Keyを利用します。

PagerDuty REST API Keyの種類

PagerDutyのAdminユーザーまたはAccount Ownerは、User Token REST API Keyだけでなく、一般アクセス用REST API Keyを発行することも可能です。特定のユーザーに紐づかないため、Tokenを発行したユーザーがライセンスを失った場合でも、利用を継続することができます。

参考: PagerDuty API Access Keys

  1. PagerDutyにログインし、画面右上のユーザーアイコンにカーソルを合わせ、表示されたメニューの中から User Profile をクリックします。

  2. ユーザープロファイル画面が開いたら、User Settingsタブを開きます。 Image

  3. Create API User Tokenボタンをクリックします。 Image

  4. 発行するTokenの説明を記入し、Create Tokenボタンを押します。 Image

  5. 表示された API User Token をメモ帳などに保存します。

  6. RBAにログインし、 画面右上のギアアイコンをクリックし、Key Storageを選択します。 Image

  7. +Add or Upload a Key ボタンをクリックします。

  8. Add or Upload a Key画面が開いたら以下のように入力します:

    • Key Type: Passwordを選択
    • Enter text: 先ほど保存したAPI User Tokenの値
    • Name: workshop_api Image 以降はRBAのKey Storage上のパスkeys/workshop_apiを指定すると、保存した値を利用できるようになります。

RBA Job定義ファイルのインポート#

RBAにJob定義ファイルをアップロードして、Jobを作成します。

参考: Transferring Rundeck Jobs

  1. Automated_Diagnostics.yamlファイルをダウンロードします。

  2. RBAにログインし、Projectを開き、Job画面を開きます。

  3. Job Actionsプルダウンメニューを開き、Upload Definitionをクリックします。 Image

  4. Choose Fileボタンから、先ほどダウンロードしたAutomated_Diagnostics.yamlファイルを選択し、Uploadボタンをクリックします。 Image

Automation Actionの設定#

PagerDutyでAutomation Actionを作成し、RBA上のJobと紐づけを行います。

参考: PagerDuty Automation Actions

  1. PagerDutyにログインし、上部メニューの Automation > Automation Actionsを開きます。

  2. Runnersタブを開き、+ Add Runnerボタンをクリックします。

  3. 先ほど作成したRunnerを選択し、Nextをクリック Image

  4. 先ほどインポートしたJobを選択し、Nextをクリック Image

  5. 先ほど作成したサービスをServices欄で選択し、Nextをクリック Image

  6. Enter arguments欄に -pd_incident_id ${pd.incident.id} と入力し、Creat Actionをクリック Image

ArgumentsとRBA Job Options

Enter arguments欄では、Jobで利用するOptionの値を指定することができます。
上記の設定では、JobのOption:pd_incident_idの値として、インシデントIDを指定しています。

インシデントID以外に指定できる値については、Automation Actionsでコンテキスト変数を使用するを参照してください。

Automation Actionの実行#

PagerDutyにインシデントを起票し、自動診断Jobを実行します。
インシデントはPagerDuty Webアプリ等から手動でも起票できますが、今回はEvent APIv2を利用してPagerDutyにEventを送り、インシデントを起票してみます。

  1. PagerDuty Event APIv2のリファレンスページをブラウザで開きます。

  2. 画面右のBody編集画面内で、routing_keyの値に「Serviceの作成」でコピーしたIntegration Keyを入力し、Send API Requestボタンをクリックしてください。
    PagerDutyで正常にリクエストが受け付けられると、Response画面に 202 Accepted が表示されます。 Image

  3. PagerDutyにログインし、AIOps > Operations Consoleを開きます。
    (AIOpsメニューが表示されない場合は、Incidents > All Incidentsを開いてください。)
    表示されているインシデントのタイトルをクリックし、詳細画面を開きます。 Image

  4. インシデント詳細画面内のRun Actionsボタンをクリックし、右側に表示されたJobをクリック Image

  5. Run Jobボタンをクリック Image

  6. ブラウザでインシデント詳細画面を再読込し、Notes欄に実行結果が追記されたことを確認してください。 Image

うまく動作しない場合は、RBAから直接Jobを実行してトラブルシューティングを行ってください。 Image

Jobの実行に必要なOption:pd_incident_idの値は、インシデント詳細画面のURLで確認できます。 Image

以上で、RBA上のJobを、PagerDutyのAutomation Actionから実行することができました。
演習では、担当者がWebアプリを利用してAutomation Actionをトリガーしましたが、その他にもモバイルアプリ、SlackやMS Teamsなどからも実行できます。

次はEventをPagerDutyで受け取った際に、Jobを自動実行させる方法を学びます。