Tempo estimado até à conclusão: 2 horas
Proprietário do componente operacional: TS
Este documento contém as instruções para configurar o webhook do Alertmanager ServiceNow e permitir-lhe criar alertas na instância ativa do sistema de emissão de pedidos do ServiceNow.
31.1.1. Antes de começar
Antes de configurar o webhook do ServiceNow, siga os passos abaixo:
- Crie o segredo manualmente
midserver-secret. - Siga os passos no manual de procedimentos TS-R0012 para configurar corretamente o segredo.
Verifique se o
yqestá instalado no sistema.root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4Para receber as autorizações de que precisa para aceder a objetos no espaço de nomes
obs-systeme gerir a aplicação ServiceNow, peça ao seu administrador de segurança para lhe conceder as seguintes funções:- Depurador de observabilidade (
observability-admin-debuggerpara o cluster de administrador raiz eobservability-system-debuggerpara os clusters de administrador da organização e do sistema) - Grafana Viewer (
grafana-viewer) - Administrador do ServiceNow (
system-service-now-admin)
Para mais informações sobre estas funções, consulte o artigo Funções do operador de infraestrutura.
- Depurador de observabilidade (
31.1.2. Configure o webhook
Siga estes passos para configurar o webhook do Alertmanager ServiceNow:
Pode configurar o webhook do ServiceNow numa organização.
Se quiser configurar o webhook do ServiceNow no cluster do sistema para uma organização, peça ao seu operador de infraestrutura (IO) que execute o runbook OPA-R0005 com as seguintes informações:
- O valor da variável de ambiente
IO_GROUPé o grupo de utilizadores ao qual o utilizador pertence. - O valor da variável de ambiente
CONSTRAINT_NAMEérestrict-system-project-namespace-resources.
- O valor da variável de ambiente
Crie uma conta de serviço do ServiceNow para criar os incidentes com base nos alertas de uma organização:
Abra o URL da interface Web do ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSubstitua
GDC_URLpelo URL da sua organização no Google Distributed Cloud (GDC) air-gapped.Use sempre
gdchservicescomo o nome da organização de TI do centro de operações.Selecione Tudo > Administração de utilizadores > Utilizadores.
Clique em Novo.
Na nova janela, introduza os seguintes valores:
- No campo ID do utilizador, introduza
SVC_ALERT_ORG. - No campo Nome próprio, introduza
SVC_ALERT_ORG. - Selecione a caixa de verificação Acesso apenas ao serviço Web.
Substitua
ORGpelo nome da sua organização. Quando realizar este passo no cluster de administrador raiz, use o valorrootpara o nomeORG.- No campo ID do utilizador, introduza
Clique em Enviar.
O novo registo de utilizador é apresentado na lista de contas do ServiceNow.
Adicione a função
itilà conta de serviço:Abra o registo de utilizador a partir da lista.
Clique no separador Funções e, de seguida, no botão Editar….
Selecione a função
itilno menu Coleção.Clique no botão Adicionar () para mover a função para o menu Lista de funções.
Clique em Guardar.
Defina a palavra-passe da conta de serviço do ServiceNow:
Abra o registo de utilizador a partir da lista.
Clique em Definir palavra-passe e, de seguida, em Gerar.
Copie a palavra-passe apresentada na janela e guarde-a num local seguro.
Clique em Guardar palavra-passe e feche a janela.
Abra a interface de linhas de comando.
Defina as seguintes variáveis de 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_DURATIONSubstitua o seguinte:
ORGANIZATION: o nome da sua organizaçãoSERVICENOW_INSTANCE_URL: o URL da interface Web do ServiceNow, por exemplo,https://support.gdchservices.GDC_URL.SERVICENOW_USERNAME: o nome de utilizador da conta de serviço do ServiceNowSERVICENOW_PASSWORD: a palavra-passe da conta de serviço do ServiceNowSERVICENOW_AUTORESOLVE: "true" se quiser resolver automaticamente os incidentes do ServiceNow assim que o alerta correspondente deixar de ser acionado, caso contrário, "false"SERVICENOW_AUTORESOLVE_REOPEN_DURATION: a duração durante a qual um incidente resolvido do ServiceNow pode ser reaberto se o mesmo alerta for acionado novamente. Exemplos: "5m", "30s", "24h", etc.
Execute o seguinte 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:?} EOFSiga os passos seguintes para configurar o webhook do ServiceNow num cluster:
Cluster de administrador raiz
Defina as seguintes variáveis de ambiente:
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIGSubstitua o seguinte:
PATH_TO_ROOT_ADMIN_KUBECONFIG: o caminho do ficheiro kubeconfig para o cluster de administrador raiz
Encontre a implementação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado tem de mostrar um estado
READYe ter o seguinte aspeto:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVerifique se o ficheiro YAML
configmapexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVerifique se o ficheiro YAML
Secretexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigure o ficheiro 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 createdConfigure a rede:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdReinicie a implementação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicie a implementação do webhook da pilha de monitorização secundária:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/alertmanager-servicenow-webhook restartedVerifique os registos da implementação do
alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSe os registos contiverem a string
listening on: :9877, a configuração está concluída. Caso contrário, peça assistência para a resolução de problemas.Encontre a implementação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemO resultado tem de mostrar um estado
READYe ter o seguinte aspeto:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVerifique se o ficheiro YAML
configmapexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVerifique se o ficheiro YAML
Secretexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigure o ficheiro 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 createdReinicie a implementação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicie a implementação do webhook da pilha de monitorização secundária:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/meta-alertmanager-servicenow-webhook restartedVerifique os registos da implementação do
meta-alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSe os registos contiverem a string
listening on: :9877, a configuração está concluída. Caso contrário, peça assistência para a resolução de problemas.
Cluster de infraestrutura da organização
Defina as seguintes variáveis de ambiente:
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIGSubstitua o seguinte:
PATH_TO_ROOT_ADMIN_KUBECONFIG: o caminho do ficheiro kubeconfig para o cluster de administrador raizPATH_TO_INFRA_KUBECONFIG: o caminho do ficheiro kubeconfig para o cluster de infraestrutura
Encontre a implementação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado tem de mostrar um estado
READYe ter o seguinte aspeto:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVerifique se o ficheiro YAML
configmapexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVerifique se o ficheiro YAML
Secretexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigure o ficheiro 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 createdConfigure a rede:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yamlResultado esperado:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdReinicie a implementação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicie a implementação do webhook da pilha de monitorização secundária:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/alertmanager-servicenow-webhook restartedVerifique os registos da implementação do
alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSe os registos contiverem a string
listening on: :9877, a configuração está concluída. Caso contrário, peça assistência para a resolução de problemas.Encontre a implementação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemO resultado tem de mostrar um estado
READYe ter o seguinte aspeto:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVerifique se o ficheiro YAML
configmapexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVerifique se o ficheiro YAML
Secretexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemO resultado tem de ser semelhante ao seguinte exemplo:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigure o ficheiro 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 createdReinicie a implementação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicie a implementação do webhook da pilha de monitorização secundária:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemO resultado confirma o êxito, como se pode ver no exemplo seguinte:
deployment.apps/meta-alertmanager-servicenow-webhook restartedVerifique os registos da implementação do
meta-alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSe os registos contiverem a string
listening on: :9877, a configuração está concluída. Caso contrário, peça assistência para a resolução de problemas.
31.1.3. Valide a configuração
Siga estes passos para verificar se a configuração foi bem-sucedida:
Abra o URL da interface Web do ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSubstitua
GDC_URLpelo URL da sua organização no Google Distributed Cloud (GDC) air-gapped.Navegue para a página Service Desk > Incidentes.
Verifique se existe um incidente com a descrição breve
IgnoreThisAlwaysFiringAlertpara cada organização no universo do GDC.Verifique se os seguintes campos estão preenchidos no incidente:
- Número
- Prioridade
- Autor da chamada
- Código do componente
- ID da zona
- Estado do incidente
- ID da organização
- ID da zona
- Breve descrição
- Descrição (tem de conter uma impressão digital)