Automation Actionsの設定と実行
この演習では、PagerDutyでAutomation ActionsとRBAのJobを紐づけ、PagerDutyからJobを実行する方法を学びます。
Serviceの作成#
PagerDutyはService(Technical Service)という単位で、システムの構成要素と通知先のチームを管理しています。以降の演習でインシデントを起票する必要があるため、インシデントを紐づけるServiceを作成します。
参考: PagerDuty 設定ガイド (動員編5) - Serviceの作成
-
PagerDutyにログインし、上部メニューの Services > Service Directory を開き、+ New Serviceボタンをクリックします。
-
Serviceの名称と説明を入力し、Nextをクリック
-
既存のEscalation Policyを選択し、Nextをクリック
-
Reduce Noiseの設定は、デフォルトのまま変更せず、画面最下部のNextをクリック
-
Integrationsでは、Events API V2を選択し、Create Serviceをクリック
-
Integration Keyが生成されるので、コピーして後の設定で利用できるよう、メモ帳などに保存しておきます。
以降、Integration Keyは Services > Service Directory から対象のサービスを選択し、Integrationsタブを開くと確認することができます。
以上でServiceが作成できました。最後にDynamic Notificationを有効にします。
Dynamic Notificationを有効にすると、Eventに含まれるSeverityの値を元に、通知レベル(High-Urgency/Low-Urgency)を動的に変更できるようになります。
参考: AlertのSeverityに合わせて、Urgencyを動的に変更する
-
Settingsタブを開き、Assign and Notify欄で"Edit"をクリックします。
-
"How should responders be notified?"のプルダウンメニューから、"Dynamic notifications based on alert severity"を選択します。
RBA API Tokenの発行#
PagerDutyからRBAを操作する際に利用する、API Tokenを発行します。
-
RBAにログインし、ユーザーアイコンのプルダウンメニューからProfileをクリック、User API Tokens横の + ボタンをクリックします。
-
Tokenの名称を入力し、+ Generate New Token ボタンをクリック
-
表示されたTokenをコピーし、後の設定で利用できるよう、メモ帳などに保存してください。
Runnerの設定#
PagerDutyからJobを実行する際に利用するRunnerを設定します。
参考: PagerDuty Automation Actions
Runnerの選定
RBAを利用する場合は、ここで設定するのは個別のRunnerではなく、RBAアカウントになります。
Jobの実行時にどのRunnerを利用するかについては、Jobの設定やAutomation Actionsで指定するNode Filter等によって決定されます。
-
PagerDutyにログインし、上部メニューの Automation > Automation Actionsを開きます。
-
Automation Actions画面右上の + Add Actionボタンをクリック
-
Select typeでは、Runbook Automationを選択し、Nextをクリック
-
Runnerの名称と説明を入力し、Nextをクリックします。
-
RBAのサブドメイン名と先ほど発行したAPI Tokenの値を入力し、Create Runnerをクリックします。
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にログインし、画面右上のユーザーアイコンにカーソルを合わせ、表示されたメニューの中から User Profile をクリックします。
-
ユーザープロファイル画面が開いたら、User Settingsタブを開きます。
-
Create API User Tokenボタンをクリックします。
-
発行するTokenの説明を記入し、Create Tokenボタンを押します。
-
表示された API User Token をメモ帳などに保存します。
-
RBAにログインし、 画面右上のギアアイコンをクリックし、Key Storageを選択します。
-
+Add or Upload a Key ボタンをクリックします。
-
Add or Upload a Key画面が開いたら以下のように入力します:
- Key Type: Passwordを選択
- Enter text: 先ほど保存したAPI User Tokenの値
- Name:
workshop_api
以降はRBAのKey Storage上のパス
keys/workshop_api
を指定すると、保存した値を利用できるようになります。
RBA Job定義ファイルのインポート#
RBAにJob定義ファイルをアップロードして、Jobを作成します。
-
Automated_Diagnostics.yamlファイルをダウンロードします。
-
RBAにログインし、Projectを開き、Job画面を開きます。
-
Job Actionsプルダウンメニューを開き、Upload Definitionをクリックします。
-
Choose Fileボタンから、先ほどダウンロードした
Automated_Diagnostics.yaml
ファイルを選択し、Uploadボタンをクリックします。
Automation Actionの設定#
PagerDutyでAutomation Actionを作成し、RBA上のJobと紐づけを行います。
参考: PagerDuty Automation Actions
-
PagerDutyにログインし、上部メニューの Automation > Automation Actionsを開きます。
-
Runnersタブを開き、+ Add Runnerボタンをクリックします。
-
先ほど作成したRunnerを選択し、Nextをクリック
-
先ほどインポートしたJobを選択し、Nextをクリック
-
先ほど作成したサービスをServices欄で選択し、Nextをクリック
-
Enter arguments欄に
-pd_incident_id ${pd.incident.id}
と入力し、Creat Actionをクリック
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を送り、インシデントを起票してみます。
-
PagerDuty Event APIv2のリファレンスページをブラウザで開きます。
-
画面右のBody編集画面内で、routing_keyの値に「Serviceの作成」でコピーしたIntegration Keyを入力し、Send API Requestボタンをクリックしてください。
PagerDutyで正常にリクエストが受け付けられると、Response画面に 202 Accepted が表示されます。 -
PagerDutyにログインし、AIOps > Operations Consoleを開きます。
(AIOpsメニューが表示されない場合は、Incidents > All Incidentsを開いてください。)
表示されているインシデントのタイトルをクリックし、詳細画面を開きます。 -
インシデント詳細画面内のRun Actionsボタンをクリックし、右側に表示されたJobをクリック
-
Run Jobボタンをクリック
-
ブラウザでインシデント詳細画面を再読込し、Notes欄に実行結果が追記されたことを確認してください。
うまく動作しない場合は、RBAから直接Jobを実行してトラブルシューティングを行ってください。
Jobの実行に必要なOption:pd_incident_id
の値は、インシデント詳細画面のURLで確認できます。
以上で、RBA上のJobを、PagerDutyのAutomation Actionから実行することができました。
演習では、担当者がWebアプリを利用してAutomation Actionをトリガーしましたが、その他にもモバイルアプリ、SlackやMS Teamsなどからも実行できます。
次はEventをPagerDutyで受け取った際に、Jobを自動実行させる方法を学びます。