Tempo estimado para a conclusão: 2 horas
Proprietário do componente operável: TS
Este documento contém as instruções para configurar o webhook do Alertmanager ServiceNow e criar alertas na instância ativa do sistema de tíquetes do ServiceNow.
31.1.1. Antes de começar
Antes de configurar o webhook do ServiceNow, siga estas etapas:
- Crie manualmente o secret
midserver-secret. - Siga as etapas no runbook TS-R0012 para configurar o segredo corretamente.
Verifique se o
yqestá instalado no sistema.root@bootstrapper:~# yq --version yq (https://github.com/mikefarah/yq/) version v4.40.4Para ter as permissões necessárias para acessar objetos no namespace
obs-systeme gerenciar o aplicativo ServiceNow, peça ao administrador de segurança para conceder a você os seguintes papéis:- Debugger de observabilidade (
observability-admin-debuggerpara o cluster de administrador raiz eobservability-system-debuggerpara os clusters de administrador da organização e do sistema) - Leitor do Grafana (
grafana-viewer) - Administrador do ServiceNow (
system-service-now-admin)
Para mais informações sobre esses papéis, consulte Papéis de operador de infraestrutura.
- Debugger de observabilidade (
31.1.2. Configurar o webhook
Siga estas etapas para configurar o webhook do ServiceNow do Alertmanager:
É possível configurar o webhook do ServiceNow em uma organização.
Se você quiser configurar o webhook do ServiceNow no cluster do sistema de uma organização, peça ao operador de infraestrutura (IO) para executar o runbook OPA-R0005 com as seguintes informações:
- O valor da variável de ambiente
IO_GROUPé o grupo de usuários a que seu usuário 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 incidentes com base nos alertas de uma organização:
Abra o URL da interface da Web do ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSubstitua
GDC_URLpelo URL da sua organização no Google Distributed Cloud (GDC) isolado por air-gap.Sempre use
gdchservicescomo o nome da organização de TI da Central de operações.Selecione Todos > Administração de usuários > Usuários.
Clique em Novo.
Na nova janela, insira os seguintes valores:
- No campo ID do usuário, insira
SVC_ALERT_ORG. - No campo Nome, digite
SVC_ALERT_ORG. - Marque a caixa de seleção Acesso somente ao serviço da Web.
Substitua
ORGpelo nome da sua organização. Ao realizar esta etapa no cluster de administrador raiz, use o valorrootpara o nomeORG.- No campo ID do usuário, insira
Clique em Enviar.
O novo registro de usuário aparece na lista de contas do ServiceNow.
Adicione o papel
itilà conta de serviço:Abra o registro do usuário na lista.
Clique na guia Funções e no botão Editar....
Selecione o papel
itilno menu Coleção.Clique no botão Adicionar () para mover a função para o menu Lista de funções.
Clique em Salvar.
Defina a senha da conta de serviço do ServiceNow:
Abra o registro do usuário na lista.
Clique em Definir senha e em Gerar.
Copie a senha exibida na janela e armazene-a em um local seguro.
Clique em Salvar senha e feche a janela.
Abra a interface de linha de comando.
Configure as variáveis de ambiente a seguir:
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:
ORGANIZATION: o nome da organizaçãoSERVICENOW_INSTANCE_URL: o URL da interface da Web do ServiceNow, por exemplo,https://support.gdchservices.GDC_URL.SERVICENOW_USERNAME: o nome de usuário da conta de serviço do ServiceNow.SERVICENOW_PASSWORD: a senha da conta de serviço do ServiceNow.SERVICENOW_AUTORESOLVE: "true" se você quiser resolver automaticamente os incidentes do ServiceNow quando o alerta correspondente parar de ser acionado. Caso contrário, "false".SERVICENOW_AUTORESOLVE_REOPEN_DURATION: a duração em que um incidente resolvido do ServiceNow pode ser reaberto se o mesmo alerta for acionado novamente. Exemplos: "5m", "30s", "24h" etc.
Execute este 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 as etapas abaixo para configurar o webhook do ServiceNow em um cluster:
Cluster de administrador raiz
Configure as variáveis de ambiente a seguir:
export ROOT_KUBECONFIG=PATH_TO_ROOT_ADMIN_KUBECONFIGSubstitua:
PATH_TO_ROOT_ADMIN_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador raiz
Encontre a implantação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída precisa mostrar um status
READYe ser semelhante a este exemplo:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVerifique se o arquivo YAML
configmapexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVerifique se o arquivo YAML
Secretexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigure o arquivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlSaída esperada:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigure a rede:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n root -f ~/ts-networking-subcomponentoverride.yamlSaída esperada:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdReinicie a implantação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicie a implantação do webhook da pilha de monitoramento secundária:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/alertmanager-servicenow-webhook restartedVerifique os registros da implantação do
alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSe os registros contiverem a string
listening on: :9877, a configuração estará concluída. Caso contrário, peça ajuda para resolver o problema.Encontre a implantação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemA saída precisa mostrar um status
READYe ser semelhante a este exemplo:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVerifique se o arquivo YAML
configmapexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVerifique se o arquivo YAML
Secretexiste:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigure o arquivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlSaída esperada:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdReinicie a implantação do webhook:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicie a implantação do webhook da pilha de monitoramento secundária:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/meta-alertmanager-servicenow-webhook restartedVerifique os registros da implantação do
meta-alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSe os registros contiverem a string
listening on: :9877, a configuração estará concluída. Caso contrário, peça ajuda para resolver o problema.
Cluster de infraestrutura da organização
Configure as variáveis de ambiente a seguir:
export ROOT_KUBECONFIG=PATH_TO_ROOT_KUBECONFIG export INFRA_KUBECONFIG=PATH_TO_INFRA_KUBECONFIGSubstitua:
PATH_TO_ROOT_ADMIN_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de administrador raizPATH_TO_INFRA_KUBECONFIG: o caminho do arquivo kubeconfig do cluster de infraestrutura
Encontre a implantação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída precisa mostrar um status
READYe ser semelhante a este exemplo:NAME READY UP-TO-DATE AVAILABLE AGE mon-alertmanager-servicenow-webhook-backend 1/1 1 1 8hVerifique se o arquivo YAML
configmapexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME DATA AGE mon-alertmanager-servicenow-webhookbackend 1 8hVerifique se o arquivo YAML
Secretexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME TYPE DATA AGE mon-alertmanager-servicenow-webhook-backend Opaque 2 8hConfigure o arquivo YAML
configmap:kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/mon-alertmanager-servicenow-webhook-subcomponentoverride.yamlSaída esperada:
subcomponentoverride.lcm.private.gdc.goog/mon-alertmanager-servicenow-webhook createdConfigure a rede:
kubectl --kubeconfig "${ROOT_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/ts-networking-subcomponentoverride.yamlSaída esperada:
subcomponentoverride.lcm.private.gdc.goog/ts-networking createdReinicie a implantação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/mon-alertmanager-servicenow-webhook-backend restartedReinicie a implantação do webhook da pilha de monitoramento secundária:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/alertmanager-servicenow-webhook restartedVerifique os registros da implantação do
alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/mon-alertmanager-servicenow-webhook-backend -n mon-systemSe os registros contiverem a string
listening on: :9877, a configuração estará concluída. Caso contrário, peça ajuda para resolver o problema.Encontre a implantação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get deployment meta-alertmanager-servicenow-webhook -n mon-systemA saída precisa mostrar um status
READYe ser semelhante a este exemplo:NAME READY UP-TO-DATE AVAILABLE AGE meta-alertmanager-servicenow-webhook 1/1 1 1 8hVerifique se o arquivo YAML
configmapexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get configmap/meta-alertmanager-servicenow-webhook -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME DATA AGE meta-alertmanager-servicenow-webhook 1 8hVerifique se o arquivo YAML
Secretexiste:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" get secret/meta-alertmanager-servicenow-webhook -n mon-systemA saída será semelhante ao exemplo a seguir:
NAME TYPE DATA AGE meta-alertmanager-servicenow-webhook Opaque 2 8hConfigure o arquivo YAML
configmap:kubectl --kubeconfig "${ROOT_ADMIN_KUBECONFIG:?}" apply -n ${ORG:?} -f ~/meta-alertmanager-servicenow-webhook-subcomponentoverride.yamlSaída esperada:
subcomponentoverride.lcm.private.gdc.goog/meta-alertmanager-servicenow-webhook createdReinicie a implantação do webhook:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n mon-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/meta-alertmanager-servicenow-webhook restartedReinicie a implantação do webhook da pilha de monitoramento secundária:
kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" rollout restart deployment/meta-alertmanager-servicenow-webhook -n obs-systemA saída verifica o sucesso, como mostrado no exemplo a seguir:
deployment.apps/meta-alertmanager-servicenow-webhook restartedVerifique os registros da implantação do
meta-alertmanager-servicenow-webhookpara validar a configuração:kubectl --kubeconfig "${INFRA_KUBECONFIG:?}" logs deployment/meta-alertmanager-servicenow-webhook -n mon-systemSe os registros contiverem a string
listening on: :9877, a configuração estará concluída. Caso contrário, peça ajuda para resolver o problema.
31.1.3. Confirmar configuração
Siga estas etapas para verificar se a configuração foi concluída:
Abra o URL da interface da Web do ServiceNow:
https://support.gdchservices.GDC_URL/navpage.doSubstitua
GDC_URLpelo URL da sua organização no Google Distributed Cloud (GDC) isolado por air-gap.Acesse a página Service Desk > Incidentes.
Verifique se há um incidente com a descrição resumida
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 (precisa conter uma impressão digital)