Tiempo estimado para completar la actividad: 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 tickets de ServiceNow.
31.1.1. Antes de comenzar
Antes de configurar el webhook de ServiceNow, sigue estos pasos:
- Crea manualmente el secreto
midserver-secret. - Sigue los pasos del manual TS-R0012 para configurar correctamente el secreto.
Verifica 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 en el espacio de nombres
obs-systemy administrar la aplicación de ServiceNow, pídele a tu administrador de seguridad que te otorgue los siguientes roles:- Debugger 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) - Visualizador 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.
- Debugger de observabilidad (
31.1.2. Configura el webhook
Sigue estos pasos para configurar el webhook de Alertmanager ServiceNow:
Puedes configurar el webhook de ServiceNow en una organización.
Si deseas configurar el webhook de ServiceNow en el clúster del sistema de una organización, pídele a tu operador de infraestructura (IO) que ejecute el manual OPA-R0005 con la siguiente información:
- El valor de la variable de entorno
IO_GROUPes el grupo de usuarios al que pertenece tu 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 los incidentes según las alertas de una organización:
Abre la URL de la interfaz web de ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doReemplaza
GDC_URLpor la URL de tu organización en Google Distributed Cloud (GDC) aislado.Siempre usa
gdchservicescomo el nombre de la organización de TI del Centro de Operaciones.Selecciona Todos > Administración de usuarios > Usuarios.
Haz clic en Nuevo.
En la ventana nueva, ingresa los siguientes valores:
- En el campo ID de usuario, ingresa
SVC_ALERT_ORG. - En el campo Nombre, ingresa
SVC_ALERT_ORG. - Marca la casilla de verificación Solo acceso a servicios web.
Reemplaza
ORGpor el nombre de tu organización. Cuando realices este paso en el clúster de administrador raíz, usa el valorrootpara el nombreORG.- En el campo ID de usuario, ingresa
Haz clic en Enviar.
El nuevo registro de usuario aparecerá en la lista de cuentas de ServiceNow.
Agrega el rol
itila la cuenta de servicio:Abre el registro de usuario de la lista.
Haz clic en la pestaña Roles y, luego, en el botón Editar….
Selecciona el rol
itilen el menú Colección.Haz clic en el botón Agregar () para mover el rol al menú Lista de roles.
Haz clic en Guardar.
Establece la contraseña de la cuenta de servicio de ServiceNow:
Abre el registro de usuario de la lista.
Haz clic en Establecer contraseña y, luego, en Generar.
Copia la contraseña que se muestra 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.
Configura 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_DURATIONReemplaza lo siguiente:
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: Es el nombre de usuario de la cuenta de servicio de ServiceNow.SERVICENOW_PASSWORD: La contraseña de la cuenta de servicio de ServiceNowSERVICENOW_AUTORESOLVE: "true" si deseas resolver automáticamente los incidentes de ServiceNow una vez que deje de activarse la alerta correspondiente; de lo contrario, "false"SERVICENOW_AUTORESOLVE_REOPEN_DURATION: Es la duración dentro de la cual se puede reabrir un incidente resuelto de ServiceNow si se vuelve a activar la misma alerta. Ejemplos: "5 min", "30 s", "24 h", etcétera.
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
Configura las siguientes variables de entorno:
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIGReemplaza lo siguiente:
PATH_TO_ROOT_ADMIN_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster de administrador raíz.
Busca la implementación del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemEl resultado debe mostrar el estado
READYy verse como la siguiente muestra:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVerifica si existe el archivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVerifica si existe el archivo YAML
Secret:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigura el archivo YAML
configmap: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 las herramientas de redes:
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-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicia la implementación del webhook de la pila de supervisión secundaria:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/alertmanager-servicenow-webhook restartedVerifica 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 completó. De lo contrario, solicita asistencia para solucionar el problema.Busca la implementación del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemEl resultado debe mostrar el estado
READYy verse como la siguiente muestra:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVerifica si existe el archivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVerifica si existe el archivo YAML
Secret:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigura el archivo YAML
configmap: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-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicia la implementación del webhook de la pila de supervisión secundaria:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedVerifica 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 completó. De lo contrario, solicita asistencia para solucionar el problema.
Clúster de infraestructura de la organización
Configura las siguientes variables de entorno:
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIGReemplaza lo siguiente:
PATH_TO_ROOT_ADMIN_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster de administrador raíz.PATH_TO_INFRA_KUBECONFIG: Es la ruta de acceso del archivo kubeconfig del clúster de infraestructura.
Busca la implementación del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemEl resultado debe mostrar el estado
READYy verse como la siguiente muestra:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVerifica si existe el archivo YAML
configmap:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVerifica si existe el archivo YAML
Secret:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigura el archivo YAML
configmap: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 las herramientas de redes:
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-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicia la implementación del webhook de la pila de supervisión secundaria:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/alertmanager-servicenow-webhook restartedVerifica 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 completó. De lo contrario, solicita asistencia para solucionar el problema.Busca la implementación del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemEl resultado debe mostrar el estado
READYy verse como la siguiente muestra:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVerifica si existe el archivo YAML
configmap:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVerifica si existe el archivo YAML
Secret:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemEl resultado debe verse como la siguiente muestra:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigura el archivo YAML
configmap: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-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicia la implementación del webhook de la pila de supervisión secundaria:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemEl resultado verifica el éxito, como se ve en el siguiente ejemplo:
deployment.apps/meta-alertmanager-servicenow-webhook restartedVerifica 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 completó. De lo contrario, solicita asistencia para solucionar el problema.
31.1.3. Verifica la configuración
Sigue estos pasos para verificar que la configuración se haya realizado correctamente:
Abre la URL de la interfaz web de ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doReemplaza
GDC_URLpor la URL de tu organización en Google Distributed Cloud (GDC) aislado.Navega a la página Service Desk > Incidents.
Verifica que haya un incidente con la descripción breve
IgnoreThisAlwaysFiringAlertpara cada organización del universo de GDC.Verifica que los siguientes campos estén completados en el incidente:
- Número
- Prioridad
- Emisor
- Código del componente
- ID de zona
- Estado del incidente
- ID de la organización
- ID de zona
- Descripción breve
- Descripción (debe contener una huella dactilar)