31.1. Configura el webhook de Alertmanager ServiceNow

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:

  1. Crea manualmente el secreto midserver-secret.
  2. Sigue los pasos del manual TS-R0012 para configurar correctamente el secreto.
  3. Verifica que yq esté instalado en el sistema.

    root@bootstrapper:~# yq --version
    yq (https://github.com/mikefarah/yq/) version v4.40.4
    
  4. Para obtener los permisos que necesitas para acceder a los objetos en el espacio de nombres obs-system y administrar la aplicación de ServiceNow, pídele a tu administrador de seguridad que te otorgue los siguientes roles:

    • Debugger de observabilidad (observability-admin-debugger para el clúster de administrador raíz y observability-system-debugger para 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.

31.1.2. Configura el webhook

Sigue estos pasos para configurar el webhook de Alertmanager ServiceNow:

  1. 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_GROUP es el grupo de usuarios al que pertenece tu usuario.
    • El valor de la variable de entorno CONSTRAINT_NAME es restrict-system-project-namespace-resources.
  2. Crea una cuenta de servicio de ServiceNow para crear los incidentes según las alertas de una organización:

    1. Abre la URL de la interfaz web de ServiceNow:

      https://support.gdchservices.GDC_URL/navpage.do
      

      Reemplaza GDC_URL por la URL de tu organización en Google Distributed Cloud (GDC) aislado.

      Siempre usa gdchservices como el nombre de la organización de TI del Centro de Operaciones.

    2. Selecciona Todos > Administración de usuarios > Usuarios.

    3. Haz clic en Nuevo.

    4. 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 ORG por el nombre de tu organización. Cuando realices este paso en el clúster de administrador raíz, usa el valor root para el nombre ORG.

    5. Haz clic en Enviar.

      El nuevo registro de usuario aparecerá en la lista de cuentas de ServiceNow.

  3. Agrega el rol itil a la cuenta de servicio:

    1. Abre el registro de usuario de la lista.

    2. Haz clic en la pestaña Roles y, luego, en el botón Editar….

    3. Selecciona el rol itil en el menú Colección.

    4. Haz clic en el botón Agregar () para mover el rol al menú Lista de roles.

    5. Haz clic en Guardar.

  4. Establece la contraseña de la cuenta de servicio de ServiceNow:

    1. Abre el registro de usuario de la lista.

    2. Haz clic en Establecer contraseña y, luego, en Generar.

    3. Copia la contraseña que se muestra en la ventana y guárdala en un lugar seguro.

    4. Haz clic en Guardar contraseña y cierra la ventana.

  5. Abre la interfaz de línea de comandos.

  6. 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_DURATION
    

    Reemplaza lo siguiente:

    • ORGANIZATION: El nombre de tu organización
    • SERVICENOW_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 ServiceNow
    • SERVICENOW_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.
  7. 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:?}
    EOF
    
  8. Sigue estos pasos para configurar el webhook de ServiceNow en un clúster:

Clúster de administrador raíz

  1. Configura las siguientes variables de entorno:

    export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIG
    

    Reemplaza lo siguiente:

    • PATH_TO_ROOT_ADMIN_KUBECONFIG: Es la ruta de acceso al archivo kubeconfig del clúster de administrador raíz.
  2. Busca la implementación del webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado debe mostrar el estado READY y verse como la siguiente muestra:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    mon-alertmanager-servicenow-webhook-backend   1/1     1            1           8h
    
  3. Verifica si existe el archivo YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                         DATA   AGE
    mon-alertmanager-servicenow-webhookbackend   1      8h
    
  4. Verifica si existe el archivo YAML Secret:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                          TYPE     DATA   AGE
    mon-alertmanager-servicenow-webhook-backend   Opaque   2      8h
    
  5. Configura el archivo YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Resultado esperado:

    subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook created
    
  6. Configura las herramientas de redes:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yaml
    

    Resultado esperado:

    subcomponentoverride.lcm.private.gdc.goog/ts-networking created
    
  7. Reinicia la implementación del webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/mon-alertmanager-servicenow-webhook-backend restarted
    
  8. Reinicia 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-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/alertmanager-servicenow-webhook restarted
    
  9. Verifica los registros de la implementación de alertmanager-servicenow-webhook para validar la configuración:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    
  10. Si los registros contienen la cadena listening on: :9877, significa que la configuración se completó. De lo contrario, solicita asistencia para solucionar el problema.

  11. Busca la implementación del webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado debe mostrar el estado READY y verse como la siguiente muestra:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    meta-alertmanager-servicenow-webhook          1/1     1            1           8h
    
  12. Verifica si existe el archivo YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                         DATA   AGE
    meta-alertmanager-servicenow-webhook         1      8h
    
  13. Verifica si existe el archivo YAML Secret:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                          TYPE     DATA   AGE
    meta-alertmanager-servicenow-webhook          Opaque   2      8h
    
  14. Configura el archivo YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Resultado esperado:

    subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook created
    
  15. Reinicia la implementación del webhook:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  16. Reinicia 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-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  17. Verifica los registros de la implementación de meta-alertmanager-servicenow-webhook para validar la configuración:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-system
    
  18. Si 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

  1. Configura las siguientes variables de entorno:

    export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG
    export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIG
    

    Reemplaza 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.
  2. Busca la implementación del webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado debe mostrar el estado READY y verse como la siguiente muestra:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    mon-alertmanager-servicenow-webhook-backend   1/1     1            1           8h
    
  3. Verifica si existe el archivo YAML configmap:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                         DATA   AGE
    mon-alertmanager-servicenow-webhookbackend   1      8h
    
  4. Verifica si existe el archivo YAML Secret:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                          TYPE     DATA   AGE
    mon-alertmanager-servicenow-webhook-backend   Opaque   2      8h
    
  5. Configura el archivo YAML configmap:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Resultado esperado:

    subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook created
    
  6. Configura las herramientas de redes:

    kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yaml
    

    Resultado esperado:

    subcomponentoverride.lcm.private.gdc.goog/ts-networking created
    
  7. Reinicia la implementación del webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/mon-alertmanager-servicenow-webhook-backend restarted
    
  8. Reinicia 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-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/alertmanager-servicenow-webhook restarted
    
  9. Verifica los registros de la implementación de alertmanager-servicenow-webhook para validar la configuración:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-system
    
  10. Si los registros contienen la cadena listening on: :9877, significa que la configuración se completó. De lo contrario, solicita asistencia para solucionar el problema.

  11. Busca la implementación del webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado debe mostrar el estado READY y verse como la siguiente muestra:

    NAME                                          READY   UP-TO-DATE   AVAILABLE   AGE
    meta-alertmanager-servicenow-webhook          1/1     1            1           8h
    
  12. Verifica si existe el archivo YAML configmap:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                         DATA   AGE
    meta-alertmanager-servicenow-webhook         1      8h
    
  13. Verifica si existe el archivo YAML Secret:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado debe verse como la siguiente muestra:

    NAME                                          TYPE     DATA   AGE
    meta-alertmanager-servicenow-webhook          Opaque   2      8h
    
  14. Configura el archivo YAML configmap:

    kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yaml
    

    Resultado esperado:

    subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook created
    
  15. Reinicia la implementación del webhook:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  16. Reinicia 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-system
    

    El resultado verifica el éxito, como se ve en el siguiente ejemplo:

    deployment.apps/meta-alertmanager-servicenow-webhook restarted
    
  17. Verifica los registros de la implementación de meta-alertmanager-servicenow-webhook para validar la configuración:

    kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-system
    
  18. Si 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:

  1. Abre la URL de la interfaz web de ServiceNow:

    https://support.gdchservices.GDC_URL/navpage.do
    

    Reemplaza GDC_URL por la URL de tu organización en Google Distributed Cloud (GDC) aislado.

  2. Navega a la página Service Desk > Incidents.

  3. Verifica que haya un incidente con la descripción breve IgnoreThisAlwaysFiringAlert para cada organización del universo de GDC.

  4. 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)