Este documento fornece exemplos de políticas de alerta. Os exemplos são escritos em JSON e usam filtros de monitorização. Pode criar políticas em JSON ou YAML, independentemente de definir a política através de filtros de monitorização ou da linguagem de consultas de monitorização (MQL). A CLI Google Cloud pode ler e escrever JSON e YAML, enquanto a API REST pode ler JSON.
Para ver exemplos de políticas de alerta que usam MQL, consulte os seguintes documentos:
Para informações sobre como configurar campos de políticas de alerta, consulte o seguinte:
- Crie políticas de alerta baseadas em métricas através da Google Cloud consola
- Crie políticas de alerta baseadas em métricas através da API
Gere YAML para políticas existentes
Para gerar representações YAML das suas políticas de alerta existentes, use o comando
gcloud alpha monitoring policies list
para listar as suas políticas e o comando gcloud alpha monitoring policies describe
para imprimir a política.
Para gerar representações YAML dos seus canais de notificação existentes, use o comando
gcloud alpha monitoring channels list
para listar os seus canais e o comando gcloud alpha monitoring channels describe
para imprimir a configuração do canal.
Se não incluir a flag --format
nos comandos da CLI gcloud, o formato é predefinido como YAML para ambos os comandos gcloud ... describe
.
Por exemplo, o seguinte comando gcloud alpha monitoring policies describe
obtém uma única política denominada
projects/a-gcp-project/alertPolicies/12669073143329903307
e o redirecionamento
(>
) copia o resultado para o ficheiro test-policy.yaml
:
gcloud alpha monitoring policies describe projects/a-gcp-project/alertPolicies/12669073143329903307 > test-policy.yaml
Gere JSON para políticas existentes
Para gerar representações JSON das suas políticas de alerta e canais de notificação existentes, faça qualquer uma das seguintes ações:
Adicione a flag
--format="json"
aos comandos da CLIgcloud
descritos no artigo Gere YAML para políticas existentes. Por exemplo, para apresentar uma lista de políticas, execute o seguinte comando:gcloud alpha monitoring policies list --format=json
Use o widget do Explorador de APIs na página de referência de cada método da API:
Para políticas de alerta, consulte os métodos
alertPolicies.list
ealertPolicies.get
.Para canais de notificação, consulte os métodos
notificationChannels.list
enotificationChannels.get
.
Para mais informações, consulte o Explorador de APIs.
Exemplos de políticas
Conforme mostrado no exemplo de cópia de segurança/restauro, pode usar políticas guardadas para criar novas cópias dessas políticas.
Pode usar uma política guardada num projeto para criar uma política nova ou semelhante noutro projeto. No entanto, primeiro, tem de fazer as seguintes alterações numa cópia da política guardada:
- Remova os seguintes campos de quaisquer canais de notificação:
name
verificationStatus
- Crie canais de notificação antes de fazer referência aos canais nas políticas de alerta (precisa dos novos identificadores de canais).
- Remova os seguintes campos de todas as políticas de alerta que estiver a recriar:
name
condition.name
creationRecord
mutationRecord
As políticas neste documento estão organizadas com a mesma terminologia que a monitorização na Google Cloud consola usa, por exemplo, "política de taxa de variação", e existem dois tipos de condições:
- Uma condição de limite; quase todos os tipos de políticas mencionados na IU são variantes de uma condição de limite
- Uma condição de ausência
Nos exemplos que se seguem, estas condições correspondem a conditionThreshold
e conditionAbsent
. Para mais informações, consulte a página de referência para
Condition
.
Pode criar muitas destas políticas manualmente através da Google Cloud consola, mas algumas só podem ser criadas através da API Monitoring. Para mais informações, consulte os artigos Criar uma política de alertas (IU) ou Criar políticas de alertas através da API.
Política de limite de métricas
Uma política de limite de métricas deteta quando um valor ultrapassa um limite predeterminado. As políticas de limite permitem-lhe saber que algo se está a aproximar de um ponto importante, para que possa tomar medidas. Por exemplo, a condição de uma política de limite de métricas é cumprida quando o espaço em disco disponível se torna inferior a 10% do espaço em disco total.
A seguinte política de alertas usa a utilização média da CPU como um indicador do estado de funcionamento de um grupo de VMs. A condição da política é cumprida quando a utilização média da CPU das VMs num projeto, medida em intervalos de 60 segundos, excede um limite de utilização de 90% durante 15 minutos (900 segundos):
{
"displayName": "Very high CPU usage",
"combiner": "OR",
"conditions": [
{
"displayName": "CPU usage is extremely high",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "60s",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"project"
],
"perSeriesAligner": "ALIGN_MAX"
}
],
"comparison": "COMPARISON_GT",
"duration": "900s",
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\"
AND resource.type=\"gce_instance\"",
"thresholdValue": 0.9,
"trigger": {
"count": 1
}
}
}
],
}
Política de ausência de métricas
Uma condição de ausência de métricas é cumprida quando não são escritos dados numa métrica dentro do intervalo de tempo definido pelo campo duration
.
Uma forma de demonstrar isto é criar uma métrica personalizada.
Segue-se um descritor de exemplo para uma métrica personalizada. Pode criar a métrica através do Explorador de APIs.
{
"description": "Number of times the pipeline has run",
"displayName": "Pipeline runs",
"metricKind": "GAUGE",
"type": "custom.googleapis.com/pipeline_runs",
"labels": [
{
"description": "The name of the pipeline",
"key": "pipeline_name",
"valueType": "STRING"
},
],
"unit": "1",
"valueType": "INT64"
}
Consulte o artigo Vista geral das métricas definidas pelo utilizador para mais informações.
A condição na seguinte política de alertas
é cumprida quando os dados deixam de ser escritos na
métrica durante um período de aproximadamente uma hora. Por outras palavras, a sua pipeline
por hora não foi executada. Tenha em atenção que a condição usada aqui é
conditionAbsent
.
{
"displayName": "Data ingestion functioning",
"combiner": "OR",
"conditions": [
{
"displayName": "Hourly pipeline is up",
"conditionAbsent": {
"duration": "3900s",
"filter": "resource.type=\"global\"
AND metric.type=\"custom.googleapis.com/pipeline_runs\"
AND metric.label.pipeline_name=\"hourly\"",
}
}
],
}
Política de previsão
Uma condição de previsão é cumprida quando ocorrem as seguintes situações:
- Todas as previsões de uma série cronológica são iguais no intervalo de tempo definido pelo campo
duration
. - O Cloud Monitoring prevê que a série cronológica vai violar o limite dentro do horizonte de previsão.
Uma condição de previsão é uma condição de limite de métricas configurada para usar previsões. Conforme ilustrado no exemplo seguinte, estas condições incluem um campo forecastOptions
que permite a previsão e especifica o horizonte de previsão. No exemplo seguinte, o horizonte de previsão está definido para uma hora, que é o valor mínimo:
{
"displayName": "NFS free bytes alert",
"combiner": "OR",
"conditions": [
{
"displayName": "Filestore Instance - Free disk space percent",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "300s",
"perSeriesAligner": "ALIGN_MEAN"
}
],
"comparison": "COMPARISON_LT",
"duration": "900s",
"filter": "resource.type = \"filestore_instance\" AND metric.type = \"file.googleapis.com/nfs/server/free_bytes_percent\"",
"forecastOptions": {
"forecastHorizon": "3600s"
},
"thresholdValue": 20,
"trigger": {
"count": 1
}
}
}
],
}
Política de taxa de alteração
As condições da taxa de alteração são cumpridas quando os valores numa série cronológica aumentam ou diminuem, pelo menos, a percentagem especificada pelo limite. Quando cria este tipo de condição, é aplicada um cálculo da percentagem de alteração à série cronológica antes da comparação com o limite.
A condição calcula a média dos valores da métrica dos últimos 10 minutos e, em seguida, compara o resultado com a média de 10 minutos medida imediatamente antes do início do período de alinhamento. Não pode alterar o período de 10 minutos usado para comparações numa política de alertas de taxa de variação. No entanto, especifica o período de alinhamento quando cria a condição.
Esta política de alerta monitoriza se a utilização da CPU está a aumentar rapidamente:
{
"displayName": "High CPU rate of change",
"combiner": "OR",
"conditions": [
{
"displayName": "CPU usage is increasing at a high rate",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "900s",
"perSeriesAligner": "ALIGN_PERCENT_CHANGE",
}],
"comparison": "COMPARISON_GT",
"duration": "180s",
"filter": "metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
"thresholdValue": 0.5,
"trigger": {
"count": 1
}
}
}
],
}
Política de agregação de grupos
Esta política de alerta monitoriza se a utilização média da CPU num cluster do Google Kubernetes Engine excede um limite:
{
"displayName": "CPU utilization across GKE cluster exceeds 10 percent",
"combiner": "OR",
"conditions": [
{
"displayName": "Group Aggregate Threshold across All Instances in Group GKE cluster",
"conditionThreshold": {
"filter": "group.id=\"3691870619975147604\" AND metric.type=\"compute.googleapis.com/instance/cpu/utilization\" AND resource.type=\"gce_instance\"",
"comparison": "COMPARISON_GT",
"thresholdValue": 0.1,
"duration": "300s",
"trigger": {
"count": 1
},
"aggregations": [
{
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_MEAN",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [
"project"
]
},
{
"alignmentPeriod": "60s",
"perSeriesAligner": "ALIGN_SUM",
"crossSeriesReducer": "REDUCE_MEAN"
}
]
},
}
],
}
Esta política pressupõe a existência do seguinte grupo:
{
"name": "projects/a-gcp-project/groups/3691870619975147604",
"displayName": "GKE cluster",
"filter": "resource.metadata.name=starts_with(\"gke-kuber-cluster-default-pool-6fe301a0-\")"
}
Para identificar os campos equivalentes para os seus grupos, liste os detalhes do grupo através do explorador de APIs na página de referência project.groups.list.
Política de verificação de tempo de atividade
O estado das verificações de tempo de atividade é apresentado na página Verificações de tempo de atividade, mas pode configurar uma política de alertas para que o Cloud Monitoring lhe envie uma notificação se a verificação de tempo de atividade falhar.
Por exemplo, o JSON seguinte descreve uma verificação de tempo de atividade HTTPS no Google Cloud site. A política de alertas verifica a disponibilidade a cada 5 minutos.
A verificação de tempo de atividade foi criada com a consola Google Cloud . A representação JSON aqui foi criada através da enumeração das verificações de tempo de atividade no projeto com a API Monitoring. Consulte uptimeCheckConfigs.list
.
Também pode criar verificações de tempo de atividade com a API Monitoring.
{
"name": "projects/a-gcp-project/uptimeCheckConfigs/uptime-check-for-google-cloud-site",
"displayName": "Uptime check for Google Cloud site",
"monitoredResource": {
"type": "uptime_url",
"labels": {
"host": "cloud.google.com"
}
},
"httpCheck": {
"path": "/index.html",
"useSsl": true,
"port": 443,
"authInfo": {}
},
"period": "300s",
"timeout": "10s",
"contentMatchers": [
{}
]
}
Para criar uma política de alertas para uma verificação de tempo de atividade, consulte a verificação de tempo de atividade
pelo respetivo UPTIME_CHECK_ID
. Este ID é definido quando a verificação é criada. Aparece
como o último componente do campo name
e é visível na IU como o
Check ID
no resumo da configuração. Se estiver a usar a API Monitoring, o método uptimeCheckConfigs.create
devolve o ID.
O ID é derivado de displayName
, que foi definido na IU neste caso.
Pode verificar esta situação listando as verificações de tempo de atividade e consultando o valor name
O ID da verificação de tempo de atividade descrita anteriormente é uptime-check-for-google-cloud-site
.
A condição da seguinte política de alertas é cumprida se a verificação de tempo de atividade falhar ou se o certificado SSL no site expirar em menos de 15 dias. Google Cloud Se qualquer uma das condições for cumprida, o Monitoring envia uma notificação para o canal de notificação especificado:
{
"displayName": "Google Cloud site uptime failure",
"combiner": "OR",
"conditions": [
{
"displayName": "Failure of uptime check_id uptime-check-for-google-cloud-site",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_COUNT_FALSE",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_GT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/check_passed\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 1,
"trigger": {
"count": 1
}
}
},
{
"displayName": "SSL Certificate for google-cloud-site expiring soon",
"conditionThreshold": {
"aggregations": [
{
"alignmentPeriod": "1200s",
"perSeriesAligner": "ALIGN_NEXT_OLDER",
"crossSeriesReducer": "REDUCE_MEAN",
"groupByFields": [ "resource.label.*" ]
}
],
"comparison": "COMPARISON_LT",
"duration": "600s",
"filter": "metric.type=\"monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires\"
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
AND resource.type=\"uptime_url\"",
"thresholdValue": 15,
"trigger": {
"count": 1
}
}
}
],
}
O filtro na condição especifica a métrica que está a ser monitorizada pelo respetivo tipo e etiqueta. Os tipos de métricas são
monitoring.googleapis.com/uptime_check/check_passed
e
monitoring.googleapis.com/uptime_check/time_until_ssl_cert_expires
.
A etiqueta da métrica identifica a verificação de tempo de atividade específica que está a ser monitorizada.
Neste exemplo, o campo de etiqueta check_id
contém o ID da verificação de tempo de atividade.
AND metric.label.check_id=\"uptime-check-for-google-cloud-site\"
Consulte o artigo Monitorizar filtros para mais informações.
Política de saúde do processo
Uma política de estado de funcionamento do processo pode enviar-lhe uma notificação se o número de processos que correspondem a um padrão exceder um limite. Isto pode ser usado para lhe indicar, por exemplo, que um processo deixou de ser executado.
Esta política de alertas faz com que o Monitoring envie uma notificação para o
canal de notificação especificado
quando não existe nenhum processo correspondente à string nginx
, em execução como utilizador www
, disponível
durante mais de 5 minutos:
{
"displayName": "Server health",
"combiner": "OR",
"conditions": [
{
"displayName": "Process 'nginx' is not running",
"conditionThreshold": {
"filter": "select_process_count(\"has_substring(\\\"nginx\\\")\", \"www\") AND resource.type=\"gce_instance\"",
"comparison": "COMPARISON_LT",
"thresholdValue": 1,
"duration": "300s"
}
}
],
}
Para mais informações, consulte o artigo Estado do processo.
Rácio da métrica
Recomendamos que use a linguagem de consulta de monitorização (MQL) para criar políticas de alerta baseadas em rácios. Embora a API Cloud Monitoring suporte a criação de algumas rácios baseados em filtros, a MQL oferece uma solução mais flexível e robusta:
- Para ver exemplos de políticas de rácios baseadas em MQL, consulte o artigo Exemplos de políticas de alerta de MQL.
- Para obter informações sobre a criação de políticas de alerta com MQL, consulte o artigo Políticas de alerta com MQL.
- Para obter informações sobre a criação de gráficos ou a monitorização de rácios de métricas, consulte o artigo Rácios de métricas.
Esta secção descreve uma taxa baseada em filtros.
Com a API, pode criar e ver uma política que calcula a proporção de duas métricas relacionadas e é acionada quando essa proporção ultrapassa um limite. As métricas relacionadas têm de ter o mesmo MetricKind
. Por exemplo, pode criar uma política de alerta baseada em rácios se ambas as métricas forem métricas de medidor.
Para determinar o MetricKind
de um tipo de métrica, consulte a
lista de métricas.
Uma condição de rácio é uma variante de uma condição de limite de métrica, em que a condição numa política de rácio usa dois filtros: o habitual filter
, que funciona como o numerador do rácio, e um denominatorFilter
, que funciona como o denominador do rácio.
As séries cronológicas de ambos os filtros têm de ser agregadas da mesma forma para que o cálculo da proporção dos valores seja significativo.
A condição da política de alerta é cumprida quando a proporção dos filtros viola um valor limite para o intervalo de tempo definido pelo campo duration
.
A secção seguinte descreve como configurar uma política de alertas que monitoriza a proporção de respostas de erro HTTP em relação a todas as respostas HTTP.
Rácio de erros HTTP
A seguinte política de alerta tem uma condição de limite baseada na proporção da contagem de respostas de erro HTTP em relação à contagem de todas as respostas HTTP.
{
"displayName": "HTTP error count exceeds 50 percent for App Engine apps",
"combiner": "OR",
"conditions": [
{
"displayName": "Ratio: HTTP 500s error-response counts / All HTTP response counts",
"conditionThreshold": {
"filter": "metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\" AND
metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"aggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA"
}
],
"denominatorFilter": "metric.type=\"appengine.googleapis.com/http/server/response_count\" AND
project=\"a-gcp-project\" AND
resource.type=\"gae_app\"",
"denominatorAggregations": [
{
"alignmentPeriod": "300s",
"crossSeriesReducer": "REDUCE_SUM",
"groupByFields": [
"project",
"resource.label.module_id",
"resource.label.version_id"
],
"perSeriesAligner": "ALIGN_DELTA",
}
],
"comparison": "COMPARISON_GT",
"thresholdValue": 0.5,
"duration": "0s",
"trigger": {
"count": 1
}
}
}
]
}
Os tipos de recursos e métricas
O tipo de métrica para esta política é
appengine.googleapis.com/http/server/response_count
, que tem duas etiquetas:
response_code
, um número inteiro de 64 bits que representa o código de estado HTTP do pedido. Esta política filtra os dados de séries cronológicas nesta etiqueta, para que possa determinar o seguinte:- O número de respostas recebidas.
- O número de respostas de erro recebidas.
- A proporção de respostas de erro em relação a todas as respostas.
loading
, um valor booleano que indica se o pedido estava a ser carregado. A etiquetaloading
é irrelevante nesta política de alertas.
A política de alertas avalia os dados de respostas das apps do App Engine, ou seja, os dados provenientes do tipo de recurso monitorizado gae_app
. Este recurso monitorizado tem três etiquetas:
project_id
, o ID do Google Cloud projeto.module_id
, o nome do serviço ou do módulo na app.version_id
, a versão da app.
Para ver informações de referência sobre estes tipos de métricas e recursos monitorizados, consulte as métricas do App Engine na lista de métricas e a entrada gae_app
na lista de recursos monitorizados.
O que esta política faz
Esta condição calcula a proporção de respostas de erro em relação ao total de respostas. A condição é cumprida se a proporção for superior a 50% (ou seja, a proporção for superior a 0,5) durante o período de alinhamento de 5 minutos.
Esta política capta o módulo e a versão da app que violam a condição agrupando as séries cronológicas em cada filtro pelos valores dessas etiquetas.
- O filtro na condição analisa as respostas HTTP de uma app do App Engine e seleciona as respostas no intervalo de erros, 5xx. Este é o numerador no rácio.
- O filtro do denominador na condição analisa todas as respostas HTTP de uma app do App Engine.
A condição é cumprida e a monitorização envia uma notificação para o novo incidente imediatamente; o intervalo de tempo permitido do campo duration
na condição é de zero segundos. Esta condição usa uma contagem de trigger
, que é o número de séries cronológicas que têm de violar a condição para causar o incidente. Para uma app do App Engine com um único serviço, uma contagem de trigger
é suficiente. Se tiver uma app com 20 serviços e quiser causar um incidente se 3 ou mais serviços violarem a condição, use uma contagem de trigger
de 3.
Configurar um rácio
Os filtros do numerador e do denominador são exatamente iguais, exceto que o filtro de condição no numerador corresponde aos códigos de resposta no intervalo de erros e o filtro de condição no denominador corresponde a todos os códigos de resposta. As seguintes cláusulas aparecem apenas na condição do numerador:
metric.label.response_code>=\"500\" AND
metric.label.response_code<\"600\"
Caso contrário, os filtros do numerador e do denominador são os mesmos.
As séries cronológicas selecionadas por cada filtro têm de ser agregadas da mesma forma para tornar o cálculo da proporção válido. Cada filtro pode recolher várias séries cronológicas, uma vez que existe uma série cronológica diferente para cada combinação de valores de etiquetas. Esta política agrupa o conjunto de séries cronológicas por etiquetas de recursos especificadas, que particionam o conjunto de séries cronológicas num conjunto de grupos. Algumas das séries cronológicas em cada grupo correspondem ao filtro do numerador; as restantes correspondem ao filtro do denominador.
Para calcular uma proporção, o conjunto de séries cronológicas que corresponde a cada filtro tem de ser agregado numa única série cronológica cada. Isto deixa cada grupo com duas séries cronológicas, uma para o numerador e outra para o denominador. Em seguida, é possível calcular a proporção de pontos nas séries cronológicas do numerador e do denominador em cada grupo.
Nesta política, as séries cronológicas para ambos os filtros são agregadas da seguinte forma:
Cada filtro cria uma série cronológica alinhada em intervalos de 5 minutos, com valores representados que calculam
ALIGN_DELTA
nos valores nesse período de alinhamento de 5 minutos. Este alinhador devolve o número de respostas correspondentes nesse período de alinhamento como um inteiro de 64 bits.As séries cronológicas em cada filtro também são agrupadas pelos valores das etiquetas de recursos para o módulo e a versão, pelo que cada grupo contém dois conjuntos de séries cronológicas alinhadas, as que correspondem ao filtro do numerador e as que correspondem ao filtro do denominador.
As séries cronológicas em cada grupo que correspondem ao filtro do numerador ou denominador são agregadas a um único momento somando os valores nas séries cronológicas individuais através do redutor de várias séries
REDUCER_SUM
. Isto resulta numa série cronológica para o numerador e outra para o denominador, cada uma a comunicar o número de respostas em todas as séries cronológicas correspondentes no período de alinhamento.
Em seguida, a política calcula, para as séries cronológicas do numerador e do denominador que representam cada grupo, a proporção dos valores. A condição para a política de alerta é cumprida quando a relação é superior a 50 por cento.