Tempo stimato per il completamento: 2 ore
Proprietario del componente utilizzabile: TS
Questo documento contiene le istruzioni per configurare il webhook Alertmanager ServiceNow e consente di creare avvisi nell'istanza attiva del sistema di gestione dei ticket ServiceNow.
31.1.1. Prima di iniziare
Prima di configurare il webhook ServiceNow, segui questi passaggi:
- Crea manualmente il secret
midserver-secret. - Segui i passaggi nel runbook TS-R0012 per configurare correttamente il secret.
Verifica che
yqsia installato sul sistema.root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4Per ottenere le autorizzazioni necessarie per accedere agli oggetti nello spazio dei nomi
obs-systeme gestire l'applicazione ServiceNow, chiedi all'Amministratore sicurezza di concederti i seguenti ruoli:- Debugger di osservabilità (
observability-admin-debuggerper il cluster di amministrazione principale eobservability-system-debuggerper i cluster di amministrazione dell'organizzazione e di sistema) - Visualizzatore Grafana (
grafana-viewer) - Amministratore ServiceNow (
system-service-now-admin)
Per maggiori informazioni su questi ruoli, vedi Ruoli dell'operatore dell'infrastruttura.
- Debugger di osservabilità (
31.1.2. Configura il webhook
Segui questi passaggi per configurare il webhook Alertmanager ServiceNow:
Puoi configurare il webhook ServiceNow in un'organizzazione.
Se vuoi configurare il webhook ServiceNow nel cluster di sistema per un'organizzazione, chiedi all'operatore dell'infrastruttura di eseguire il runbook OPA-R0005 con le seguenti informazioni:
- Il valore della variabile di ambiente
IO_GROUPè il gruppo di utenti a cui appartiene l'utente. - Il valore della variabile di ambiente
CONSTRAINT_NAMEèrestrict-system-project-namespace-resources.
- Il valore della variabile di ambiente
Crea un account di servizio ServiceNow per creare gli incident in base agli avvisi di un'organizzazione:
Apri l'URL dell'interfaccia web di ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSostituisci
GDC_URLcon l'URL della tua organizzazione in Google Distributed Cloud (GDC) air-gapped.Utilizza sempre
gdchservicescome nome dell'organizzazione IT di Operations Center.Seleziona Tutti > Amministrazione utenti > Utenti.
Fai clic su New (Nuovo).
Nella nuova finestra, inserisci i seguenti valori:
- Nel campo ID utente, inserisci
SVC_ALERT_ORG. - Nel campo Nome, inserisci
SVC_ALERT_ORG. - Seleziona la casella di controllo Solo accesso al servizio web.
Sostituisci
ORGcon il nome della tua organizzazione. Quando esegui questo passaggio nel cluster di amministrazione principale, utilizza il valorerootper il nomeORG.- Nel campo ID utente, inserisci
Fai clic su Invia.
Il nuovo record utente viene visualizzato nell'elenco degli account ServiceNow.
Aggiungi il ruolo
itilal account di servizio:Apri il record utente dall'elenco.
Fai clic sulla scheda Ruoli e poi sul pulsante Modifica….
Seleziona il ruolo
itildal menu Raccolta.Fai clic sul pulsante Aggiungi () per spostare il ruolo nel menu Elenco ruoli.
Fai clic su Salva.
Imposta la password del account di servizio ServiceNow:
Apri il record utente dall'elenco.
Fai clic su Imposta password e poi su Genera.
Copia la password visualizzata dalla finestra e conservala in un luogo sicuro.
Fai clic su Salva password e chiudi la finestra.
Apri l'interfaccia a riga di comando.
Imposta le seguenti variabili di ambiente:
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_DURATIONSostituisci quanto segue:
ORGANIZATION: il nome della tua organizzazioneSERVICENOW_INSTANCE_URL: l'URL dell'interfaccia web di ServiceNow, ad esempiohttps://support.gdchservices.GDC_URL.SERVICENOW_USERNAME: il nome utente del account di servizio ServiceNowSERVICENOW_PASSWORD: la password del account di servizio ServiceNowSERVICENOW_AUTORESOLVE: "true" se vuoi risolvere automaticamente gli incidenti ServiceNow una volta che l'avviso corrispondente smette di attivarsi, altrimenti "false"SERVICENOW_AUTORESOLVE_REOPEN_DURATION: la durata entro la quale un incidente ServiceNow risolto può essere riaperto se viene attivato di nuovo lo stesso avviso. Esempi: "5m", "30s", "24h" e così via.
Esegui questo 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:?} EOFSegui questi passaggi per configurare il webhook ServiceNow in un cluster:
Cluster di amministrazione principale
Imposta le seguenti variabili di ambiente:
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIGSostituisci quanto segue:
PATH_TO_ROOT_ADMIN_KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione principale
Trova il deployment del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output deve mostrare lo stato
READYe avere un aspetto simile al seguente esempio:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hControlla se esiste il file YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output deve essere simile al seguente esempio:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hControlla se esiste il file YAML
Secret:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output deve essere simile al seguente esempio:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigura il file YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlOutput previsto:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigura il networking:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yamlOutput previsto:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdRiavvia il deployment del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedRiavvia il deployment del webhook dello stack di monitoraggio secondario:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/alertmanager-servicenow-webhook restartedControlla i log del deployment di
alertmanager-servicenow-webhookper convalidare la configurazione:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSe i log contengono la stringa
listening on: :9877, la configurazione è completa. In caso contrario, richiedi assistenza per la risoluzione dei problemi.Trova il deployment del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemL'output deve mostrare lo stato
READYe avere un aspetto simile al seguente esempio:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hControlla se esiste il file YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemL'output deve essere simile al seguente esempio:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hControlla se esiste il file YAML
Secret:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemL'output deve essere simile al seguente esempio:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigura il file YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlOutput previsto:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdRiavvia il deployment del webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/meta-alertmanager-servicenow-webhook restartedRiavvia il deployment del webhook dello stack di monitoraggio secondario:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/meta-alertmanager-servicenow-webhook restartedControlla i log del deployment di
meta-alertmanager-servicenow-webhookper convalidare la configurazione:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSe i log contengono la stringa
listening on: :9877, la configurazione è completa. In caso contrario, richiedi assistenza per la risoluzione dei problemi.
Cluster Org Infra
Imposta le seguenti variabili di ambiente:
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIGSostituisci quanto segue:
PATH_TO_ROOT_ADMIN_KUBECONFIG: il percorso del file kubeconfig per il cluster di amministrazione principalePATH_TO_INFRA_KUBECONFIG: il percorso del file kubeconfig per il cluster di infrastruttura
Trova il deployment del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output deve mostrare lo stato
READYe avere un aspetto simile al seguente esempio:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hControlla se esiste il file YAML
configmap:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output deve essere simile al seguente esempio:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hControlla se esiste il file YAML
Secret:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output deve essere simile al seguente esempio:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigura il file YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlOutput previsto:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigura il networking:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yamlOutput previsto:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdRiavvia il deployment del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedRiavvia il deployment del webhook dello stack di monitoraggio secondario:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/alertmanager-servicenow-webhook restartedControlla i log del deployment di
alertmanager-servicenow-webhookper convalidare la configurazione:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSe i log contengono la stringa
listening on: :9877, la configurazione è completa. In caso contrario, richiedi assistenza per la risoluzione dei problemi.Trova il deployment del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemL'output deve mostrare lo stato
READYe avere un aspetto simile al seguente esempio:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hControlla se esiste il file YAML
configmap:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemL'output deve essere simile al seguente esempio:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hControlla se esiste il file YAML
Secret:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemL'output deve essere simile al seguente esempio:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigura il file YAML
configmap:kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlOutput previsto:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdRiavvia il deployment del webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/meta-alertmanager-servicenow-webhook restartedRiavvia il deployment del webhook dello stack di monitoraggio secondario:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemL'output verifica la riuscita dell'operazione, come mostrato nell'esempio seguente:
deployment.apps/meta-alertmanager-servicenow-webhook restartedControlla i log del deployment di
meta-alertmanager-servicenow-webhookper convalidare la configurazione:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSe i log contengono la stringa
listening on: :9877, la configurazione è completa. In caso contrario, richiedi assistenza per la risoluzione dei problemi.
31.1.3. Verifica la configurazione
Segui questi passaggi per verificare che la configurazione sia riuscita:
Apri l'URL dell'interfaccia web di ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSostituisci
GDC_URLcon l'URL della tua organizzazione in Google Distributed Cloud (GDC) air-gapped.Vai alla pagina Service Desk > Incidenti.
Verifica che esista un incidente con la breve descrizione
IgnoreThisAlwaysFiringAlertper ogni organizzazione nell'universo GDC.Verifica che i seguenti campi siano compilati nell'incidente:
- Numero
- Priorità
- Chiamante
- Codice componente
- ID zona
- Stato dell'incidente
- ID organizzazione
- ID zona
- Descrizione breve
- Descrizione (deve contenere un'impronta)