DOCS
インテグレーションガイド / ServiceNow v4

ServiceNow v4

本記事は米国PagerDuty社のサイトで公開されているインテグレーションガイドをDigital Stacksが日本語に翻訳したものです。無断複製を禁じます。原文はこちらを参照してください。

このインテグレーションはService Now v4のためのものです。

ServiceNow Enterpriseは、エンタープライズ環境に高度な自動化とプロセスワークフローを提供する強力なサービスプラットフォームです。PagerDutyの堅牢なオンコールスケジューリング、通知、エスカレーションにより、ServiceNowのワークフローやチケット機能を活用することができます。

このガイドは、ServiceNow IstanbulおよびHelsinkiの認定を受けており、お客様の環境にPagerDutyをインテグレートするプロセスを案内します。ServiceNow Geneva以前を使用している場合は、「ServiceNowレガシーインテグレーションガイド」を参照してください。別に、ServiceNow Express用のインテグレーションガイドもあります。

詳細については、ナレッジベースを参照してください。

ServiceNow EnterpriseとPagerDutyの間の通信は双方向化されているため、インシデントの確認、委任(別のグループに割り当て)、解決はどちらのシステムでも可能です。次のワークフローがサポートされています。

  • サードパーティの監視ツールによって、PagerDutyで問題が検出され、インシデントが発生します。ユーザーはPagerDutyから通知を受け取り、ユーザーはPagerDutyを介して問題を確認し解決することができます。PagerDutyインシデントがトリガーされるとServiceNowのチケットが開かれ、インシデントが終了するまでPagerDutyと同期されたままになります。

  • チケットはServiceNowでファイルされます。インシデントはPagerDutyによって自動的にユーザーに通知されます。ユーザーはPagerDuty経由で所有権を取得します。PagerDutyの情報はServiceNowと同期して保持されます。

ワークフローは以下のようになります。

SN-PD-Integration-Diagram

インストールの前にServiceNowでやっておくこと

アプリケーションアクセスコントロール

PagerDutyを機能させるためには、インストール前にServiceNowで以下の変更が必要です。この作業は、ServiceNow管理者が行う必要があります。

  1. System Definition→Tableモジュールから、ユーザー(sys_user)テーブルのレコードを開き、ユーザーフォームからPagerDutyユーザーをプロビジョニングするためのアクション設定を有効にします。 SN-user-table-configuration

  2. System Definition→Tableモジュールから、グループのレコードを開きます (sys_user_group)テーブル。ここで、

    • Allow configrationオプションを有効にすると、PagerDutyサービスとポリシーをグループフォームからプロビジョニングするアクションをサポートできます。

    • Can create、Can updateオプションを有効にすると、PagerDutyはグループのサービスやポリシーIDをグループレコードに書き込むことができます。 SN-groups-table-config-application-access

  3. System Definition→Tableモジュールから、グループメンバー(sys_user_grmember)テーブルのレコードを開き、Allow configrationオプションを有効にします。 SN-groupmember-table-config-application-access

ServiceNow上での作業

  1. ServiceNow Storeにログインし、PagerDuty Incident Resolution Platformアプリケーションを検索します。

  2. アプリケーションを購入するオプションを選択します。このアプリケーションには無料です。使用しているServiceNowのバージョンで使用できる最新バージョンのアプリを選択してください。

  3. 管理者としてServiceNow Enterpriseアカウントにログインします。

  4. System Applications→Applicationsモジュールを開き、Downloadタブをクリックして新しいアプリケーションを表示します。

  5. PagerDutyアプリケーションでInstallをクリックします。

ビューにPagerDutyフィールドを追加する

ServiceNow内のPagerDuty IDフィールドを表示する場合は、手動でビューに追加する必要があります。この方法については、ServiceNowのフォーム上のフィールドの表示/非表示ドキュメントを参照してください。

列の表示をカスタマイズするために、グリッドの左上隅にある歯車のアイコンをクリックしてリストビューにフィールドを追加することをお勧めします。たとえば、「グループ」ビューでは次のようになります。

SN-groups-list-customize

利用可能なフィールドのリストは次のとおりです。これらのフィールドをフォームビューに追加すると、関連するPagerDutyレコードへのクイックリンクを使用することもできます。

  • ユーザー(リストと個人ユーザーフォーム)

    • PagerDuty ID
  • グループ(リストと個別のグループフォーム)

    • PagerDutyサービス

    • PagerDutyエスカレーション

    • PagerDuty webhook

  • CMDB CIアプリケーション(リストおよび個別CIフォーム)

    • PagerDutyサービス

    • PagerDuty webhook

  • インシデント

    • PagerDuty ID

