預計完成時間: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.4如要取得存取
obs-system命名空間中物件的權限,以及管理 ServiceNow 應用程式,請要求安全管理員授予下列角色:- 可觀測性 Debugger (根管理員叢集為
observability-admin-debugger,機構管理員和系統叢集為observability-system-debugger) - Grafana 檢視者 (
grafana-viewer) - ServiceNow 管理員 (
system-service-now-admin)
如要進一步瞭解這些角色,請參閱「基礎架構運算子角色」。
- 可觀測性 Debugger (根管理員叢集為
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 網頁介面網址:
https://support.gdchservices.GDC_URL/navpage.do將
GDC_URL替換為 Google Distributed Cloud (GDC) 實體隔離環境中貴機構的網址。請一律使用
gdchservices做為 Operations Center IT 機構名稱。依序選取「All」(全部)>「User Administration」(使用者管理) >「Users」(使用者)。
點選「New」。
在新視窗中輸入下列值:
- 在「User ID」(使用者 ID) 欄位中輸入
SVC_ALERT_ORG。 - 在「名字」欄位中輸入
SVC_ALERT_ORG。 - 勾選「Web service access only」(僅限存取 Web 服務) 核取方塊。
並將
ORG替換為貴機構的名稱。在根管理員叢集中執行這個步驟時,請使用值root做為ORG名稱。- 在「User ID」(使用者 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 網頁介面網址,例如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 Webhook:
根管理員叢集
設定下列環境變數:
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 8h檢查
configmapYAML 檔案是否存在:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system輸出內容必須與下列範例類似:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8h檢查
SecretYAML 檔案是否存在: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 8h設定
configmapYAML 檔案: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 created重新啟動 Webhook 部署作業:
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 restarted檢查
alertmanager-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 8h檢查
configmapYAML 檔案是否存在:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system輸出內容必須與下列範例類似:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8h檢查
SecretYAML 檔案是否存在:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system輸出內容必須與下列範例類似:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8h設定
configmapYAML 檔案:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml預期輸出內容:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook created重新啟動 Webhook 部署作業:
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 restarted檢查
meta-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 8h檢查
configmapYAML 檔案是否存在:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system輸出內容必須與下列範例類似:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8h檢查
SecretYAML 檔案是否存在: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 8h設定
configmapYAML 檔案: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 created重新啟動 Webhook 部署作業:
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 restarted檢查
alertmanager-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 8h檢查
configmapYAML 檔案是否存在:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system輸出內容必須與下列範例類似:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8h檢查
SecretYAML 檔案是否存在:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system輸出內容必須與下列範例類似:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8h設定
configmapYAML 檔案:kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml預期輸出內容:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook created重新啟動 Webhook 部署作業:
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 restarted檢查
meta-alertmanager-servicenow-webhook部署作業的記錄,驗證設定:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-system如果記錄包含字串
listening on: :9877,表示設定完成。否則,請要求疑難排解協助。
31.1.3. 驗證設定
請按照下列步驟確認設定是否成功:
開啟 ServiceNow 網頁介面網址:
https://support.gdchservices.GDC_URL/navpage.do將
GDC_URL替換為 Google Distributed Cloud (GDC) 實體隔離環境中貴機構的網址。前往「Service Desk」 >「Incidents」頁面。
確認 GDC 宇宙中的每個機構都有簡短說明為
IgnoreThisAlwaysFiringAlert的事件。確認事件中已填入下列欄位:
- 數字
- 優先順序
- 撥話者
- 元件代碼
- 可用區 ID
- 事件狀態
- 機構 ID
- 可用區 ID
- 簡短說明
- 說明 (必須包含指紋)