Durée estimée : 2 heures
Propriétaire du composant opérationnel : TS
Ce document contient les instructions permettant de configurer le webhook Alertmanager ServiceNow et de créer des alertes dans l'instance active du système de gestion des tickets ServiceNow.
31.1.1. Avant de commencer
Avant de configurer le webhook ServiceNow, procédez comme suit :
- Créez manuellement le secret
midserver-secret. - Suivez les étapes du runbook TS-R0012 pour configurer correctement le secret.
Vérifiez que
yqest installé sur le système.root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4Pour obtenir les autorisations nécessaires pour accéder aux objets dans l'espace de noms
obs-systemet gérer l'application ServiceNow, demandez à votre administrateur de sécurité de vous accorder les rôles suivants :- Débogueur d'observabilité (
observability-admin-debuggerpour le cluster d'administrateur racine etobservability-system-debuggerpour les clusters d'administrateur d'organisation et système) - Lecteur Grafana (
grafana-viewer) - Administrateur ServiceNow (
system-service-now-admin)
Pour en savoir plus sur ces rôles, consultez Rôles d'opérateur d'infrastructure.
- Débogueur d'observabilité (
31.1.2. Configurer le webhook
Pour configurer le webhook Alertmanager ServiceNow :
Vous pouvez configurer le webhook ServiceNow dans une organisation.
Si vous souhaitez configurer le webhook ServiceNow dans le cluster système d'une organisation, demandez à votre opérateur d'infrastructure (IO) d'exécuter le runbook OPA-R0005 avec les informations suivantes :
- La valeur de la variable d'environnement
IO_GROUPcorrespond au groupe d'utilisateurs auquel appartient votre utilisateur. - La valeur de la variable d'environnement
CONSTRAINT_NAMEestrestrict-system-project-namespace-resources.
- La valeur de la variable d'environnement
Créez un compte de service ServiceNow pour créer des incidents en fonction des alertes d'une organisation :
Ouvrez l'URL de l'interface Web ServiceNow :
https://support.gdchservices.GDC_URL/navpage.doRemplacez
GDC_URLpar l'URL de votre organisation dans Google Distributed Cloud (GDC) air-gapped.Utilisez toujours
gdchservicescomme nom de l'organisation informatique du centre d'opérations.Sélectionnez Tous > Administration des utilisateurs > Utilisateurs.
Cliquez sur New (Nouveau).
Dans la nouvelle fenêtre, saisissez les valeurs suivantes :
- Dans le champ ID utilisateur, saisissez
SVC_ALERT_ORG. - Dans le champ Prénom, saisissez
SVC_ALERT_ORG. - Cochez la case Web service access only (Accès au service Web uniquement).
Remplacez
ORGpar le nom de votre organisation. Lorsque vous effectuez cette étape dans le cluster d'administrateur racine, utilisez la valeurrootpour le nomORG.- Dans le champ ID utilisateur, saisissez
Cliquez sur Envoyer.
Le nouvel enregistrement utilisateur apparaît dans la liste des comptes ServiceNow.
Ajoutez le rôle
itilau compte de service :Ouvrez la fiche utilisateur dans la liste.
Cliquez sur l'onglet Rôles, puis sur le bouton Modifier….
Sélectionnez le rôle
itildans le menu Collection.Cliquez sur le bouton Ajouter () pour déplacer le rôle vers le menu Liste des rôles.
Cliquez sur Enregistrer.
Définissez le mot de passe du compte de service ServiceNow :
Ouvrez la fiche utilisateur dans la liste.
Cliquez sur Définir un mot de passe, puis sur Générer.
Copiez le mot de passe affiché dans la fenêtre et stockez-le dans un endroit sûr.
Cliquez sur Enregistrer le mot de passe et fermez la fenêtre.
Ouvrez l'interface de ligne de commande.
Définissez les variables d'environnement suivantes :
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_DURATIONRemplacez les éléments suivants :
ORGANIZATION: nom de votre organisationSERVICENOW_INSTANCE_URL: URL de l'interface Web ServiceNow, par exemplehttps://support.gdchservices.GDC_URL.SERVICENOW_USERNAME: nom d'utilisateur du compte de service ServiceNowSERVICENOW_PASSWORD: mot de passe du compte de service ServiceNowSERVICENOW_AUTORESOLVE: "true" si vous souhaitez résoudre automatiquement les incidents ServiceNow une fois que l'alerte correspondante cesse de se déclencher, sinon "false"SERVICENOW_AUTORESOLVE_REOPEN_DURATION: durée pendant laquelle un incident ServiceNow résolu peut être rouvert si la même alerte se déclenche à nouveau. Exemples : "5m", "30s", "24h", etc.
Exécutez la commande suivante :
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:?} EOFSuivez les étapes ci-dessous pour configurer le webhook ServiceNow dans un cluster :
Cluster d'administrateur racine
Définissez les variables d'environnement suivantes :
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIGRemplacez les éléments suivants :
PATH_TO_ROOT_ADMIN_KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster d'administrateur racine
Recherchez le déploiement du webhook :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat doit afficher l'état
READYet ressembler à l'exemple suivant :NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVérifiez si le fichier YAML
configmapexiste :kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVérifiez si le fichier YAML
Secretexiste :kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigurez le fichier YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlRésultat attendu :
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigurez la mise en réseau :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yamlRésultat attendu :
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdRedémarrez le déploiement du webhook :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedRedémarrez le déploiement du webhook de la pile de surveillance secondaire :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/alertmanager-servicenow-webhook restartedVérifiez les journaux du déploiement
alertmanager-servicenow-webhookpour valider la configuration :kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSi les journaux contiennent la chaîne
listening on: :9877, la configuration est terminée. Sinon, demandez de l'aide pour résoudre le problème.Recherchez le déploiement du webhook :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemLe résultat doit afficher l'état
READYet ressembler à l'exemple suivant :NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVérifiez si le fichier YAML
configmapexiste :kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVérifiez si le fichier YAML
Secretexiste :kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigurez le fichier YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlRésultat attendu :
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdRedémarrez le déploiement du webhook :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/meta-alertmanager-servicenow-webhook restartedRedémarrez le déploiement du webhook de la pile de surveillance secondaire :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/meta-alertmanager-servicenow-webhook restartedVérifiez les journaux du déploiement
meta-alertmanager-servicenow-webhookpour valider la configuration :kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSi les journaux contiennent la chaîne
listening on: :9877, la configuration est terminée. Sinon, demandez de l'aide pour résoudre le problème.
Cluster d'infrastructure d'organisation
Définissez les variables d'environnement suivantes :
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIGRemplacez les éléments suivants :
PATH_TO_ROOT_ADMIN_KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster d'administrateur racinePATH_TO_INFRA_KUBECONFIG: chemin d'accès au fichier kubeconfig du cluster d'infrastructure
Recherchez le déploiement du webhook :
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat doit afficher l'état
READYet ressembler à l'exemple suivant :NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVérifiez si le fichier YAML
configmapexiste :kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVérifiez si le fichier YAML
Secretexiste :kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigurez le fichier YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlRésultat attendu :
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigurez la mise en réseau :
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yamlRésultat attendu :
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdRedémarrez le déploiement du webhook :
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedRedémarrez le déploiement du webhook de la pile de surveillance secondaire :
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/alertmanager-servicenow-webhook restartedVérifiez les journaux du déploiement
alertmanager-servicenow-webhookpour valider la configuration :kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSi les journaux contiennent la chaîne
listening on: :9877, la configuration est terminée. Sinon, demandez de l'aide pour résoudre le problème.Recherchez le déploiement du webhook :
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemLe résultat doit afficher l'état
READYet ressembler à l'exemple suivant :NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVérifiez si le fichier YAML
configmapexiste :kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVérifiez si le fichier YAML
Secretexiste :kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemLe résultat doit ressembler à l'exemple suivant :
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigurez le fichier YAML
configmap:kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlRésultat attendu :
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdRedémarrez le déploiement du webhook :
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/meta-alertmanager-servicenow-webhook restartedRedémarrez le déploiement du webhook de la pile de surveillance secondaire :
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemLe résultat confirme la réussite de l'opération, comme dans l'exemple suivant :
deployment.apps/meta-alertmanager-servicenow-webhook restartedVérifiez les journaux du déploiement
meta-alertmanager-servicenow-webhookpour valider la configuration :kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSi les journaux contiennent la chaîne
listening on: :9877, la configuration est terminée. Sinon, demandez de l'aide pour résoudre le problème.
31.1.3. Vérifier la configuration
Suivez ces étapes pour vérifier que la configuration a réussi :
Ouvrez l'URL de l'interface Web ServiceNow :
https://support.gdchservices.GDC_URL/navpage.doRemplacez
GDC_URLpar l'URL de votre organisation dans Google Distributed Cloud (GDC) air-gapped.Accédez à la page Service Desk > Incidents.
Vérifiez qu'il existe un incident avec la brève description
IgnoreThisAlwaysFiringAlertpour chaque organisation de l'univers GDC.Vérifiez que les champs suivants sont renseignés dans l'incident :
- Nombre
- Priorité
- Appelant
- Code du composant
- ID de zone
- État de l'incident
- ID de l'organisation
- ID de zone
- Brève description
- Description (elle doit contenir une empreinte digitale)