PagerDutyのSolution Consultantとして活動している中で、ServiceNowとの連携について、よくご質問をいただきます。
基本的に、PagerDutyが公開している ServiceNowインテグレーションガイド|PagerDuty で設定はできるのですが、私が最初に設定した際、「もう少しこの辺り詳しくスクリーンショットがあるといいな」と思った箇所があったので、ここにまとめてみました。
作業を行う上での留意点
- ServiceNowのバージョンによって画面が異なる場合があります
- 私個人で検証する際の設定手順です。詳細な設定内容についてはKBをご参照ください
- ServiceNowとPagerDutyの管理者権限を持つアカウントがそれぞれ必要です
- PagerDutyアプリは有償版のみインストール可能です
事前準備
以下の準備をまとめておこないます。
PagerDuty
PagerDuty側の作業です。
APIアクセスキーの取得
KBに記載がある通り、APIアクセスキーを取得します。
アクセスキーは一度しか表示されないので、コピーして大切に保管してください。
Integrations > API Access Keys から新規作成できます。
ServiceNow連携用ユーザーの準備
People > Users でServiceNow連携用のユーザーを作成する、もしくは既存のユーザーを利用するのであれば、ユーザーIDをコピーしておきます。
IDはURLの以下の部分です。
Priorityの設定
もし設定が必要であれば、Account Settings でPriorityの設定を行います。既定のままでよければ特に変更は不要です。
ServiceNow
ServiceNow側から準備を進めていきます。
テーブルで構成アクセスを許可
ServiceNow管理者は以下のServiceNowテーブルで構成アクセスを許可する必要があります。
ServiceNowのメニューから、System Definition > Tables で
テーブル一覧を表示、Label で検索して該当のテーブルをさがします。
Application Accessのタブを開いて、KBに指定されているアクセス権にチェックを入れたらUPDATEする。
このような流れで、他のテーブルも同じように設定していきます。
(詳しくはこちらを確認)
- sys_user
- sys_user_group
- sys_user_grmember
- Sysauto_script
PagerDutyのアプリをインストール
ServiceNowのアプリストアから、PagerDutyを探してインストールしてください。(写真は v8.0.1)
PagerDutyフィールドの追加
インストールが完了するとPagerDuty関連の設定が検索できるようになります。
KBでは任意の設定になっていますが、プロビジョニングされているIDを確認できるので表示しておくことはおすすめです。
User、Group、Incident、Business Service、Technical ServiceあたりはPagerDutyとの連携で使用するので、PagerDutyに関係する列を表示するといいと思います。
PagerDutyの列をいくつか選択して右側に移動させて保存。
ServiceNowユーザーを準備
KBの手順Webhook認証のためのServiceNowユーザーアカウントの作成 に記載されていますが、Webhook認証のためにServiceNowでユーザーが必要です。もし適切なユーザーがいない場合は、新規作成しましょう。
- User IDを設定(Nameの部分も任意で埋める)
- メールアドレスのドメインが設定できない場合は、Restrict emails by domain for user creation の手順を見てドメインを追加
- PagerDuty のユーザーIDを使用
- Password needs reset のチェックは外す
- Activeにチェックをいれる
Set Password ボタンをクリックして、パスワードを生成したら、保存しておきます。
ここで設定する User ID と Password は、PagerDuty Settings で必要な情報です。連携後に誤って変更すると、PagerDuty と ServiceNow の連携に失敗する可能性があるので注意してください。
ユーザーのRoleも設定をお忘れなく。
追加するロール
- itil
- x_pd_integration.admin
これで事前準備は終了です。
PagerDutyとの連携を設定
それでは、ServiceNow側で、PagerDutyの連携を設定していきます。
PagerDuty Settings
PagerDuty Settingsを検索することで設定画面に移動できます。
どう設定するかは 3.2:ServiceNowでAPIとWebhook接続を構成するを参照してください。
こちらの図では基本的に全部にチェックをいれていますが、どう設定すべきかは、インテグレーション 設定の管理にも詳細が記載されているので、あわせて確認してください。
以下、PagerDuty の情報を入力します。事前に用意していたAPIアクセスキーを利用します。なお、Default Service IDやUser IDは、一度設定を保存すると入力できるようになります。
こちらはPagerDutyと連携用に用意したServiceNowのユーザーとパスワード情報を入力します。
こちらの設定はここで保存します。
Integration Health Check
Integration Health Checkをメニューから検索してクリックをすると、Health Checkが走ります。ここで、すべてに [✔] が入っていれば問題ありません。
正しく構成できていないと、以下のように [X] が表示されるので、その場合は PagerDuty Settings に戻り、設定を見直してください。(以下の例は、ServiceNow アカウントの設定が間違っているケース)
Priorityの設定
ServiceNowでRefresh PagerDuty Prioritiesを検索して、Priorityをインポートします。
そして、ServiceNow側の Impact と Urgencyを設定します。
Assignment Group のプロビジョニング
ServiceNow で新規に Groups を作成して、PagerDutyのTeamとプロビジョニングします。
プロビジョニングする際に、NameとManagerの情報が必要なので、PagerDutyと連携しているユーザーをアサインしておきました。
プロビジョニングする前に、Groupにメンバーが必要なので、ここでもPagerDuty連携用のユーザーを追加しています。
Provision Group into PagerDuty をクリックして、プロビジョニングを行います。
以下のように、PagerDuty のTeamとEscalation Policyが自動的に紐付けされました。
Configuration Item のプロビジョニング
ServiceNow の Configuration Item (CI) と PagerDuty の Service を紐付けます。
今回、CIは Technical Service を使います。Technical Serviceを検索して、Newから新規にServiceを作成します。必要な情報を入力して、Submitします。
そして、Serviceの画面下のProvision CI into PagerDutyをクリックします。
これで、ServiceNowのCIが、PagerDutyのサービスとして作成され、Webhookによって連携されるようになりました。PagerDuty側のIDが追加されていることがわかると思います。
このリンクボタンをクリックするとPagerDuty側の設定を見ることができます。
Webhookだとこんな感じです。
連携テスト
最後に連携テストを行います。
ServiceNow のPagerDuty Incidentsから新規にインシデントを作成します。
Configuration Item, Assignment Group, Impact, Urgency を含めて、必要なフィールドを埋めて、Submit します。
PagerDuty側でインシデントが作成されたことを確認します。
必要に応じて、PagerDuty側からインシデントを作成してみる、作成後、インシデントの情報を更新してみるなどのテストを実施してください。
最後に
もう少しライトな内容にするつもりでしたが、記事作成に意外と時間がかかってしまいました。私が検証用でPagerDutyとServiceNowの連携を設定するときの手順としてまとめましたので、参考になれば嬉しいです。
もし次回があれば、CIの依存関係を構築して、その関係ごとプロビジョニングする手順もまとめたいと思います。