Anote notificações com documentação definida pelo utilizador

Esta página descreve como pode configurar a documentação da política de alertas para que as notificações forneçam aos responsáveis pela resposta a incidentes recursos e informações adicionais para a resolução de incidentes.

Estrutura da documentação

A documentação de uma política de alertas consiste num assunto, conteúdo e links. Pode configurar a documentação na Google Cloud consola, na API Cloud Monitoring e na CLI Google Cloud.

Assuntos

O assunto da sua documentação aparece no assunto das notificações de incidentes relacionados com a sua política de alertas. Os destinatários das notificações podem gerir e ordenar as respetivas notificações por assunto.

As linhas de assunto estão limitadas a 255 carateres. Se não definir um assunto na documentação, o Cloud Monitoring determina a linha de assunto. As linhas de assunto suportam texto simples e variáveis.

Cloud Monitoring API

Configure a linha de assunto da notificação através do campo subject da política de alertas documentation.

Google Cloud consola

Configure a linha de assunto da notificação através do campo Linha de assunto da notificação na secção Notificações e nome da página Criar política de alertas.

Conteúdo

O conteúdo da sua documentação aparece nos seguintes tipos de notificações:

  • Email, na secção Documentação de políticas
  • PagerDuty
  • Pub/Sub
  • Slack
  • Webhooks

Recomendamos que configure o seu conteúdo para que os responsáveis pela resposta a incidentes possam ver os passos de correção e as informações sobre incidentes nas notificações relacionadas com a sua política de alertas. Por exemplo, pode configurar a documentação para incluir um resumo do incidente e informações sobre recursos relevantes.

O conteúdo da documentação suporta o seguinte:

Cloud Monitoring API

Configure o conteúdo da documentação através do campo content da política de alertas documentation.

Google Cloud consola

Configure o conteúdo da documentação através do campo Documentação na secção Notificações e nome da página Criar política de alertas.

Pode adicionar links à sua documentação para que os responsáveis pela resposta a incidentes possam aceder a recursos como manuais de procedimentos, repositórios e Google Cloud painéis de controlo a partir de uma notificação.

A API Cloud Monitoring permite-lhe definir um objeto que contém os links mais relevantes para os inquiridos. Embora a Google Cloud consola não tenha um campo especificamente para links, pode adicionar uma secção para links no corpo da documentação.

Cloud Monitoring API

Pode adicionar links à sua documentação definindo um ou mais objetos Link no campo links da política de alertas documentation. Cada objeto Link consiste num display_name e num url. Pode ter até três links na sua documentação.

A configuração seguinte mostra o campo links com um objeto Link que representa um URL para um plano de ação de incidentes. O URL inclui uma variável para que os destinatários da notificação possam aceder ao guia interativo correto com base no recurso monitorizado onde ocorreu o incidente:

"links" [
  {
    "displayName": "Playbook",
    "url": "https://myownpersonaldomain.com/playbook?name=${resource.type}"
  }
]

Os links de documentação adicionados através do campo Link aparecem nos seguintes tipos de notificações:

  • Email, na secção Links rápidos
  • PagerDuty
  • Pub/Sub
  • Webhooks

Google Cloud consola

Pode adicionar links ao conteúdo da documentação, incluindo-os no campo Documentação da sua política de alertas. Por exemplo, a documentação seguinte apresenta um URL para um manual de estratégias para clientes:

### Troubleshooting and Debug References

Playbook: https://myownpersonaldomain.com/playbook?name=${resource.type}

Os links de documentação adicionados através da Google Cloud consola aparecem com o resto do conteúdo da documentação nos seguintes tipos de notificações:

  • Email, na secção Documentação de políticas
  • PagerDuty
  • Pub/Sub
  • Slack
  • Webhooks

Markdown no conteúdo da documentação

Pode usar o Markdown para formatar o conteúdo da documentação. O conteúdo da documentação suporta o seguinte subconjunto de etiquetagem Markdown:

  • Cabeçalhos, indicados por carateres de hash iniciais.
  • Listas não ordenadas, indicadas por carateres iniciais de mais, menos ou asterisco.
  • Listas ordenadas, indicadas por um número inicial seguido de um ponto.
  • Texto em itálico, indicado por carateres de sublinhado ou asteriscos únicos à volta de uma expressão.
  • Texto em negrito, indicado por dois carateres de sublinhado ou asteriscos à volta de uma expressão.
  • Links, indicados pela sintaxe [link text](url). Para adicionar links à sua notificação, recomendamos que use a API Cloud Monitoring e configure o objeto Link.

Para mais informações sobre esta etiquetagem, consulte qualquer referência de Markdown, por exemplo, o guia de Markdown.

Variáveis na documentação

Para personalizar o texto na sua documentação, pode usar variáveis no formato ${varname}. Quando a documentação é enviada com uma notificação, a string ${varname} é substituída por um valor extraído do recurso Google Cloud correspondente, conforme descrito na tabela seguinte.

