Tiempo estimado para completarlo: 2 horas
Propietario del componente operable: TS
En este documento se incluyen las instrucciones para configurar el webhook de Alertmanager ServiceNow y crear alertas en la instancia activa del sistema de asistencia de ServiceNow.
31.1.1. Antes de empezar
Antes de configurar el webhook de ServiceNow, sigue estos pasos:
- Crea el secreto
midserver-secretmanualmente. - Sigue los pasos del runbook TS-R0012 para configurar correctamente el secreto.
Comprueba que
yqesté instalado en el sistema.root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4Para obtener los permisos que necesitas para acceder a los objetos del espacio de nombres
obs-systemy gestionar la aplicación ServiceNow, pide a tu administrador de seguridad que te conceda los siguientes roles:- Depurador de observabilidad (
observability-admin-debuggerpara el clúster de administrador raíz yobservability-system-debuggerpara los clústeres de administrador de la organización y del sistema) - Lector de Grafana (
grafana-viewer) - Administrador de ServiceNow (
system-service-now-admin)
Para obtener más información sobre estos roles, consulta Roles de operador de infraestructura.
- Depurador de observabilidad (
31.1.2. Configurar el webhook
Sigue estos pasos para configurar el webhook de Alertmanager ServiceNow:
Puedes configurar el webhook de ServiceNow en una organización.
Si quieres configurar el webhook de ServiceNow en el clúster del sistema de una organización, pide a tu operador de infraestructura que ejecute el runbook OPA-R0005 con la siguiente información:
- El valor de la variable de entorno
IO_GROUPes el grupo de usuarios al que pertenece el usuario. - El valor de la variable de entorno
CONSTRAINT_NAMEesrestrict-system-project-namespace-resources.
- El valor de la variable de entorno
Crea una cuenta de servicio de ServiceNow para crear las incidencias basadas en las alertas de una organización:
Abre la URL de la interfaz web de ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSustituye
GDC_URLpor la URL de tu organización en Google Distributed Cloud (GDC) con air gap.Usa siempre
gdchservicescomo nombre de tu organización de TI de Operations Center.Seleccione Todos > Administración de usuarios > Usuarios.
Haz clic en New (Nuevo).
En la nueva ventana, introduce los siguientes valores:
- En el campo User ID (ID de usuario), introduce
SVC_ALERT_ORG. - En el campo Nombre, introduce
SVC_ALERT_ORG. - Marca la casilla Solo acceso a servicios web.
Sustituye
ORGpor el nombre de tu organización. Cuando realice este paso en el clúster de administrador raíz, use el valorrootpara el nombreORG.- En el campo User ID (ID de usuario), introduce
Haz clic en Enviar.
El nuevo registro de usuario aparece en la lista de cuentas de ServiceNow.
Añade el rol
itila la cuenta de servicio:Abre el registro de usuario de la lista.
Haz clic en la pestaña Roles y, a continuación, en el botón Editar....
Selecciona el rol
itilen el menú Colección.Haz clic en el botón Añadir () para mover el rol al menú Lista de roles.
Haz clic en Guardar.
Define la contraseña de la cuenta de servicio de ServiceNow:
Abre el registro de usuario de la lista.
Haz clic en Definir contraseña y, a continuación, en Generar.
Copia la contraseña que aparece en la ventana y guárdala en un lugar seguro.
Haz clic en Guardar contraseña y cierra la ventana.
Abre la interfaz de línea de comandos.
Define las siguientes variables de entorno:
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_DURATIONHaz los cambios siguientes:
ORGANIZATION: el nombre de tu organizaciónSERVICENOW_INSTANCE_URL: la URL de la interfaz web de ServiceNow, por ejemplo,https://support.gdchservices.GDC_URL.SERVICENOW_USERNAME: el nombre de usuario de la cuenta de servicio de ServiceNowSERVICENOW_PASSWORD: la contraseña de la cuenta de servicio de ServiceNowSERVICENOW_AUTORESOLVE: "true" si quieres que los incidentes de ServiceNow se resuelvan automáticamente cuando deje de activarse la alerta correspondiente; de lo contrario, "false".SERVICENOW_AUTORESOLVE_REOPEN_DURATION: la duración durante la cual se puede volver a abrir un incidente de ServiceNow resuelto si se vuelve a activar la misma alerta. Por ejemplo: "5m", "30s", "24h", etc.
Ejecuta el siguiente comando:
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:?} EOFSigue estos pasos para configurar el webhook de ServiceNow en un clúster:
Clúster de administrador raíz
Define las siguientes variables de entorno:
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIGHaz los cambios siguientes:
PATH_TO_ROOT_ADMIN_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administrador raíz
Busca el despliegue del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida debe mostrar el estado
READYy tener el siguiente aspecto:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hComprueba si existe el archivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida debe tener el siguiente aspecto:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hComprueba si existe el archivo YAML
Secret:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida debe tener el siguiente aspecto:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigura el archivo
configmapYAML:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigura la red:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdReinicia la implementación del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicia la implementación del webhook de la pila de monitorización secundaria:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/alertmanager-servicenow-webhook restartedConsulta los registros de la implementación de
alertmanager-servicenow-webhookpara validar la configuración:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSi los registros contienen la cadena
listening on: :9877, significa que la configuración se ha completado. Si no, solicita asistencia para solucionar el problema.Busca el despliegue del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemLa salida debe mostrar el estado
READYy tener el siguiente aspecto:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hComprueba si existe el archivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemLa salida debe tener el siguiente aspecto:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hComprueba si existe el archivo YAML
Secret:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemLa salida debe tener el siguiente aspecto:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigura el archivo
configmapYAML:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdReinicia la implementación del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicia la implementación del webhook de la pila de monitorización secundaria:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedConsulta los registros de la implementación de
meta-alertmanager-servicenow-webhookpara validar la configuración:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSi los registros contienen la cadena
listening on: :9877, significa que la configuración se ha completado. Si no, solicita asistencia para solucionar el problema.
Clúster de infraestructura de la organización
Define las siguientes variables de entorno:
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIGHaz los cambios siguientes:
PATH_TO_ROOT_ADMIN_KUBECONFIG: la ruta del archivo kubeconfig del clúster de administrador raízPATH_TO_INFRA_KUBECONFIG: la ruta del archivo kubeconfig del clúster de infraestructura
Busca el despliegue del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida debe mostrar el estado
READYy tener el siguiente aspecto:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hComprueba si existe el archivo YAML
configmap:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida debe tener el siguiente aspecto:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hComprueba si existe el archivo YAML
Secret:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida debe tener el siguiente aspecto:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigura el archivo
configmapYAML:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigura la red:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdReinicia la implementación del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicia la implementación del webhook de la pila de monitorización secundaria:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/alertmanager-servicenow-webhook restartedConsulta los registros de la implementación de
alertmanager-servicenow-webhookpara validar la configuración:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSi los registros contienen la cadena
listening on: :9877, significa que la configuración se ha completado. Si no, solicita asistencia para solucionar el problema.Busca el despliegue del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemLa salida debe mostrar el estado
READYy tener el siguiente aspecto:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hComprueba si existe el archivo YAML
configmap:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemLa salida debe tener el siguiente aspecto:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hComprueba si existe el archivo YAML
Secret:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemLa salida debe tener el siguiente aspecto:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigura el archivo
configmapYAML:kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdReinicia la implementación del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicia la implementación del webhook de la pila de monitorización secundaria:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLa salida verifica que el proceso se ha completado correctamente, como se muestra en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedConsulta los registros de la implementación de
meta-alertmanager-servicenow-webhookpara validar la configuración:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSi los registros contienen la cadena
listening on: :9877, significa que la configuración se ha completado. Si no, solicita asistencia para solucionar el problema.
31.1.3. Verifica la configuración
Sigue estos pasos para comprobar que la configuración se ha realizado correctamente:
Abre la URL de la interfaz web de ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSustituye
GDC_URLpor la URL de tu organización en Google Distributed Cloud (GDC) con air gap.Vaya a la página Mesa de asistencia > Incidencias.
Comprueba que haya un incidente con la descripción breve
IgnoreThisAlwaysFiringAlertpara cada organización del universo de GDC.Comprueba que se hayan rellenado los siguientes campos del incidente:
- Número
- Prioridad
- Persona que llama
- Código de componente
- ID de zona
- Estado del incidente
- ID de organización
- ID de zona
- Descripción breve
- Descripción (debe incluir una huella digital)