Nesta página, descrevemos como migrar regras de alerta do Prometheus para políticas de alertas baseadas em PromQL no Cloud Monitoring. O processo de migração é útil se você usa o PromQL em ambientes fora do Google Cloud. Ao migrar as regras de alerta do Prometheus para o Cloud Monitoring, é possível gerenciar todas as políticas de alerta em um ambiente.
Para informações gerais sobre políticas de alertas baseadas em PromQL, consulte Visão geral dos alertas do PromQL.
Também é possível importar painéis do Grafana. Para mais informações, consulte Importar painéis do Grafana para o Cloud Monitoring.
Como a migração funciona
Na CLI gcloud, é possível migrar suas regras de alertas e destinatários para criar políticas de alertas e canais de notificação do Cloud Monitoring. A CLI gcloud pode realizar os seguintes tipos de migração:
Se você fornecer um arquivo de configuração do Prometheus com uma regra de alerta, a CLI gcloud vai criar uma política de alertas baseada em PromQL.
É possível fornecer vários arquivos de configuração do Prometheus ao mesmo tempo para criar várias políticas de alertas baseadas em PromQL.
Se você fornecer um arquivo do Alertmanager do Prometheus com pelo menos um destinatário, a CLI gcloud vai converter cada destinatário em um canal de notificação equivalente no Monitoring.
Se você fornecer um arquivo do Prometheus Alertmanager e um arquivo de configuração do Prometheus ao mesmo tempo, a CLI gcloud vai criar a política de alertas e os canais de notificação e, em seguida, associar cada novo canal de notificação à nova política de alertas.
Se você fornecer vários arquivos de configuração com regras de alerta, a CLI gcloud vai atribuir todos os canais de notificação do arquivo do Alertmanager a cada nova política de alertas.
Se a regra de alerta do Prometheus fizer referência a uma métrica personalizada, a CLI gcloud vai exigir um descritor de métrica equivalente para criar a política de alertas.
Os arquivos de configuração e do Alertmanager do Prometheus precisam estar formatados como arquivos de regras válidos do Prometheus em YAML ou JSON.
Mapeamento de campo
A CLI gcloud mapeia campos entre uma regra de alertas do Prometheus e uma política de alertas do Cloud Monitoring da seguinte maneira:
| Regra de alerta do Prometheus | Política de alertas do Cloud Monitoring |
|---|---|
alert |
conditionPrometheusQueryLanguage.alertRule |
expr |
conditionPrometheusQueryLanguage.query |
for |
conditionPrometheusQueryLanguage.duration |
labels |
conditionPrometheusQueryLanguage.labels |
annotations: "summary" |
documentation.subject |
annotations: "description" |
documentation.content |
Google Cloud variáveis de documentação em regras de alerta do Prometheus migradas
O Prometheus usa modelos de campos de alerta para configurar variáveis em anotações e rótulos de regras de alerta. Ao migrar regras de alerta do Prometheus que têm modelos de campo de alerta, o Cloud Monitoring converte os modelos em variáveis de documentação do Cloud Monitoring da seguinte maneira:
| Modelo de campo de alerta do Prometheus | Variável de documentação do Cloud Monitoring |
|---|---|
{{$value}} |
Essa variável é uma implementação de |
{{humanize $value}} |
Essa variável é uma implementação de |
{{$labels}} |
${metric_or_resource.labels} |
{{humanize $labels}} |
${metric_or_resource.labels} |
{{$labels.key}} |
Aparece como
|
{{humanize $labels.<key>}} |
Aparece como
|
Migrar regras de alerta e receptores do Prometheus
Para migrar as regras de alertas do Prometheus para políticas de alertas baseadas em PromQL do Cloud Monitoring, use o comando
gcloud monitoring policies
migrate. Esse comando também permite
migrar seus receptores do Prometheus para canais de notificação
do Cloud Monitoring.
- Para migrar uma regra de alerta, você precisa ter um arquivo YAML ou JSON do Prometheus (link em inglês) que contenha a regra de alerta.
Para migrar um destinatário, você precisa de um arquivo YAML ou JSON do Alertmanager do Prometheus que contenha o destinatário.
OGoogle Cloud não é compatível com a migração de regras de gravação do Prometheus. Para usar regras de gravação, recomendamos usar um avaliador de regras autodeployado.
Criar uma política de alertas com base em um arquivo de configuração do Prometheus
Para criar uma política de alertas com base em um arquivo de configuração do Prometheus, execute o seguinte comando. É possível criar várias políticas de alertas fornecendo vários caminhos de arquivo:
gcloud monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2
Criar canais de notificação com base em um arquivo de configuração do Prometheus Alertmanager
Para criar canais de notificação com base em um arquivo de configuração do Alertmanager do Prometheus, execute o seguinte comando:
gcloud monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
Criar políticas de alerta e canais de notificação ao mesmo tempo
Para criar políticas de alerta com base em arquivos de configuração do Prometheus e canais de notificação com base em um arquivo de configuração do Prometheus Alertmanager ao mesmo tempo, execute o seguinte comando:
gcloud monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2 \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
Exemplo
Você tem um arquivo de configuração do Prometheus com uma regra de alerta que envia um alerta quando a utilização da CPU permanece acima de 75% por um minuto. A regra de alerta é configurada da seguinte maneira:
groups:
- name: Utilization_Alerts
interval: 30s
rules:
- alert: CPU_Utilization_Over_75
expr: compute_googleapis_com:instance_cpu_utilization > 75
for: 60s
labels:
severity: page
annotations:
subject: "Subject: ${metric.label.value}"
description: "CPU utilization is over 75%"
Você também tem um arquivo do Prometheus AlertManager que contém recebedores de e-mail, PagerDuty e webhook.
receivers: - name: 'team-emails' email_configs: - to: EMAIL_ADDRESS - name: 'team-pager' pagerduty_configs: - service_key: SERVICE_KEY - name: 'team-webhook' webhook_configs: - url: WEBHOOK_ADDRESS
Para criar a política de alertas e o canal de notificação, execute o seguinte comando:
gcloud monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_CONFIG_FILE \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_ALERTMANAGER_FILE
Em seguida, a CLI gcloud cria uma política de alertas como o exemplo a seguir:
{
"name": "projects/PROJECT_ID/alertPolicies/POLICY_ID",
"displayName": "Utilization_Alerts/CPU_Utilization_Over_75",
"documentation": {
"content": "CPU utilization is over 75%",
"mimeType": "text/markdown",
"subject": "Subject: ${metric.label.value}"
},
"userLabels": {},
"conditions": [
{
"name": "projects/PROJECT_ID/alertPolicies/POLICY_ID/conditions/CONDITION_ID",
"displayName": "CPU_Utilization_Over_75"
"conditionPrometheusQueryLanguage": {
"alertRule": "CPU_Utilization_Over_75",
"duration": "60s",
"evaluationInterval": "30s",
"labels": {
"severity": "page"
},
"query": "compute_googleapis_com:instance_cpu_utilization > 75",
"ruleGroup": "Utilization_Alerts"
}
}
],
"alertStrategy": {},
"combiner": "OR",
"enabled": true,
"notificationChannels": [
"projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_1",
"projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_2",
"projects/google.com:PROJECT_ID/notificationChannels/CHANNEL_ID_3"
]
}
Migrar regras de alerta do Managed Service para Prometheus
Google Cloud configura a avaliação de regras gerenciadas para o Managed Service para Prometheus usando os recursos personalizados Rules, ClusterRules e GlobalRules.
Para migrar esses recursos para uma política de alertas baseada em PromQL, faça o seguinte: Google Cloud
Copie a seção
groupsdo recurso personalizado em um novo arquivo de regras do Prometheus.Migre o arquivo de regras usando a CLI gcloud.
Por exemplo, você tem o seguinte recurso personalizado de regras:
apiVersion: monitoring.googleapis.com/v1
kind: Rules
metadata:
namespace: NAMESPACE_NAME
name: example-rules
spec:
groups:
- name: example
interval: 30s
rules:
- alert: FewerThanTenInstancesUp
expr: sum(up) < 10
O arquivo de regras do Prometheus criado copiando groups do recurso personalizado de regras anterior teria esta aparência:
groups:
- name: example
interval: 30s
rules:
- alert: FewerThanTenInstancesUp
expr: sum(up) < 10
Migrar vários recursos personalizados de regras
Se você quiser migrar várias regras, CustomRules ou GlobalRules, recomendamos criar e migrar um arquivo de regras separado para cada recurso. Para mais informações, consulte a documentação do Prometheus.
Gerenciar expressões de filtro e agregação
As regras e ClusterRules filtram automaticamente as expressões de alerta do Prometheus com base em determinados rótulos. Para preservar esse comportamento na consulta de uma política de alertas migrada, inclua explicitamente esses rótulos em um filtro ou expressão de agregação no arquivo de regras do Prometheus antes de migrar o arquivo.
Por exemplo, o avaliador de regras gerenciado do Managed Service para Prometheus executa a expressão sum(up) < 10 da seguinte maneira:
sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10
No entanto, se uma política de alertas tiver a consulta PromQL
sum(up) < 10, o Cloud Monitoring vai executar a consulta apenas como
sum(up) < 10. Essa consulta é aplicada a todos os projetos, clusters e namespaces no escopo de métricas. Google Cloud Para evitar esse comportamento, recomendamos
agregar por rótulos na consulta para garantir que o Cloud Monitoring execute
a consulta conforme o esperado. Por exemplo, ao criar o arquivo de regras com o recurso personalizado de regras, você pode mudar sum(up) < 10 para a seguinte expressão:
sum (up) by (project_id, cluster, namespace) < 10
A expressão anterior gera uma série temporal separada para cada projeto, cluster e namespaceGoogle Cloud e compara cada série temporal ao limite de alerta de <10.
A tabela a seguir mostra a ordem de avaliação dos filtros de expressão de alerta para regras e ClusterRules:
| Tipo de recurso da regra | Filtrar rótulos |
|---|---|
| Regra |
|
| ClusterRule |
|
Para mais informações sobre o comportamento de filtragem em expressões do Prometheus, consulte Seletores de vetor instantâneo.