Variável Valor
condition.name O nome do recurso REST da condição, como
projects/foo/alertPolicies/1234/conditions/5678.
condition.display_name O nome a apresentar de uma condição, como CPU usage increasing rapidly.
log.extracted_label.KEY O valor da etiqueta KEY, extraído de uma entrada de registo. Apenas para políticas de alerta baseadas em registos. Para mais informações, consulte o artigo Crie uma política de alerta baseada em registos através da API Monitoring.
metadata.system_label.KEY O valor da etiqueta de metadados de recursos fornecida pelo sistema KEY.1
metadata.user_label.KEY O valor da etiqueta de metadados do recurso definida pelo utilizador KEY.1,3
metric.type O tipo de métrica, como
compute.googleapis.com/instance/cpu/utilization.
metric.display_name O nome a apresentar do tipo de métrica, como CPU utilization.
metric.label.KEY

O valor da etiqueta de métrica KEY.1
Para encontrar as etiquetas associadas ao tipo de métrica, consulte a lista de métricas.

Quando o valor da variável ${metric.label.KEY} não começa com um dígito, uma letra, uma barra (/) ou um sinal de igual (=), a monitorização omite a etiqueta das notificações.

Quando migra uma regra de alerta do Prometheus, os modelos de campo de alerta do Prometheus {{$value}} e {{humanize $value}} aparecem como ${metric.label.value} na configuração da documentação da política de alertas. Neste caso, ${metric.label.value} contém o valor de acionamento da regra de alerta do Prometheus.

Também pode usar ${metric.label.value} quando cria consultas PromQL em Google Cloud.

metric.label.metadata_system_VALUE

Faz referência a uma etiqueta do sistema de metadados PromQL, em que VALUE é o nome da etiqueta específico, como region ou version.

Exemplo de utilização: ${metric.label.metadata_system_version}.

metric.label.metadata_user_VALUE

Faz referência a uma etiqueta de utilizador de metadados PromQL, em que VALUE é o nome da etiqueta específico, como region ou name.

Exemplo de utilização: ${metric.label.metadata_user_name}.

metric_or_resource.labels

Esta variável renderiza todos os valores de métricas e etiquetas de recursos como uma lista ordenada de pares key-value. Se uma etiqueta de métrica e uma etiqueta de recurso tiverem o mesmo nome, apenas a etiqueta de métrica é renderizada.

Quando migra uma regra de alerta do Prometheus, os modelos de campo de alerta do Prometheus {{$labels}} e {{humanize $labels}} aparecem como ${metric_or_resource.labels} na configuração da documentação da política de alerta.

metric_or_resource.label.KEY
  • Se KEY for uma etiqueta válida, esta variável é renderizada na notificação como o valor de ${metric.label.KEY}.
  • Se KEY for um recurso válido, esta variável é renderizada na notificação como o valor de ${resource.label.KEY}.
  • Se KEY não for uma etiqueta nem um recurso válido, esta variável é renderizada na notificação como uma string vazia.

Quando migra uma regra de alerta do Prometheus, os modelos de campo de alerta do Prometheus {{$labels.KEY}} e {{humanize $labels.KEY}} são apresentados como ${metric_or_resource.labels.KEY} na configuração da documentação da política de alerta.

policy.name O nome do recurso REST da política, como projects/foo/alertPolicies/1234.
policy.display_name O nome a apresentar de uma política, como High CPU rate of change.
policy.user_label.KEY O valor da etiqueta do utilizador KEY.1

As chaves têm de começar com uma letra minúscula. As chaves e os valores só podem conter letras minúsculas, dígitos, sublinhados e travessões.

project O ID do projeto de âmbito de um âmbito de métricas, como a-gcp-project.
resource.type O tipo de recurso monitorizado, como gce_instance.
resource.project O ID do projeto do recurso monitorizado da política de alerta.
resource.label.KEY O valor da etiqueta de recurso KEY.1,2,3
Para encontrar as etiquetas associadas ao tipo de recurso monitorizado, consulte a lista de recursos.

1 Por exemplo, ${resource.label.zone} é substituído pelo valor da etiqueta zone. Os valores destas variáveis estão sujeitos a agrupamento. Consulte os nullvalores para mais informações.
2 Para obter o valor da etiqueta project_id num recurso monitorizado na política de alertas, use ${resource.project}.
3 Não pode aceder às etiquetas de metadados de recursos definidos pelo utilizador através de resource.label.KEY.. Em alternativa, use metadata.user_label.KEY.