PagerDuty上での作業

REST APIキーを作成する

PD-configuration-menu-api-access

  1. API AccessページでCreate New KPI keyボタンをクリックします。 PD-create-v2-rest-api-key

  2. ポップアップしたダイアログにキーの説明を入力し、APIのバージョンを選択するよう求められます。また、キーを読み取り専用として作成するチェックボックスがありますが、完全なAPIキーが必要なのでこのボックスをチェックしないでください。 PD-create-v2-rest-api-key-modal バージョン管理に関する注意事項:バージョン3.5以降のアプリケーションでは、フルアクセス権を持つv2キーを作成することをお勧めします。

  3. オプションを入力したら、Create Keyをクリックします。

  4. Create Keyをクリックすると、キーを表示するダイアログが表示され、前の手順で記入したオプションが確認されます。

  5. 重要:この手順を実行した後はキーにアクセスできなくなるため、このキーをコピーして安全な場所に保存してください。以前に作成したキーをなくした場合は、キーを削除して新しいキーを作成する必要があります。

  6. キーをコピーしたらCloseをクリックします。

ServiceNow上での作業

基本的なアプリケーション全体の設定のほとんどは、システムメニューからPagerDuty→Configuration→Propertiesのページに設定されています。

SN-configuration-properties-all

webhook認証用の統合ユーザーアカウントを作成する

インテグレーションにはPagerDutyのwebhookによって開始されたアクションを実行するためのServiceNowユーザーアカウントが必要です。これはセキュリティや権限、役割をコントロールするためです。

  1. ServiceNowで新しいサービスアカウントを作成します。アプリケーションを設定するときは、PagerDutyのプロパティにユーザー名とパスワードを入力する必要があります。

  2. Web service access onlyオプションが有効になっていることを確認します。 SN-create-user-web-service-access

  3. Rolesタブで、Editを選択し、itilrest_service、およびx_pd_integration.adminという3つの役割をユーザーに割り当てます。 SN-web-service-user-roles

  4. ServiceNowシステムメニューでPagerDuty→Configurations→Propertiesを選択し、新しいユーザーのユーザーIDとパスワードをServiceNow user for authenticationServiceNow user password for authenticationフィールドに入力します。

  5. Test ServiceNow User Authenticationをクリックして基本認証が機能していることを確認します。すべてが正常に動作している場合は「ServiceNow user authentication test successful (200)」と表示されます。 SN-test-webhook-authentication

PagerDuty API接続を設定する

ServiceNowシステムメニューでPagerDuty→Configurations→Propertiesに移動し、次のプロパティを入力してAPI接続を設定します。

  1. Dropault PagerDuty自動プロビジョニングが無効の場合に使用するユーザーID:アクションを実行しているServiceNowユーザーのPagerDutyアカウントが識別できない場合に使用するPagerDutyユーザーIDを入力します。これは、ServiceNowのユーザーIDまたは電子メールアドレスではなく、PagerDutyのユーザーIDである必要があります。PagerDutyのユーザーIDは、Pで始まる英数字コードであるPagerDutyプロファイルページの最後の部分をコピーすることで見つけることができます。

  2. REST APIエンドポイントURL:これはデフォルトのhttps://api.pagerduty.comのままにしてください。

  3. PagerDuty APIアクセスキー:上記の手順で生成されたAPIキーをこのフィールドに入力します。前の手順のAPIキーです。

  4. Configuration→Test API Connectionをクリックして、インテグレーションが有効であることを確認します。すべてが正常に動作している場合は、Connection test successful(200)と表示されます。 SN-configuration-test-rest-api-connection

レビューする追加のプロパティ

ソフトウェアをダウンロードして設定したら、Priority Syncインバウンドフィールドルール、およびその他の高度な設定オプションの設定に関するナレッジベースを確認してください。

