Uma política de alertas é representada na API Cloud Monitoring
por um objeto AlertPolicy
,
que descreve um conjunto de condições que indicam um estado potencialmente
não saudável no seu sistema.
Este documento descreve o seguinte:
- Como a API Monitoring representa as políticas de alerta.
- Os tipos de condições que a API Monitoring oferece para políticas de alerta.
- Como criar uma política de alerta através da CLI do Google Cloud ou das bibliotecas de cliente.
Esta funcionalidade só é suportada para projetos do Google Cloud . Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
Estrutura de uma política de alerta
A estrutura AlertPolicy
define os componentes de uma política de alertas. Quando cria uma política, especifica valores para os seguintes campos AlertPolicy
:
displayName
: uma etiqueta descritiva para a política.documentation
: recomendamos que use este campo para fornecer informações que ajudem os responsáveis pela resposta a incidentes. Para mais informações, consulte o artigo Anote notificações com documentação definida pelo utilizador.userLabels
: quaisquer etiquetas definidas pelo utilizador anexadas à política. As políticas de alerta, os incidentes e as notificações apresentam estas etiquetas. Para ver informações sobre a utilização de etiquetas com alertas, consulte o artigo Anote incidentes com etiquetas.conditions[]
: uma matriz de estruturasCondition
.combiner
: Um operador lógico que determina como processar várias condições.notificationChannels[]
: uma matriz de nomes de recursos, cada um a identificar umNotificationChannel
.alertStrategy
: especifica o seguinte:- A rapidez com que a monitorização fecha incidentes quando os dados deixam de chegar.
- Para políticas de alerta baseadas em métricas, se o Monitoring envia uma notificação quando um incidente é fechado.
- Para políticas de alerta baseadas em métricas, se as notificações repetidas estão ativadas e o intervalo entre essas notificações. Para mais informações, consulte o artigo Configure notificações repetidas para políticas de alerta baseadas em métricas.
Também pode especificar o campo severity
quando usa a API Cloud Monitoring e a consola Google Cloud . Este campo permite-lhe definir o nível de gravidade dos incidentes. Se não especificar uma gravidade,
o Cloud Monitoring define a gravidade da política de alertas como No Severity
.
Existem outros campos que pode usar, consoante as condições que criar.
Quando uma política de alerta contém uma condição, é enviada uma notificação quando essa condição é cumprida. Para informações sobre notificações quando as políticas de alerta contêm várias condições, consulte os artigos Políticas com várias condições e Número de notificações por política.
Quando cria ou modifica a política de alertas, o Monitoring também define outros campos, incluindo o campo name
. O valor do campo name
é o nome do recurso da política de alerta, que identifica a política. O nome do recurso tem o seguinte formato:
projects/PROJECT_ID/alertPolicies/POLICY_ID
Na expressão anterior:
- PROJECT_ID: o identificador do projeto. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
- POLICY_ID: o ID da política de alerta
Tipos de condições na API
A API Cloud Monitoring suporta vários tipos de condições na estrutura Condition
. Existem vários tipos de condições para políticas de alerta baseadas em métricas e um para políticas de alerta baseadas em registos. As secções seguintes descrevem os tipos de condições disponíveis.
Condições para políticas de alerta baseadas em métricas
Para criar uma política de alertas que monitorize dados de métricas, incluindo métricas baseadas em registos, pode usar os seguintes tipos de condições:
Condições de métricas baseadas em filtros
As condições MetricAbsence
e MetricThreshold
usam filtros de monitorização para selecionar os dados de séries cronológicas a monitorizar. Outros campos na estrutura da condição especificam como filtrar, agrupar e agregar os dados. Para mais informações sobre estes conceitos, consulte o artigo
Filtragem e agregação: manipular séries cronológicas.
Se usar o tipo de condição MetricAbsence
, pode criar uma condição que só é cumprida quando todos os intervalos temporais estão ausentes. Esta condição usa o parâmetro aggregations
para agregar várias séries cronológicas numa única série cronológica. Para mais informações, consulte a referência MetricAbsence
na documentação da API.
Uma política de alertas de ausência de métricas requer que alguns dados tenham sido escritos anteriormente. Para mais informações, consulte o artigo Crie políticas de alertas de ausência de métricas.
Se quiser receber notificações com base num valor previsto, configure a sua política de alertas para usar o tipo de condição MetricThreshold
e definir o campo forecastOptions
. Quando este campo não está definido, os dados medidos são comparados com um limite.
No entanto, quando este campo está definido, os dados previstos são comparados com um limite. Para mais informações, consulte o artigo
Crie políticas de alertas de valores de métricas previstas.
Condições de métricas baseadas em PromQL
A condição PrometheusQueryLanguageCondition
usa consultas da linguagem de consulta do Prometheus (PromQL) para selecionar e manipular dados de séries cronológicas a monitorizar.
A sua condição pode calcular uma proporção de métricas, avaliar comparações de métricas e muito mais.
Se usar uma condição PrometheusQueryLanguageCondition
, tem de ser a única condição na sua política de alertas. Para mais informações, consulte o artigo
Políticas de alerta com PromQL.
Condições para alertas sobre rácios
Pode criar políticas de alerta de limite de métricas para monitorizar a relação de duas métricas. Pode criar estas políticas usando o tipo de condição MetricThreshold
ou PrometheusQueryLanguageCondition
.
Também pode usar o PromQL diretamente na Google Cloud consola. Não pode criar nem gerir condições baseadas em rácios através da interface gráfica para criar condições de limite.
Recomendamos a utilização do PromQL para criar políticas de alerta baseadas em rácios.
O PromQL permite criar consultas mais poderosas e flexíveis do que as que pode criar usando o tipo de condição MetricTheshold
e os filtros de monitorização.
Por exemplo, com uma condição PrometheusQueryLanguageCondition
, pode calcular a proporção de uma métrica de indicador para uma métrica delta.
Se usar a condição MetricThreshold
, o numerador e o denominador
da proporção têm de ter o mesmo MetricKind
.
Para ver uma lista de métricas e respetivas propriedades, consulte Listas de métricas.
Em geral, é melhor calcular as rácios com base nas séries cronológicas recolhidas para um único tipo de métrica, usando valores de etiquetas. Uma proporção calculada em dois tipos de métricas diferentes está sujeita a anomalias devido a diferentes períodos de amostragem e janelas de alinhamento.
Por exemplo, suponhamos que tem dois tipos de métricas diferentes, uma contagem total de RPCs e uma contagem de erros de RPCs, e quer calcular a proporção de RPCs de contagem de erros em relação ao total de RPCs. As RPCs sem êxito são contabilizadas na série cronológica de ambos os tipos de métricas. Por conseguinte, existe a possibilidade de, quando alinhar as séries cronológicas, uma RPC sem êxito não aparecer no mesmo intervalo de alinhamento para ambas as séries cronológicas. Esta diferença pode acontecer por vários motivos, incluindo os seguintes:
- Porque existem duas séries cronológicas diferentes a registar o mesmo evento, existem dois valores de contador subjacentes a implementar a recolha e não são atualizados de forma atómica.
- As taxas de amostragem podem diferir. Quando as séries cronológicas estão alinhadas com um período comum, as contagens de um único evento podem aparecer em intervalos de alinhamento adjacentes nas séries cronológicas para as diferentes métricas.
A diferença no número de valores nos intervalos de alinhamento correspondentes pode gerar valores de rácio error/total
sem sentido, como 1/0 ou 2/1.
As proporções de números maiores têm menos probabilidade de resultar em valores sem sentido. Pode obter números maiores através da agregação, quer usando um período de alinhamento que seja mais longo do que o período de amostragem, quer agrupando dados para determinadas etiquetas. Estas técnicas minimizam o efeito de pequenas diferenças no número de pontos num determinado intervalo. Ou seja, uma disparidade de dois pontos é mais significativa quando o número esperado de pontos num intervalo é 3 do que quando o número esperado é 300.
Se estiver a usar tipos de métricas incorporados, pode não ter outra opção senão calcular rácios entre tipos de métricas para obter o valor de que precisa.
Se estiver a criar métricas personalizadas que podem contar a mesma coisa, como RPCs que devolvem o estado de erro, em duas métricas diferentes, considere usar uma única métrica que inclua cada contagem apenas uma vez. Por exemplo, suponhamos que está a contabilizar RPCs e quer acompanhar a proporção de RPCs sem êxito em relação a todas as RPCs. Para resolver este problema, crie um único tipo de métrica para contabilizar os RPCs e use uma etiqueta para registar o estado da invocação, incluindo o estado "OK". Em seguida, cada valor de estado, erro ou "OK", é registado atualizando um único contador para esse caso.
Condição para políticas de alerta baseadas em registos
Para criar uma política de alertas baseada em registos, que lhe envia uma notificação quando uma mensagem
correspondente ao seu filtro aparece nas entradas do registo, use o tipo de condição LogMatch
. Se usar uma condição LogMatch
, tem de ser a única condição na sua política de alertas.
Não tente usar o tipo de condição LogMatch
em conjunto com métricas baseadas em registos. As políticas de alerta que monitorizam métricas baseadas em registos são políticas baseadas em métricas. Para mais informações sobre a escolha entre políticas de alerta que
monitorizam métricas baseadas em registos ou entradas de registos, consulte o artigo
Monitorizar os seus registos.
As políticas de alerta usadas nos exemplos no documento Faça a gestão das políticas de alerta por API são políticas de alerta baseadas em métricas, embora os princípios sejam os mesmos para as políticas de alerta baseadas em registos. Para ver informações específicas sobre políticas de alertas baseadas em registos, consulte o artigo Crie uma política de alertas baseada em registos através da API Monitoring na documentação do Cloud Logging.
Como associar uma política de alerta a uma aplicação do App Hub
Google Cloud gera painéis de controlo que ajudam a monitorizar as suas aplicações do App Hub. Estes painéis de controlo apresentam informações, como dados de registo e métricas, para as suas aplicações, bem como os serviços e as cargas de trabalho que fazem parte da aplicação. As políticas de alerta e os respetivos incidentes também são apresentados nestes painéis de controlo quando essas políticas estão associadas ao serviço ou à carga de trabalho de uma aplicação. Para mais informações sobre a monitorização de aplicações, consulte o artigo Veja a telemetria de aplicações.
Para associar uma política de alertas a uma aplicação do App Hub, anexe etiquetas com as seguintes chaves à sua política:
apphub_application_location
apphub_application_id
apphub_service_id
ouapphub_workload_id
userLabels
da representação JSON de uma política de alertas pode ser semelhante à seguinte:
"userLabels": { "apphub_service_id": "my-service-id", "apphub_application_location": "my-app-location", "apphub_application_id": "my-app" },
Antes de começar
Antes de escrever código contra a API, deve:
- Conhecer os conceitos gerais e a terminologia usados com as políticas de alerta. Consulte a vista geral dos alertas para mais informações.
- Certifique-se de que a API Cloud Monitoring está ativada para utilização. Consulte o artigo Ativar a API para mais informações.
- Se planeia usar bibliotecas cliente, instale as bibliotecas para os idiomas que quer usar. Consulte Bibliotecas cliente para ver detalhes. O suporte da API para alertas só está disponível para C#, Go, Java, Node.js e Python.
Se planeia usar a Google Cloud CLI, instale-a. No entanto, se usar a Cloud Shell, a CLI do Google Cloud já está instalada.
Também são fornecidos exemplos de utilização da interface
gcloud
. Tenha em atenção que todos os exemplosgcloud
partem do princípio de que o projeto atual já foi definido como o destino (gcloud config set project [PROJECT_ID]
), pelo que as invocações omitem a flag--project
explícita. O ID do projeto atual nos exemplos éa-gcp-project
. Para configurações do App Hub, selecione o projeto anfitrião do App Hub ou o projeto de gestão da pasta com apps ativadas.
-
Para obter as autorizações de que precisa para criar e modificar políticas de alerta através da API Cloud Monitoring, peça ao seu administrador que lhe conceda a função de IAM Editor de AlertPolicy do Monitoring (
roles/monitoring.alertPolicyEditor
) no seu projeto. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.
Para informações detalhadas sobre as funções de IAM para o Monitoring, consulte o artigo Controle o acesso com a gestão de identidade e acesso.
Conceba a sua aplicação para usar chamadas API Cloud Monitoring de thread único que modificam o estado de uma política de alerta num Google Cloud projeto. Por exemplo, chamadas API de thread único que criam, atualizam ou eliminam uma política de alertas.
Crie uma política de alerta
Para criar uma política de alerta num projeto, use o método
alertPolicies.create
. Para obter informações sobre como invocar este método, os respetivos parâmetros e os dados de resposta, consulte a página de referência alertPolicies.create
.
Pode criar políticas a partir de ficheiros JSON ou YAML.
A CLI Google Cloud aceita estes ficheiros como argumentos e pode ler ficheiros JSON de forma programática, convertê-los em objetos e criar políticas a partir deles através do método alertPolicies.create
.AlertPolicy
Se tiver um ficheiro de configuração JSON ou YAML do Prometheus com uma regra de alerta, a CLI gcloud pode migrá-lo para uma política de alerta do Cloud Monitoring com uma condição PromQL. Para mais informações, consulte o artigo
Migre regras de alerta e destinatários do Prometheus.
Cada política de alerta pertence a um projeto de âmbito de um âmbito de métricas. Cada projeto pode conter até 2000 políticas.
Para chamadas API, tem de fornecer um "ID do projeto"; use o ID do projeto de âmbito de um âmbito de métricas como valor. Nestes exemplos, o ID do projeto de âmbito de um âmbito de métricas é a-gcp-project
.
Os exemplos seguintes ilustram a criação de políticas de alerta, mas não descrevem como criar um ficheiro JSON ou YAML que descreva uma política de alerta. Em vez disso, os exemplos partem do princípio de que existe um ficheiro formatado em JSON e ilustram como emitir a chamada API. Para ver exemplos de ficheiros JSON, consulte as Políticas de amostra. Para obter informações gerais sobre a monitorização de rácios de métricas, consulte o artigo Rácios de métricas.
gcloud
Para criar uma política de alerta num projeto, use o comando gcloud alpha monitoring
policies create
. O exemplo seguinte cria uma política de alertas em
a-gcp-project
a partir do ficheiro rising-cpu-usage.json
:
gcloud alpha monitoring policies create --policy-from-file="rising-cpu-usage.json"
Se for bem-sucedido, este comando devolve o nome da nova política, por exemplo:
Created alert policy [projects/a-gcp-project/alertPolicies/12669073143329903307].
O ficheiro rising-cpu-usage.json
contém o JSON de uma política com o nome a apresentar "Taxa de variação elevada da CPU". Para ver detalhes acerca desta política, consulte a política de taxa de variação.
Consulte a referência
gcloud alpha monitoring policies create
para mais informações.
C#
Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Go
Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
PHP
Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para se autenticar no Monitoring, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
O objeto AlertPolicy
criado tem campos adicionais.
A própria política tem os campos name
, creationRecord
e mutationRecord
. Além disso, cada condição na política também recebe um name
.
Estes campos não podem ser modificados externamente, pelo que não é necessário defini-los quando cria uma política. Nenhum dos exemplos JSON usados para criar políticas as inclui, mas, se as políticas criadas a partir deles forem obtidas após a criação, os campos estarão presentes.
Configure notificações repetidas para políticas de alerta baseadas em métricas
Por predefinição, uma política de alertas baseada em métricas envia uma notificação a cada canal de notificação quando um incidente é aberto. No entanto, pode alterar o comportamento predefinido e configurar uma política de alertas para reenviar notificações para todos ou alguns dos canais de notificação da sua política de alertas. Estas notificações repetidas são enviadas para incidentes com o estado Aberto ou Confirmado. O intervalo entre estas notificações tem de ser, pelo menos, de 30 minutos e, no máximo, de 24 horas, expresso em segundos.
Para configurar notificações repetidas, adicione à configuração da política de alertas um objeto AlertStrategy
que contenha, pelo menos, um objeto NotificationChannelStrategy
.
Um objeto NotificationChannelStrategy
tem dois campos:
renotifyInterval
: O intervalo, em segundos, entre as notificações repetidas.Se alterar o valor do campo
renotifyInterval
quando um incidente para a política de alertas é aberto, ocorre o seguinte:- A política de alerta envia outra notificação para o incidente.
- A política de alerta reinicia o período do intervalo.
notificationChannelNames
: uma matriz de nomes de recursos de canais de notificação, que são strings no formato deprojects/PROJECT_ID/notificationChannels/CHANNEL_ID
, onde CHANNEL_ID é um valor numérico. Para obter informações sobre como obter o ID do canal, consulte o artigo Liste os canais de notificação num projeto.
Por exemplo, o seguinte exemplo JSON mostra uma estratégia de alerta configurada para enviar notificações repetidas a cada 1800 segundos (30 minutos) para um canal de notificação:
"alertStrategy": { "notificationChannelStrategy": [ { "notificationChannelNames": [ "projects/PROJECT_ID/notificationChannels/CHANNEL_ID" ], "renotifyInterval": "1800s" } ] }
Para parar temporariamente as notificações repetidas, crie uma suspensão. Para evitar notificações repetidas, edite a política de alertas através da API e remova o objeto NotificationChannelStrategy
.