完了までの推定時間: 2 時間
操作可能なコンポーネントのオーナー: TS
このドキュメントでは、Alertmanager ServiceNow Webhook を構成し、アクティブな ServiceNow チケット発行システム インスタンスでアラートを作成する手順について説明します。
31.1.1. 始める前に
ServiceNow Webhook を設定する前に、次の手順を行います。
- シークレット
midserver-secretを手動で作成します。 - TS-R0012 ランブックの手順に沿って、シークレットを正しく設定します。
yqがシステムにインストールされていることを確認します。root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4obs-system名前空間のオブジェクトにアクセスし、ServiceNow アプリケーションを管理するために必要な権限を取得するには、次のロールを付与するようセキュリティ管理者に依頼してください。- オブザーバビリティ デバッガ(ルート管理クラスタの場合は
observability-admin-debugger、組織管理者クラスタとシステム クラスタの場合はobservability-system-debugger) - Grafana 閲覧者(
grafana-viewer) - ServiceNow 管理者(
system-service-now-admin)
これらのロールの詳細については、インフラストラクチャ オペレーターのロールをご覧ください。
- オブザーバビリティ デバッガ(ルート管理クラスタの場合は
31.1.2. Webhook を設定する
Alertmanager ServiceNow Webhook を構成する手順は次のとおりです。
組織で ServiceNow Webhook を構成できます。
組織のシステム クラスタで ServiceNow Webhook を構成する場合は、インフラストラクチャ オペレータ(IO)に次の情報を使用して OPA-R0005 ランブックを実行するよう依頼します。
IO_GROUP環境変数の値は、ユーザーが属するユーザー グループです。CONSTRAINT_NAME環境変数の値はrestrict-system-project-namespace-resourcesです。
組織のアラートに基づいてインシデントを作成する ServiceNow サービス アカウントを作成します。
ServiceNow ウェブ インターフェースの URL を開きます。
https://support.gdchservices.GDC_URL/navpage.doGDC_URLは、Google Distributed Cloud(GDC)エアギャップ内の組織の URL に置き換えます。Operations Center の IT 組織名には、常に
gdchservicesを使用します。[すべて> ユーザー管理 > ユーザー] を選択します。
[New] をクリックします。
新しいウィンドウで、次の値を入力します。
- [ユーザー ID] フィールドに「
SVC_ALERT_ORG」と入力します。 - [名] フィールドに「
SVC_ALERT_ORG」と入力します。 - [Web サービスへのアクセスのみ] チェックボックスをオンにします。
ORGは組織の名前に置き換えます。ルート管理クラスタでこの手順を実行する場合は、ORG名に値rootを使用します。- [ユーザー ID] フィールドに「
[送信] をクリックします。
新しいユーザー レコードが ServiceNow アカウントのリストに表示されます。
itilロールをサービス アカウントに追加します。リストからユーザー レコードを開きます。
[ロール] タブをクリックし、[編集...] ボタンをクリックします。
[コレクション] メニューから
itilロールを選択します。[追加]()ボタンをクリックして、ロールを [ロールリスト] メニューに移動します。
[保存] をクリックします。
ServiceNow サービス アカウントのパスワードを設定します。
リストからユーザー レコードを開きます。
[パスワードを設定]、[生成] の順にクリックします。
ウィンドウに表示されたパスワードをコピーして、安全な場所に保管します。
[パスワードを保存] をクリックしてウィンドウを閉じます。
コマンドライン インターフェースを開きます。
次の環境変数を設定します。
export ORG=ORGANIZATION export SERVICENOW_INSTANCE_URL=SERVICENOW_INSTANCE_URL export SERVICENOW_USERNAME=SERVICENOW_USERNAME export SERVICENOW_PASSWORD=SERVICENOW_PASSWORD export SERVICENOW_AUTORESOLVE=SERVICENOW_AUTORESOLVE export SERVICENOW_AUTORESOLVE_REOPEN_DURATION=SERVICENOW_AUTORESOLVE_REOPEN_DURATION次のように置き換えます。
ORGANIZATION: 組織の名前SERVICENOW_INSTANCE_URL: ServiceNow ウェブ インターフェースの URL(例:https://support.gdchservices.GDC_URL)。SERVICENOW_USERNAME: ServiceNow サービス アカウントのユーザー名SERVICENOW_PASSWORD: ServiceNow サービス アカウントのパスワードSERVICENOW_AUTORESOLVE: 対応するアラートの発生が停止したら ServiceNow インシデントを自動的に解決する場合は「true」、それ以外の場合は「false」SERVICENOW_AUTORESOLVE_REOPEN_DURATION: 解決済みの ServiceNow インシデントが同じアラートの再発によってリオープンされるまでの期間。例: 「5m」、「30s」、「24h」など。
次のコマンドを実行します。
cat << EOF > ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: mon-alertmanager-servicenow-webhook spec: subComponentRef: "mon-alertmanager-servicenow-webhook" backend: operableParameters: servicenowCredentials: instanceName: ${SERVICENOW_INSTANCE_URL:?} username: ${SERVICENOW_USERNAME:?} password: ${SERVICENOW_PASSWORD:?} serviceNowSettings: autoResolve: ${SERVICENOW_AUTORESOLVE:?} autoResolveReopenDuration: ${SERVICENOW_AUTORESOLVE_REOPEN_DURATION:?} EOF cat << EOF > ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: meta-alertmanager-servicenow-webhook spec: subComponentRef: "mon-meta-monitoring" backend: operableParameters: servicenowCredentials: instanceName: ${SERVICENOW_INSTANCE_URL:?} username: ${SERVICENOW_USERNAME:?} password: ${SERVICENOW_PASSWORD:?} serviceNowSettings: autoResolve: ${SERVICENOW_AUTORESOLVE:?} autoResolveReopenDuration: ${SERVICENOW_AUTORESOLVE_REOPEN_DURATION:?} EOF cat << EOF > ~/ts-networking-subcomponentoverride.yaml apiVersion: lcm.private.gdc.goog/v1 kind: SubcomponentOverride metadata: name: ts-networking spec: subComponentRef: "ts-networking" backend: operableParameters: serviceNowEndpoint: ${SERVICENOW_INSTANCE_URL:?} EOF次の手順に沿って、クラスタで ServiceNow ウェブフックを構成します。
ルート管理クラスタ
次の環境変数を設定します。
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIG次のように置き換えます。
PATH_TO_ROOT_ADMIN_KUBECONFIG: ルート管理クラスタの kubeconfig ファイルのパス
Webhook のデプロイを見つけます。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-system出力には
READYステータスが表示され、次のサンプルのようになります。NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hconfigmapYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system出力は次のサンプルのようになります。
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hSecretYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-system出力は次のサンプルのようになります。
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hconfigmapYAML ファイルを構成します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml予想される出力:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdネットワークを構成します。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yaml予想される出力:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdWebhook デプロイを再起動します。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system出力は、次の例のように成功を確認します。
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedセカンダリ モニタリング スタックの Webhook デプロイを再起動します。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system出力は、次の例のように成功を確認します。
deployment.apps/alertmanager-servicenow-webhook restartedalertmanager-servicenow-webhookデプロイのログを確認して、構成を検証します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemログに文字列
listening on: :9877が含まれている場合、構成は完了しています。それ以外の場合は、トラブルシューティングのサポートをリクエストします。Webhook のデプロイを見つけます。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-system出力には
READYステータスが表示され、次のサンプルのようになります。NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hconfigmapYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system出力は次のサンプルのようになります。
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hSecretYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system出力は次のサンプルのようになります。
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hconfigmapYAML ファイルを構成します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml予想される出力:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdWebhook デプロイを再起動します。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system出力は、次の例のように成功を確認します。
deployment.apps/meta-alertmanager-servicenow-webhook restartedセカンダリ モニタリング スタックの Webhook デプロイを再起動します。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system出力は、次の例のように成功を確認します。
deployment.apps/meta-alertmanager-servicenow-webhook restartedmeta-alertmanager-servicenow-webhookデプロイのログを確認して、構成を検証します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemログに文字列
listening on: :9877が含まれている場合、構成は完了しています。それ以外の場合は、トラブルシューティングのサポートをリクエストします。
組織インフラストラクチャ クラスタ
次の環境変数を設定します。
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIG次のように置き換えます。
PATH_TO_ROOT_ADMIN_KUBECONFIG: ルート管理クラスタの kubeconfig ファイルのパスPATH_TO_INFRA_KUBECONFIG: インフラストラクチャ クラスタの kubeconfig ファイルのパス
Webhook のデプロイを見つけます。
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-system出力には
READYステータスが表示され、次のサンプルのようになります。NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hconfigmapYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system出力は次のサンプルのようになります。
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hSecretYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-system出力は次のサンプルのようになります。
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hconfigmapYAML ファイルを構成します。kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml予想される出力:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdネットワークを構成します。
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yaml予想される出力:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdWebhook デプロイを再起動します。
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system出力は、次の例のように成功を確認します。
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedセカンダリ モニタリング スタックの Webhook デプロイを再起動します。
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system出力は、次の例のように成功を確認します。
deployment.apps/alertmanager-servicenow-webhook restartedalertmanager-servicenow-webhookデプロイのログを確認して、構成を検証します。kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemログに文字列
listening on: :9877が含まれている場合、構成は完了しています。それ以外の場合は、トラブルシューティングのサポートをリクエストします。Webhook のデプロイを見つけます。
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-system出力には
READYステータスが表示され、次のサンプルのようになります。NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hconfigmapYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system出力は次のサンプルのようになります。
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hSecretYAML ファイルが存在するかどうかを確認します。kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system出力は次のサンプルのようになります。
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hconfigmapYAML ファイルを構成します。kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml予想される出力:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdWebhook デプロイを再起動します。
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system出力は、次の例のように成功を確認します。
deployment.apps/meta-alertmanager-servicenow-webhook restartedセカンダリ モニタリング スタックの Webhook デプロイを再起動します。
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-system出力は、次の例のように成功を確認します。
deployment.apps/meta-alertmanager-servicenow-webhook restartedmeta-alertmanager-servicenow-webhookデプロイのログを確認して、構成を検証します。kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemログに文字列
listening on: :9877が含まれている場合、構成は完了しています。それ以外の場合は、トラブルシューティングのサポートをリクエストします。
31.1.3. 設定を確認する
構成が成功したことを確認する手順は次のとおりです。
ServiceNow ウェブ インターフェースの URL を開きます。
https://support.gdchservices.GDC_URL/navpage.doGDC_URLは、Google Distributed Cloud(GDC)エアギャップ内の組織の URL に置き換えます。[サービスデスク] > [インシデント] ページに移動します。
GDC ユニバースの各組織に、短い説明が
IgnoreThisAlwaysFiringAlertのインシデントがあることを確認します。インシデントに次のフィールドが入力されていることを確認します。
- 数値
- 優先度
- 発信者
- コンポーネント コード
- ゾーン ID
- インシデントの状態
- 組織 ID
- ゾーン ID
- 簡単な説明
- 説明(指紋を含める必要があります)