PagerDutyのその他のグローバル設定は、上記のPagerDuty→Configuration→Propertiesページにあり、API接続を設定できます。

  • PagerDutyインスタンスURL:あなたのPagerDutyサイトへのURL。

  • 選択された構成アイテムがPagerDutyサービスにマップされない場合に使用するデフォルトのPagerDutyサービスID(オプション):この場合、マップされていない構成アイテムに対するチケットが開かれているが、割り当てグループがPagerDutyにマップされている場合、PagerDutyインシデントは依然としてこのPagerDutyサービスで作成されます。

  • PagerDutyがインシデントを解決するときに使用するインシデント状態の値:デフォルトのServiceNowインシデント状態を変更した場合は、PagerDutyが関連するインシデントを解決するときにインシデントを設定する値を入力します。

  • PagerDutyに存在しないグループにServiceNowインシデントが割り当てられていて、PagerDutyインシデントが解決された場合:ServiceNowインシデントがPagerDutyインシデントにリンクされ、ServiceNowインシデントがPagerDutyサービスを持たないグループに再割り当てされた場合、 PagerDutyインシデントは解決され、ServiceNowからリンク解除されます。

  • ユーザーの電子メールに一致するものが見つからない場合、PagerDutyユーザーを自動的に作成します。Pag​​erDutyでユーザーが見つからない場合、統合によって自動的にServiceNowのユーザーの電子メールアドレスに基づいてユーザーがプロビジョニングされます。

  • PagerDutyユーザーからの確認に基づいてのみ割り当て:有効にすると、PagerDutyで通知されたときにPagerDutyの割り当てがServiceNowで更新されます

ServiceNowオブジェクトをPagerDutyオブジェクトにマップする方法を選択する

PagerDuty→Configuration→PropertiesページでServiceNow to PagerDutyマッピングを選択するオプションでは、システム間の対応関係として以下の2つのオプションを使用できます。

  • ServiceNowの設定項目と割り当てグループをPagerDutyにマップする

    • PagerDutyサービスに設定項目をマップする

    • 割り当てグループをPagerDutyエスカレーションポリシーにマップする

  • ServiceNow割り当てグループをPagerDutyにマップする

    • 割り当てグループは、PagerDutyサービスとPagerDutyエスカレーションポリシーにマップされます

次の図は、構成アイテムと割り当てグループがPagerDutyにマップされているときに、両方のシステムのオブジェクト間のマッピングを表しています。

PD-SN-ci-object-mapping

PagerDutyへの設定項目のプロビジョニング

注:PagerDutyのプロパティでAssignment Groups map to PagerDutyを選択した場合は、 この手順をスキップできます。PagerDutyに設定項目をプロビジョニングする必要はありません。

PagerDutyに設定項目をプロビジョニングする前に、プロビジョニングする各設定項目に対応する割り当てグループを設定することをお勧めします。これにより、プロビジョニングプロセスが簡略化されます。単一の設定アイテムをプロビジョニングすると、割り当てグループが(エスカレーションポリシーとして)PagerDutyに存在することが確認されます。そうでない場合、対応する割当グループをPagerDutyエスカレーションポリシーとしてプロビジョニングします。

PagerDutyとのインテグレーションにより、各ServiceNow設定項目に対応するPagerDutyサービスを設定できます。これにより、新しいPagerDutyサービスとwebhook(ServiceNowに情報を送り返す必要があります)を迅速に生成する簡単な方法が提供されます。また、ServiceNow内の関連フィールドも入力します。

ベースcmdb_ciテーブルを拡張する設定項目は、PagerDutyサービスIDを含む同じフィールドを継承するため、PagerDutyにマップできます。これにより、ビジネスサービス、テクニカルサービス、アプリケーションのみのプロビジョニングが推奨されていますが、PagerDutyで任意のタイプの設定項目をサービスに簡単にマッピングできます。各設定項目タイプに対して、PagerDutyオブジェクトIDを表示するためには、そのフォームビューを変更する必要があります。

  1. ServiceNowインスタンス内のアプリケーションのリストでは、CIがPagerDutyにマップされている場合を除いて、PagerDutyサービスとPagerDuty webhookフィールドがすべてリストされているグループに対して空であることがわかります。 SN-ci-list-new-columns

  2. PagerDutyにプロビジョニングするアプリケーション(またはCI)を選択します。次に、Related Linksの下のProvision CI Into PagerDutyリンクをクリックして、PagerDutyインスタンスに展開します。 SN-ci-form-provision

  3. 構成アイテムが作成されるという通知が表示されます。完了したら、PagerDutyサービスとPagerDuty webhookフィールドにPagerDuty IDが入力されます。

  4. ほとんどの場合、対応するサービスとエスカレーションポリシーがPagerDutyで作成されていることがわかります。このサービスには、PagerDutyとServiceNowの間の双方向同期に必要なwebHookも自動的に作成されます。

