预计完成时间:2 小时
可操作组件的所有者:TS
本文档包含有关如何配置 Alertmanager ServiceNow Webhook 的说明,可让您在有效的 ServiceNow 工单系统实例中创建提醒。
31.1.1. 准备工作
在设置 ServiceNow 网络钩子之前,请完成以下步骤:
- 手动创建 Secret
midserver-secret。 - 请按照 TS-R0012 运行手册中的步骤正确设置密钥。
验证
yq是否已安装在系统上。root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4如需获得访问
obs-system命名空间中的对象和管理 ServiceNow 应用所需的权限,请让 Security Admin 为您授予以下角色:- 可观测性调试器(根管理员集群为
observability-admin-debugger,组织管理员集群和系统集群为observability-system-debugger) - Grafana Viewer (
grafana-viewer) - ServiceNow Admin (
system-service-now-admin)
如需详细了解这些角色,请参阅基础架构运维人员角色。
- 可观测性调试器(根管理员集群为
31.1.2. 设置网络钩子
请按照以下步骤配置 Alertmanager ServiceNow webhook:
您可以在组织中配置 ServiceNow 网络钩子。
如果您想在组织中的系统集群中配置 ServiceNow webhook,请让您的基础设施运维人员 (IO) 运行 OPA-R0005 runbook,并提供以下信息:
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作为运营中心 IT 组织的名称。依次选择全部> 用户管理 > 用户。
点击 New(新建)。
在新窗口中,输入以下值:
- 在用户 ID 字段中,输入
SVC_ALERT_ORG。 - 在名字字段中,输入
SVC_ALERT_ORG。 - 选中仅限 Web 服务访问复选框。
将
ORG替换为您的组织名称。在根管理员集群中执行此步骤时,请使用值root作为ORG名称。- 在用户 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 Web 界面网址,例如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 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重启网络钩子部署:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system输出会验证成功,如以下示例所示:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restarted重启辅助监控堆栈的网络钩子部署:
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重启网络钩子部署:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system输出会验证成功,如以下示例所示:
deployment.apps/meta-alertmanager-servicenow-webhook restarted重启辅助监控堆栈的网络钩子部署:
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重启网络钩子部署:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system输出会验证成功,如以下示例所示:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restarted重启辅助监控堆栈的网络钩子部署:
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重启网络钩子部署:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system输出会验证成功,如以下示例所示:
deployment.apps/meta-alertmanager-servicenow-webhook restarted重启辅助监控堆栈的网络钩子部署:
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) 网闸隔离环境中的组织网址。依次前往服务台 > 突发事件页面。
检查 GDC 宇宙中的每个组织是否都有简短说明为
IgnoreThisAlwaysFiringAlert的突发事件。检查事件中是否已填充以下字段:
- 数字
- 优先级
- 发起者
- 组件代码
- 区域 ID
- 突发事件状态
- 组织 ID
- 区域 ID
- 简短说明
- 说明(必须包含指纹)