PagerDuty + ServiceNow - 初回連携設定まとめ

PagerDutyのSolution Consultantとして活動している中で、ServiceNowとの連携について、よくご質問をいただきます。

基本的に、PagerDutyが公開している [ServiceNowインテグレーションガイド｜PagerDuty](https://support.pagerduty.com/main/lang-ja/docs/servicenow-integration-guide)　で設定はできるのですが、私が最初に設定した際、「もう少しこの辺り詳しくスクリーンショットがあるといいな」と思った箇所があったので、ここにまとめてみました。

:::note info
作業を行う上での留意点
- ServiceNowのバージョンによって画面が異なる場合があります
- 私個人で検証する際の設定手順です。詳細な設定内容についてはKBをご参照ください
- ServiceNowとPagerDutyの管理者権限を持つアカウントがそれぞれ必要です
- PagerDutyアプリは有償版のみインストール可能です
:::

# 事前準備
以下の準備をまとめておこないます。

## PagerDuty
PagerDuty側の作業です。

### APIアクセスキーの取得
KBに記載がある通り、APIアクセスキーを取得します。
アクセスキーは一度しか表示されないので、コピーして大切に保管してください。

Integrations > API Access Keys から新規作成できます。

![Screenshot 2024-12-16 at 17.52.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/c6e798b2-967f-0f5c-a10f-d4146c247db8.png)

Read Only にはチェックを入れないように。
![Screenshot 2024-12-16 at 18.07.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/a0936cf7-ba0c-9593-f768-052fd43a1bc7.png)


### ServiceNow連携用ユーザーの準備
People > Users でServiceNow連携用のユーザーを作成する、もしくは既存のユーザーを利用するのであれば、ユーザーIDをコピーしておきます。

IDはURLの以下の部分です。

![Screenshot 2024-12-16 at 18.11.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/6811b909-2eb3-bd67-0620-6bc91c5d9032.png)

### Priorityの設定
もし設定が必要であれば、**Account Settings** で[Priorityの設定](https://support.pagerduty.com/main/lang-ja/docs/incident-priority)を行います。既定のままでよければ特に変更は不要です。
![Screenshot 2024-12-19 at 10.48.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/9bbb9152-5e0c-6e5c-8d05-a15396f25832.png)


## ServiceNow
ServiceNow側から準備を進めていきます。

### テーブルで構成アクセスを許可
ServiceNow管理者は以下のServiceNowテーブルで構成アクセスを許可する必要があります。

ServiceNowのメニューから、**System Definition > Tables** で
テーブル一覧を表示、**Label** で検索して該当のテーブルをさがします。

![Screenshot 2024-12-12 at 17.07.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/faadc83f-c45d-d0d9-0fd9-2b846877aab2.png)

Application Accessのタブを開いて、KBに指定されているアクセス権にチェックを入れたらUPDATEする。
![Screenshot 2024-12-12 at 17.20.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/8c0fecb9-eab4-11ab-13cf-9138b67a3279.png)

このような流れで、他のテーブルも同じように設定していきます。
（詳しくは[こちら](https://support.pagerduty.com/main/lang-ja/docs/servicenow-integration-guide#11-servicenow-application-access-controls)を確認）
- sys_user
- sys_user_group
- sys_user_grmember
- Sysauto_script

### PagerDutyのアプリをインストール
[ServiceNowのアプリストア](https://store.servicenow.com/sn_appstore_store.do#!/store/application/39a9d9664f834e00dd657bb28110c77b/8.0.1)から、PagerDutyを探してインストールしてください。（写真は v8.0.1) 
![Screenshot 2024-12-12 at 17.25.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/3800901b-f29c-bf89-04c1-c7b2d373f46c.png)


### PagerDutyフィールドの追加
インストールが完了するとPagerDuty関連の設定が検索できるようになります。
KBでは任意の設定になっていますが、プロビジョニングされているIDを確認できるので表示しておくことはおすすめです。

User、Group、Incident、Business Service、Technical ServiceあたりはPagerDutyとの連携で使用するので、PagerDutyに関係する列を表示するといいと思います。

歯車マークから
![Screenshot 2024-12-12 at 17.34.47.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/6a14c6d2-4942-5980-af44-891ce8c9dc23.png)


PagerDutyの列をいくつか選択して右側に移動させて保存。
![Screenshot 2024-12-12 at 17.33.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/21f49a8d-2c32-c9e0-5078-cfbe581d419f.png)

### ServiceNowユーザーを準備
KBの手順[Webhook認証のためのServiceNowユーザーアカウントの作成](https://support.pagerduty.com/main/lang-ja/docs/servicenow-integration-guide#31-create-a-servicenow-user-account-for-webhook-authentication) に記載されていますが、Webhook認証のためにServiceNowでユーザーが必要です。もし適切なユーザーがいない場合は、新規作成しましょう。

**Users**からNewで新規ユーザーを作成します。
![Screenshot 2024-12-16 at 18.41.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/bcf3f1b3-2a10-f32a-e779-611747e4af1b.png)

- **User ID**を設定（Nameの部分も任意で埋める）
- メールアドレスのドメインが設定できない場合は、[Restrict emails by domain for user creation](https://www.servicenow.com/docs/bundle/washingtondc-platform-security/page/administer/security/reference/restrict-emails-by-domain.html) の手順を見てドメインを追加
- PagerDuty の[ユーザーID](https://qiita.com/drafts/46cce61f6a6b3e6b3729/edit#servicenow%E9%80%A3%E6%90%BA%E7%94%A8%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%AE%E6%BA%96%E5%82%99)を使用
- **Password needs reset** のチェックは外す
- Activeにチェックをいれる

![Screenshot 2024-12-16 at 18.17.02 copy.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/f274c69c-9be7-deeb-5cc9-6e347d94b921.png)

**Set Password** ボタンをクリックして、パスワードを生成したら、保存しておきます。

![Screenshot 2024-12-16 at 18.28.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/27a62a51-3af0-c8ee-ff8f-d506ad181946.png)

:::note warn
ここで設定する User ID と Password は、[PagerDuty Settings](https://qiita.com/drafts/46cce61f6a6b3e6b3729/edit#pagerduty-settings) で必要な情報です。連携後に誤って変更すると、PagerDuty と ServiceNow の連携に失敗する可能性があるので注意してください。
:::


ユーザーのRoleも設定をお忘れなく。

![Screenshot 2024-12-12 at 17.52.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/4e94d8bd-8ed1-079f-efac-46dc5fd9da32.png)

:::note info
追加するロール
- itil
- x_pd_integration.admin
:::

![Screenshot 2024-12-12 at 17.51.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/0ee3e002-7f84-0263-c1cd-31a4dde01a74.png)

これで事前準備は終了です。

# PagerDutyとの連携を設定
それでは、ServiceNow側で、PagerDutyの連携を設定していきます。

## PagerDuty Settings
**PagerDuty Settings**を検索することで設定画面に移動できます。
どう設定するかは [3.2:ServiceNowでAPIとWebhook接続を構成する](https://support.pagerduty.com/main/lang-ja/docs/servicenow-integration-guide#32-configure-the-api-and-webhook-connection-in-servicenow)を参照してください。


こちらの図では基本的に全部にチェックをいれていますが、どう設定すべきかは、[インテグレーション 設定の管理](https://support.pagerduty.com/main/lang-ja/docs/servicenow-integration-details#manage-integration-settings)にも詳細が記載されているので、あわせて確認してください。


![Screenshot 2024-12-16 at 18.45.02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/9a0780a2-3291-d259-be31-6e45844d37d3.png)


以下、PagerDuty の情報を入力します。事前に用意していたAPIアクセスキーを利用します。なお、Default Service IDやUser IDは、一度設定を保存すると入力できるようになります。
![Screenshot 2024-12-18 at 14.24.20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/232c3409-64e7-726f-9b31-8325d50266be.png)

こちらはPagerDutyと連携用に用意したServiceNowのユーザーとパスワード情報を入力します。
![Screenshot 2024-12-18 at 14.24.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/c550e9da-9c2b-b1e2-239c-92577b6495be.png)

こちらの設定はここで保存します。

## Integration Health Check
**Integration Health Check**をメニューから検索してクリックをすると、Health Checkが走ります。ここで、すべてに [✔] が入っていれば問題ありません。

![Screenshot 2024-12-19 at 9.38.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/1fd6e3f7-4f70-2491-1f2e-5afa41352561.png)

正しく構成できていないと、以下のように [X] が表示されるので、その場合は **PagerDuty Settings** に戻り、設定を見直してください。（以下の例は、ServiceNow アカウントの設定が間違っているケース）

![Screenshot 2024-12-19 at 9.45.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/ab4f65aa-e59a-c7f6-fd33-b9dd045cc64a.png)


## Priorityの設定
ServiceNowで**Refresh PagerDuty Priorities**を検索して、Priorityをインポートします。
![Screenshot 2024-12-19 at 10.50.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/1fcacde5-a9e7-00fa-370c-87ce75c71a02.png)

そして、ServiceNow側の Impact と Urgencyを設定します。
![Screenshot 2024-12-19 at 10.51.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/113d08b2-3460-d878-b868-6679f8d087bf.png)

## Assignment Group のプロビジョニング
ServiceNow で新規に **Groups** を作成して、PagerDutyのTeamとプロビジョニングします。

プロビジョニングする際に、NameとManagerの情報が必要なので、PagerDutyと連携しているユーザーをアサインしておきました。

![Screenshot 2024-12-19 at 15.24.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/de183ef8-c353-6f17-061a-0441de618d7a.png)

プロビジョニングする前に、Groupにメンバーが必要なので、ここでもPagerDuty連携用のユーザーを追加しています。

![Screenshot 2024-12-19 at 15.23.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/c2940e17-c3f6-984c-0c8c-1de3647dd9db.png)

**Provision Group into PagerDuty** をクリックして、プロビジョニングを行います。

![Screenshot 2024-12-19 at 15.24.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/de479a5d-283e-d1f4-15f1-b8f7a369adcc.png)


以下のように、PagerDuty のTeamとEscalation Policyが自動的に紐付けされました。

![Screenshot 2024-12-19 at 15.26.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/5bcca334-9184-f835-2717-7f30016d3a32.png)


## Configuration Item のプロビジョニング
ServiceNow の Configuration Item (CI) と PagerDuty の Service を紐付けます。
今回、CIは Technical Service を使います。Technical Serviceを検索して、**New**から新規にServiceを作成します。必要な情報を入力して、**Submit**します。

![Screenshot 2024-12-19 at 10.57.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/ff0301df-9997-2ade-4200-f63f1444df38.png)

そして、Serviceの画面下の**Provision CI into PagerDuty**をクリックします。

![Screenshot 2024-12-19 at 10.57.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/ba4291dc-3be3-cae3-9ceb-a6422ff6aa38.png)

これで、ServiceNowのCIが、PagerDutyのサービスとして作成され、Webhookによって連携されるようになりました。PagerDuty側のIDが追加されていることがわかると思います。
![Screenshot 2024-12-19 at 10.57.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/4e7b8c3d-fa8c-762e-7382-194b14a5ad07.png)

このリンクボタンをクリックするとPagerDuty側の設定を見ることができます。

Webhookだとこんな感じです。

![Screenshot 2024-12-19 at 10.58.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/fc958164-6928-097f-c651-5f5586857e51.png)


## 連携テスト
最後に連携テストを行います。

ServiceNow の**PagerDuty Incidents**から新規にインシデントを作成します。
Configuration Item, Assignment Group, Impact, Urgency を含めて、必要なフィールドを埋めて、**Submit** します。

![Screenshot 2024-12-19 at 15.43.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/49fa34a1-ff2d-7bc1-21c0-1ea155006584.png)

PagerDuty側でインシデントが作成されたことを確認します。

![Screenshot 2024-12-19 at 15.45.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3957400/e895c3c7-38f1-b11d-4bc2-fa2bced6b26d.png)

必要に応じて、PagerDuty側からインシデントを作成してみる、作成後、インシデントの情報を更新してみるなどのテストを実施してください。

# 最後に
もう少しライトな内容にするつもりでしたが、記事作成に意外と時間がかかってしまいました。私が検証用でPagerDutyとServiceNowの連携を設定するときの手順としてまとめましたので、参考になれば嬉しいです。

もし次回があれば、CIの依存関係を構築して、その関係ごとプロビジョニングする手順もまとめたいと思います。