割り当てグループをPagerDutyにプロビジョニングする

ServiceNowには、割り当てグループの概念があります。PagerDutyとのインテグレーションでは、各割り当てグループに対応するPagerDutyサービスとエスカレーションポリシーが用意されています。これにより、新しいPagerDutyサービスとエスカレーションポリシーを迅速に生成する簡単な方法が提供されます。また、ServiceNow内の関連フィールドも入力します。

[プロパティ]ページで選択したマッピングによっては、割り当てグループにPagerDuty属性が設定されません。

  • PagerDutyに割り当てグループマップを選択すると、各割り当てグループに対応するPagerDutyエスカレーション、サービス、webhook IDが割り当てられます。

  • 設定項目と割り当てグループをPagerDutyにマップすると、各割り当てグループにはPagerDutyエスカレーションIDのみが割り当てられます。PagerDutyサービスとwebhook IDは、設定項目にマッピングされます。

| 注:PagerDutyへのユーザープロビジョニング割り当てグループには、ServiceNowのアカ ウントにPagerDutyユーザーIDが割り当てられている必要があります

  1. PagerDutyにプロビジョニングする割り当てグループを選択します。次に、PagerDutyサービスのプロビジョニングリンクをクリックして、このグループをPagerDutyインスタンスにデプロイします。 SN-groups-form-related-links-provision

  2. 割り当てグループが作成されるという通知が表示されます。完了すると、PagerDutyサービス、PagerDutyエスカレーション、PagerDuty webhookフィールドが設定されます。

  3. ほとんどの場合、対応するサービスとエスカレーションポリシーがPagerDutyで作成されています。このサービスには、PagerDutyとServiceNowの間の双方向同期に必要なwebhookも自動的に作成されます。webhookにはURLの共有秘密情報が含まれており、通信のセキュリティが強化されています。

  4. グループリストビューのドロップダウンメニューから複数のグループを選択し、Provision Group into PagerDutyオプションをクリックして、複数のグループを一度にプロビジョニングすることもできます。 SN-groups-list-bulk-provision

PagerDutyへのユーザのプロビジョニング

  1. ServiceNowからPagerDutyへのユーザーのプロビジョニングが可能です。以下はServiceNowユーザーの一覧です。PagerDuty IDフィールドにすでに値が設定されているため、PagerDutyですでに作成されているユーザーを直接見ることができます。

  2. PagerDutyにまだプロビジョニングされていないユーザーを選択します。Provision PagerDuty Userのリンクをクリックして、PagerDutyアカウントに追加することができます。 SN-user-form-related-links

  3. 次に、ユーザーがプロビジョニングされているという通知が表示されます。完了するとPagerDuty IDフィールドに自動的に入力されます。ユーザーは同じ名前と電子メールアドレスでPagerDuty内にも表示されます。

  4. ServiceNowにBusiness PhoneまたはMobile phoneフィールドが設定されている場合、これらの設定はPagerDutyの連絡方法と通知ルールとして自動的にプロビジョニングされます。

  5. 複数のユーザーを一度にプロビジョニングするには、それらを選択し、[ユーザー]画面のドロップダウンメニューからProvision PagerDuty Userオプションをクリックします。 SN-user-list-bulk-provision

ServiceNowとPagerDutyが通信していることを確認する

PagerDutyとServiceNowが通信していることを確認するには、ServiceNowのグループにインシデントを割り当てます。以下は、PagerDutyサービスに結びついているDatabaseグループに割り当てられたインシデントです。その後、PagerDuty内のCAB Approvalエスカレーションポリシーに再割り当てされました。

SN-incident-worknotes-reassign

インシデントがPagerDutyで解決されると、それはServiceNowでも解決になります。また、その逆もあります。ServiceNowは、PagerDuty内で行われた活動のログも保持します。

注意:ServiceNowインスタンスにPagerDutyアプリケーションをうまくインストールして設定できたら、インシデントテーブルのincident.x_pd_integration_incidentカラムのインデックスを作成することをお勧めします。これにより、PagerDutyアプリケーションがインシデントテーブルを照会する際に最高の性能を出せることが保証されます。