Notas de utilização

  • Apenas são suportadas as variáveis na tabela. Não pode combiná-los em expressões mais complexas, como ${varname1 + varname2}.
  • Para incluir a string literal ${ na sua documentação, escape o símbolo $ com um segundo símbolo $, e $${ é renderizado como ${ na sua documentação.
  • Estas variáveis são substituídas pelos respetivos valores apenas nas notificações enviadas através de canais de notificação. Na Google Cloud consola, quando a documentação é apresentada, vê as variáveis e não os valores. Os exemplos na consola incluem as descrições de incidentes e a pré-visualização da documentação quando cria uma política de alertas.
  • Verifique se as definições de agregação da condição não eliminam a etiqueta. Se a etiqueta for eliminada, o valor da etiqueta na notificação é null. Para mais informações, consulte o artigo A variável de uma etiqueta de métrica é nula.

Valores null

Os valores das variáveis metric.*, resource.* e metadata.* são derivados de séries cronológicas. Os respetivos valores podem ser null se não forem devolvidos valores da consulta de séries cronológicas.

  • As variáveis resource.label.KEY e metric.label.KEY podem ter valores null se a sua política de alertas usar a agregação de várias séries (redução), por exemplo, calcular a SOMA em cada uma das séries cronológicas que correspondem a um filtro. Quando usa a agregação de várias séries, todas as etiquetas não usadas no agrupamento são ignoradas e, como resultado, são renderizadas como null quando a variável é substituída pelo respetivo valor. Todas as etiquetas são mantidas quando não existe agregação entre séries. Para mais informações, consulte o artigo A variável de uma etiqueta de métrica é nula.

  • Os valores das variáveis metadata.* só estão disponíveis se as etiquetas forem explicitamente incluídas no filtro ou no agrupamento de uma condição para agregação de várias séries. Ou seja, tem de fazer referência à etiqueta de metadados no filtro ou no agrupamento para que tenha um valor para o modelo.

Resolução variável

As variáveis nos modelos de documentação só são resolvidas nas notificações enviadas através dos seguintes canais de notificação:

  • Email
  • Google Chat
  • Slack
  • Pub/Sub, versão 1.2 do esquema JSON
  • Webhooks, versão 1.2 do esquema JSON
  • PagerDuty, versão 1.2 do esquema JSON

Controlos do canal

O texto no campo de documentação também pode incluir carateres especiais usados pelo próprio canal de notificação para controlar a formatação e as notificações.

Por exemplo, o Slack usa @ para menções. Pode usar @ para associar a notificação a um ID de utilizador específico. As menções não podem incluir nomes. Suponhamos que inclui uma string como esta no campo de documentação:

<@backendoncall> Incident created based on policy ${policy.display_name}

Quando o campo de documentação é recebido pelo canal do Slack relevante como parte da notificação, a string anterior faz com que o Slack envie uma mensagem adicional para o ID do utilizador backendoncall. A mensagem enviada pelo Slack ao utilizador pode conter informações relevantes da notificação; por exemplo, "Incidente criado com base na política de taxa de alteração elevada da CPU".

Estas opções adicionais são específicas dos canais. Para mais informações sobre o que pode estar disponível, consulte a documentação fornecida pelo fornecedor do canal.

Exemplo

O exemplo seguinte mostra as versões da Google Cloud consola e da API Cloud Monitoring da documentação de modelos para uma política de alertas de utilização da CPU. Estes exemplos usam um email para o tipo de canal de notificação. Os modelos de documentação incluem várias variáveis para resumir o incidente e fazer referência aos recursos REST da política de alerta e da condição.

Cloud Monitoring API

  "documentation": {
    "content": "### CPU utilization exceeded\n\n### Summary\n\nThe ${metric.display_name} of the ${resource.type} ${resource.label.instance_id} in the project ${resource.project} has exceeded 5% for over 60 seconds.\n\n#### Additional resource information\n\nCondition resource name: ${condition.name}  \nAlerting policy resource name: ${policy.name}",
    "mimeType": "text/markdown",
    "subject": "Alert: ${metric.display_name} exceeded",
    "links": [
      {
        "displayName": "Playbook",
        "url": "https://myownpersonaldomain.com/playbook?name=${resource.type}"
      },
      {
        "displayName": "Repository with debug scripts",
        "url": "https://altostrat.com"
      },
      {
        "displayName": "Google Cloud dashboard",
        "url": "https://example.com"
      }
    ]
  }

A imagem seguinte mostra como este modelo é apresentado numa notificação por email:

Exemplo de como a documentação é renderizada numa notificação. Os links são apresentados na secção &quot;Links rápidos&quot;.

Google Cloud consola

### CPU utilization exceeded

#### Summary

The ${metric.display_name} of the ${resource.type}
${resource.label.instance_id} in the project ${resource.project} has
exceeded 5% for over 60 seconds.

#### Additional resource information

Condition resource name: ${condition.name}  
Alerting policy resource name: ${policy.name}  

#### Troubleshooting and Debug References

Playbook: https://myownpersonaldomain.com/playbook?name=${resource.type}  
Repository with debug scripts: https://altostrat.com  
${resource.type} dashboard: https://example.com

A imagem seguinte mostra como este modelo é apresentado numa notificação por email:

Exemplo de como a documentação é renderizada numa notificação. Os links são apresentados sob o cabeçalho &quot;Referências de resolução de problemas e depuração&quot;.