DOCS
インテグレーションガイド / ServiceNow
本記事は米国PagerDuty社のサイトで公開されているものを日本語訳したものです。原文はこちらです。
ServiceNowのコアとのインテグレーションのインストールと設定方法
ServiceNow Enterpriseは、エンタープライズ環境に高度な自動化とプロセスワークフローを提供する強力なサービスプラットフォームです。PagerDutyとのインテグレーションにより、PagerDutyの堅牢なオンコール・スケジューリングや通知、エスカレーションの機能を使い、ServiceNowのワークフローおよびチケット処理機能を最大限に活用できるようになります。
この記事では、ServiceNow Integrationの最新バージョンである5とのインストールについて詳しく説明します。このバージョン5は ServiceNow Jakartaのパッチ6以降とKingston向けに認定を受けています。記事では、あなたの環境をPagerDutyと統合するためのプロセスを順を追って説明していきます。
注:Serveice Now インテグレーションバージョン4は https://www.pagerduty.com/docs/guides/servicenow-v4-integration-guide/
ServiceNow Expressインテグレーションガイドは https://pagerduty.digitalstacks.net/docs/guides/servicenow-express-integration-guide/ でご覧いただけます。 詳細については、ナレッジベースを参照してください:
ServiceNow EnterpriseとPagerDutyの間の通信は双方向でサポートされているため、インシデントをAckしたり、委任したり(Delegate:別のグループに割り当てる)、どちらのシステムでも解決できます。次のワークフローがサポートされています。
-
サードパーティの監視ツールインテグレーションによって問題が検知されると、PagerDutyでインシデントが発生します。ユーザーはPagerDutyから通知を受け取り、ユーザはPagerDutyを介してAck/解決することができます。PagerDutyインシデントがトリガーされるとServiceNowチケットが開かれて、インシデントのライフサイクルの間、同期されます。
-
チケットはServiceNowに提出されます。PagerDutyでインシデントが自動的に開かれて、ユーザーに通知されます。ユーザーはPagerDuty経由でオーナーシップを取得します。PagerDutyの情報はServiceNowと同期して保持されます。
ServiceNowのインストール前の要件
アプリケーションアクセスコントロール
PagerDutyの統合が機能するには、インストール前にServiceNowで以下の変更が必要です。この作業は、ServiceNow管理者が行う必要があります。
-
System Definition → Tables モジュールから、ユーザー(sys_user)テーブルのレコードを開き、ユーザーフォームからPagerDutyユーザーを配置するアクションをサポートするための設定オプション Allow configurationを有効にします。
-
System Definition →Tables モジュールから、(sys_user_group)Groupテーブルの レコードを開きます。
-
グループフォームからPagerDutyサービスとポリシーを配置するアクションをサポートするため、Allow configuration オプションを有効にします。
-
Can create と_Can update_オプションを有効にすると、PagerDutyはグループのサービスおよびポリシーIDをグループレコードに書き込むことができるようになります。
-
-
System Definition →Tablesモジュールから、Group Member (sys_user_grmember)テーブルのレコードを開き、Allow configuration オプションを 有効にします。
ServiceNow Storeからのインストール
-
適切なアプリケーションを見つけるには、ここをクリックしてください
-
アプリケーションを購入するオプションを選択します。このアプリケーションは課金されません(無料です)。お使いのServiceNowのバージョンで使える最新バージョンのアプリを選択してください。
-
ServiceNow Enterpriseアカウントに管理者としてログインします。
-
System Applications → Applications モジュールを開き、Downloadsタブをクリックして、PagerDuty Incident Resolution Platformアプリケーションを表示します。
-
PagerDutyアプリケーションで Install をクリックします。
ビューにPagerDutyフィールドを追加する
ServiceNow内のPagerDuty IDフィールドを表示する場合は、手動でビューに追加する必要があります。これを行う方法については、ServiceNowのドキュメントのフォームのShow or hide fields on a form を参照してください。
列の表示をカスタマイズするために、リストビューにフィールドを追加することをお勧めします。それにはグリッドの左上隅にある歯車のアイコンをクリックします。例えば、Groupsビューでは次のようになります。
利用可能なフィールドのリストは次のとおりです。これらのフィールドをフォームビューに追加すると、関連するPagerDutyレコードへのクイックリンクを使用することもできま
- User(リストと個人ユーザーフォーム)
- PagerDuty ID
- Group(リストと個別のグループフォーム)
- PagerDutyサービス
- PagerDutyエスカレーション
- PagerDutyウェブフック
- PagerDutyチーム
- PagerDutyスケジュール
- CMDB CI Application(リストおよび個別CIフォーム)
- PagerDutyサービス
- PagerDutyウェブフック
- Incident
- PagerDuty ID
PagerDutyでの設定
REST APIキーを作成する
このAPIキーは、PagerDutyと通信するためにServiceNowによって使用されます。以下の手順は、最初のインストール時に一度だけ実行する必要があります。
-
PagerDutyの Configuration メニューから、API Access を選択します。
-
API Access ページで Create New API Keyボタンをクリックします。
-
ポップアップするダイアログで、キーのDescription を入力し、API Version を選択するよう求められます。また、キーを Read-Only として作成するオプションもあります. 完全なAPIキーが必要なのでこのボックスをチェックしないでください。
-
オプションを入力したら、Create Key をクリックします。
-
Create Keyをクリックすると、キーを表示したダイアログが表示され、前の手順で記入したオプションが確認されます。 重要:この手順を実行した後では、このキーにアクセスできないため、このキーをコピーして安全な場所に保存してください。以前に作成したキーを失くして再びアクセスする必要がある場合は、キーを削除して新しいキーを作成する必要があります。
-
キーを正常にコピーしたら、Close をクリックします。
ServiceNowでの設定
まず、統合の基本的なアプリケーション全体の設定のほとんどは、システムメニューからPagerDuty→Configuration→ Settingsと移動した先のページで設定します。
Webhook認証用のインテグレーションユーザーアカウントを作成する
この統合には、PagerDutyのWebhookによって開始されたアクションを実行するときに動作するServiceNowユーザーアカウントが必要です。このデザインはセキュリティ面で役立つもので、統合の権限と役割を制御できます。
-
PagerDutyアプリケーションで使用するためにServiceNowで新しいサービスアカウントを作成します。アプリケーションを設定するときは、PagerDuty Settings UIでユーザー名とパスワードを入力する必要があります。
-
Web Service access only とInternal Integration User options が有効になっていることを確認します。
-
作成したばかりのインテグレーションユーザーの電子メールフィールドに、PagerDutyで有効なユーザーのemail アドレスを入力します。これにより、リクエストがPagerDuty-Fromヘッダー付きで適切にフォーマットされます。
-
RolesタブでEditを選択して、ユーザーに3つの役割 itil、rest_service、x_pd_integration.admin を割り当てます。
-
ServiceNowシステムのメニューでPagerDuty→Configuration→PagerDuty Settingsと移動し、新しいユーザーのユーザーIDとパスワードを、ServiceNow user for authentication フィールドと ServiceNow user password for authentication フィールドに入力します。
-
Test ServiceNow User Authenticationをクリックして、基本認証が有効であることを検証します。すべてが正常に動作している場合
ServiceNow user authentication test successful (200)
という応答が返ってくるはずです。
PagerDuty API接続を設定する
ServiceNowシステムメニューでPagerDuty→Configuration→PagerDuty Settingsと移動し、次の各プロパティを入力してAPI接続を設定します。
-
Default PagerDuty User ID to use if auto-provisioning is disabled:有効なPagerDutyユーザーIDを入力します。これはインテグレーションが、ServiceNowユーザーがアクションを実行する際に使うPagerDutyユーザーアカウントを識別できない場合に使用されます。この値は、PagerDutyのユーザーのプロファイルのURLの中の最後にある、Pで始まる英数字コードにする必要があります。
-
REST API endpoint URL:これはデフォルトのhttps://api.pagerduty.comのままにしてください。
-
PagerDuty API access key:上記の手順で生成されたAPIキーをこのフィールドに入力します。前の手順のAPIキーです。
-
Configuration → Test REST API Connection をクリックして、統合が有効であることを確認します。すべてが正常に動作している場合は、
Connection test successful((200)
という応答が返るはずです。
デフォルトのユーザーを設定し、正しく行うことは重要です
自動プロビジョニングが有効になっていない場合は、デフォルトユーザーID が必要であり、正しく設定する必要があります。そうしないと、統合の多くの部分が機能しません。
デフォルトのPagerDuty User IDは、ServiceNowのユーザーIDまたは電子メールアドレスではなく、PagerDutyのユーザーIDでなければなりません。PagerDutyユーザーのIDは、ユーザーのPagerDutyプロファイルページのURLの最後にあります。これは、Pで始まる英数字コードです。
さらに、PagerDutyユーザーのデフォルトのロールは少なくとも Responder でなければなりません。
最後に、ServiceNow上に、”PagerDuty ID”フィールドにPagerDutyユーザーIDを持つユーザーがいる場合、そのユーザーの電子メールアドレスはPagerDutyのユーザのログイン用の電子メールアドレスと正確に一致している必要があります。
これらの条件のすべてが満たされていないと、本インテグレーションはPagerDutyのインシデントについて、対応するPagerDutyアカウントを持たないServiceNowのユーザーによってそれが再割り当てまたは解決された場合、PagerDuty内でそれを再割り当てまたは解決できません。
追加のプロパティをレビューする
統合をダウンロードして設定したら、Priority Sync、Inbound Field Rules 、およびその他のオプションの設定の詳細について、Advanced Configuration の記事を参照してください。
PagerDutyの統合に関する他のグローバル設定は、上記のPagerDuty→Configuration→PagerDuty Settingsページで見つけることができ、API接続を設定するために使えます。その中には下記のプロパティがあります。
-
Integration Behavior
-
Choose ServiceNow to PagerDuty mapping:Assignment GroupsをPagerDutyにマップするかどうか、またはConfiguration ItemsとAssignment Groups をPagerDutyにマッピングするかどうかを選択します。
-
Incident state value to use when PagerDuty resolves an incident: ServiceNowインスタンスのResolved(「解決済み」)状態に関連付ける整数値を選択します。この値をカスタマイズする場合は、ここで適切な値を選択してください。
-
Resolve PagerDuty incident if ServiceNow incident is assigned to a group that doesn’t exist in PagerDuty:PagerDutyに存在しない(割り当てられていたにも関わらず)グループに割り当てられている場合、PagerDutyのインシデントを解決する必要があるかどうかを選択します。これは、すべてのServiceNowグループがPagerDutyのエスカレーションポリシーにマッピングされてはいない場合に便利です。
-
Create a new PagerDuty user if one is not found with the ServiceNow user’s email: このオプションでは、ServiceNowに含まれるユーザーを、ServiceNow内でそのユーザーにインシデントが割り当てられたり、そのユーザーがインシデントを管理したりする場合に、PagerDutyに自動的にプロビジョニングします。これは、お客様のアカウントへの請求に影響する場合があります。
-
Do not assign the ServiceNow incident until a PagerDuty user has acknowledged the incident
-
Provision current Assignment Group members into PagerDuty when provisioning Assignment Groups:Assignment GroupがPagerDutyにプロビジョニングされた場合、Assignment Groupに属するすべてのユーザーを任意で自動プロビジョニングします。
-
Create PagerDuty Schedule when provisioning Assignment Groups:ServiceNowによってPagerDutyにプロビジョニングされるAssignment Goupsのために新しいスケジュールを自動的に作成します。スケジュールが作成されると、Assignment GoupsのManagerがスケジュールに追加されます。このスケジュールは、この後でPagerDuty内の他のユーザーで設定する必要があります。
-
Use PagerDuty teams:PagerDutyのTeamの機能をServiceNowのAssignment Groupとともに使用します。
-
Create PagerDuty Team when provisioning Assignment Groups:有効にすると、Assignment GroupをServiceNowからPagerDutyにプロビジョニングするときにPagerDutyのチームが作成されます
-
-
PagerDuty Settings
-
PagerDuty Instance URL:PagerDutyインスタンスへのURL。
-
PagerDuty API access key :PagerDuty REST APIで認証するために使用される、設定プロセスの一部として生成されたAPIキー。
-
Default User ID:このPagerDutyアカウントは、ServiceNowでアクションを実行しているユーザーがPagerDutyに存在しない場合にAPIリクエスト(ServiceNowからPagerDutyへ)を行うために使用されます。このフィールドを省略すると、PagerDutyでプロビジョニングされていないServiceNowユーザーによってインシデントが作成された場合に、PagerDuty内ではインシデントが作成されなくなる可能性があります。
-
REST API Endpoint:このフィールドは変更する必要はありません。
-
-ServiceNow Settings
-
ServiceNow user for authentication:PagerDutyがwebhook送信時にServiceNowで認証するために使用するユーザー名。
-
ServiceNow user password for authentication:前述のユーザーに対応するパスワード。
-
ServiceNow REST endpoint for webhook callback:オプションで、PagerDutyがwebhookを送信するために使用するパスを変更します。この値はデフォルトのままにしておくことをお勧めします。
-
Legacy Settings
-
Logging verbosity level:PagerDuty統合のログに含まれる情報の量を変更します。デフォルト値はinfoです。トラブルシューティングが必要な場合はdebugに変更することを検討してください。
-
ServiceNowオブジェクトをPagerDutyオブジェクトにマップする方法を選択する
PagerDuty→Configuration→SettingsページのServiceNow to PagerDuty mappingオプションを選択すると、システム間の対応には次の2つのオプションがあります。
-
ServiceNowの Configuration ItemsとAssignment GroupsをPagerDutyにマップする
-
PagerDutyサービスに設定項目をマップする
-
Assignment GroupsをPagerDutyエスカレーションポリシーにマップする
-
-
ServiceNowのAssignment GroupsをPagerDutyにマップする
- Assignment Groups は、PagerDutyサービスとPagerDutyエスカレーションポリシーの両方に対応します
次の図は、Configuration Items とAssignment GroupsがPagerDutyにマップされているときに、 両方のシステムのオブジェクト間のマッピングを表しています。
PagerDutyへのConfiguration Itemのプロビジョニング
注:PagerDutyのProperties UIでAssignment Groups map to PagerDutyを選択した場合は、この手順をスキップできます。PagerDutyにConfiguration Itemsをプロビジョニングする必要はありません。
Configuration ItemをPagerDutyにプロビジョニングする前に、プロビジョニングする各Configuration Itemに対応するAssignment Groupを設定することをお勧めします。これにより、プロビジョニングプロセスが簡素化されます。ひとつのConfiguration Itemをプロビジョニングすると、Assignment Groupが(エスカレーションポリシーとして)PagerDutyに存在することが確認されます。そうでない場合、対応するAssignment GroupをPagerDutyエスカレーションポリシーとしてプロビジョニングします。
PagerDutyとの統合により、ServiceNowの各Configurationn Itemに対応するPagerDutyサービスを設定できます。この統合により、新しいPagerDutyサービスとWebhook(ServiceNowに情報を送り返す必要があります)を迅速に生成する簡単な方法が提供されます。また、これはServiceNow内の関連フィールドも入力します。
同じベースcmdb_ciテーブルを拡張するConfiguration Itemは、PagerDutyのサービスIDを含む同じフィールドを継承するため、PagerDutyにマップできます。これにより、PagerDutyで任意のタイプのConfiguration Itemをサービスに簡単にマッピングできます(ただしBusiness ServicesやTechnical Services および/またはApplicationsのみプロビジョニングが推奨されています)。各Configuration Itemタイプに対して、PagerDutyオブジェクトIDを表示するためには、そのフォームビューを変更する必要があります。
-
ServiceNowインスタンス内のApplicationのリストでは、CIがPagerDutyにマップされている場合を除いて、リストされているグループに対して_PagerDuty Service_と_PagerDuty webHook_フィールドがすべて空であることがわかります。
-
PagerDutyにプロビジョニングするアプリケーション(またはCI)を選択します。次に、Related Links の下のProvision CI Into PagerDutyリンクをクリックして、PagerDutyインスタンスに展開します。
-
設定項目が作成されるという通知が表示されます。完了したら、 PagerDutyサービスとPagerDutyウェブフックフィールドにPagerDuty IDが 入力されます。
-
最後に、対応するサービスとエスカレーションポリシーがPagerDutyで作成さ れていることがわかります。このサービスには、PagerDutyとServiceNowの間 の双方向同期に必要なWebHookも自動的に作成されます。
Assignment GroupをPagerDutyにプロビジョニングする
ServiceNowには、Assignment Groupという概念があります。PagerDutyとのインテグレーションでは、各Assignment GroupはPagerDutyのエスカレーションポリシーに対応づけられます。オプションで、ServiceNowからグループがプロビジョニングされたときにPagerDutyのスケジュールとチームを自動的に作成するように設定することができます。
Settingsページで選択したマッピングによっては、Assignment GroupにPagerDutyの属性が設定されないことがあります。
-
PagerDutyにAssignment Groupsマップを選択すると、各Assignment Groupに対応するPagerDutyエスカレーション、サービス、Webhook IDが割り当てられます。オプションで、各Assignment Groupは、PagerDutyのスケジュールとチームIDも持ちます。
-
Configuration ItemとAssignment GroupをPagerDutyにマップすると、各Assignement GroupにはPagerDutyのエスカレーションIDだけが割り当てられます(Assignment Groupは対応するPagerDutyのスケジュールとチームIDも持ちます)。PagerDutyサービスとwebhook IDは、ServiceNowの各Configuration Itemにマップされます。
注:ServiceNowからPagerDutyへプロビジョニングしているユーザーは、ServiceNowでのそのユーザーのアカウントに対応するPagerDutyユーザーIDが割り当てられている必要があります
-
PagerDutyにプロビジョニングするAssignment Groupを選択します。次に、Provision PagerDuty Service グリンクをクリックして、このグループをPagerDutyインスタンスに配置します。
-
Assignment Groupが作成されるという通知が表示されます。完了すると、PagerDuty service、PagerDuty escalation 、 PagerDuty webhook フィールドが設定されます。 Assignment Groupには、PagerDuty Settings UIで有効になっていれば、対応するスケジュールIDとチームIDも与えられます。
-
最後に、対応するサービスとエスカレーションポリシーがPagerDutyで作成さ れていることが分かりす。このサービスには、PagerDutyとServiceNowの間の双方向同期に必要なwebHookも自動的に作成されます。webhookにはURLの 共有秘密情報が含まれており、通信のセキュリティが強化されています。
-
Group Listビューのドロップダウンメニュー からProvision Group Into PagerDutyオプションをクリックすることで、複数のグループを一度にプロビジョニングすることもできます。
PagerDutyへのユーザーのプロビジョニング
-
この統合により、ServiceNowからPagerDutyへのユーザーのプロビジョニングも可能になります。以下はServiceNowユーザーの一覧です。PagerDuty ID フィールドに既に値が設定されているため、PagerDutyですでに作成されているユーザーを直接見ることができます。
-
PagerDutyにまだプロビジョニングされていないユーザーを選択します。Provision PagerDuty Userリンクをクリックして、PagerDutyアカウントに追加することができます。
-
次に、ユーザーがプロビジョニングされているという通知が表示されます。完了すると、PagerDuty ID フィールドに自動的に生成されます。ユーザーは同じ名前と電子メールアドレスでPagerDuty内にも表示されます。
-
ユーザーがServiceNowに Business phone or Mobile phone フィールドを設定している場合、これらの設定はPagerDutyのContact Methods and Notification Rulesとして自動的にプロビジョニングされます。
-
複数のユーザーを選択するには、それらを選択し、Users画面のドロップダウンメニューからProvision PagerDuty User オプションをクリックします。
ServiceNowとPagerDutyが通信していることを確認する
PagerDutyとServiceNowが通信していることを確認するには、ServiceNowのグループにインシデントを割り当てます。以下は、PagerDutyサービスに結びついているDatavaseグループにインシデントを割り当てた例です。その後、そのインシデントはPagerDutyによってCAB Approval エスカレーションポリシーに再割り当てされました。
インシデントがPagerDutyで解決されると、それはServiceNowで解決になりますし、その逆もあります。ServiceNowは、PagerDuty内で行われた活動のログも保持します。
注意:ServiceNowインスタンスにPagerDutyアプリケーションをインストールして設定したら、インシデントテーブルのincident.x_pd_integration_incidentカラムのインデックスを作成することをお勧めします。これにより、PagerDutyアプリケーションがインシデントテーブルを照会する際に最適なパフォーマンスを得られることが保証されます。