Nesta página, descrevemos como migrar regras de alerta do Prometheus para políticas de alertas do Cloud Monitoring com uma condição baseada em PromQL. O processo de migração é útil se você usa o PromQL em ambientes fora do Google Cloud. Ao migrar as regras de alertas do Prometheus para o Cloud Monitoring, é possível gerenciar todas as políticas de alertas em um ambiente.
Para informações gerais sobre políticas de alertas com condições baseadas em PromQL, consulte Políticas de alertas com PromQL.
Também é possível importar painéis do Grafana. Para mais informações, acesse Importar painéis do Grafana para o Cloud Monitoring.
Como funciona a migração
Na CLI gcloud, é possível migrar os receptores e as regras de alerta atuais 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 criará uma política de alertas com uma condição 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 com uma condição baseada em PromQL.
Se você fornecer um arquivo Alertmanager do Prometheus com pelo menos um receptor, a CLI gcloud converterá cada receptor em um canal de notificação equivalente no Monitoring.
Se você fornecer um arquivo de Alertmanager do Prometheus e um arquivo de configuração do Prometheus ao mesmo tempo, a CLI gcloud 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 atribuirá cada canal de notificação do arquivo Alertmanager a cada nova política de alertas.
Se a regra de alerta do Prometheus se referir 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 os arquivos Alertmanager do Prometheus precisam ser 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 alerta 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 |
Variáveis da documentação do Google Cloud nas regras de alerta migradas do Prometheus
O Prometheus usa modelos de campo de alerta para configurar variáveis nas anotações e rótulos de regras de alerta. Quando você migra as 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 da 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 alerta do Prometheus para as do Cloud Monitoring
com condições baseadas no PromQL, use o
comando gcloud alpha monitoring policies
migrate
. Esse comando também permite migrar os receptores do Prometheus para os canais de notificação do Cloud Monitoring.
- Para migrar uma regra de alerta, você precisa ter um arquivo de regras YAML ou JSON do Prometheus que contenha a regra de alerta.
Para migrar um receptor, é preciso um arquivo Alertmanager YAML ou JSON do Prometheus que contenha o recebedor.
O Google Cloud não oferece suporte à migração das regras de gravação do Prometheus. Para usar regras de gravação, recomendamos o uso de um avaliador de regras autoimplantado.
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 comando a seguir. É possível criar várias políticas de alertas fornecendo vários caminhos de arquivo:
gcloud alpha 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 a partir de um arquivo de configuração do Prometheus Alertmanager, execute o seguinte comando:
gcloud alpha monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
Crie políticas de alertas e canais de notificação ao mesmo tempo
Para criar políticas de alertas a partir de arquivos de configuração do Prometheus e para criar canais de notificação de um arquivo de configuração do Prometheus Alertmanager ao mesmo tempo, execute o seguinte comando:
gcloud alpha 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 fica maior que 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 Prometheus AlertManager que contém receptores 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 alpha 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
O 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 do Google Cloud com uma condição baseada no PromQL, faça o seguinte:
Copie a seção
groups
do 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 ao copiar groups
do recurso personalizado de regras anterior
ficaria assim:
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 agregação e filtro
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 uma expressão de filtro ou agregação no arquivo de regras do Prometheus antes de migrá-lo.
Por exemplo,
o avaliador de regras gerenciadas 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 do PromQL
sum(up) < 10
, o Cloud Monitoring a executará como apenas
sum(up) < 10
. Essa consulta é aplicada a cada projeto, cluster
e namespace do Google Cloud no escopo de métricas. Para evitar esse comportamento, recomendamos
agregar por rótulos na consulta para garantir que o Cloud Monitoring a execute
conforme pretendido. Por exemplo, ao criar o arquivo de regras do
recurso personalizado de regras, você pode alterar 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 namespace do Google Cloud e, em seguida, compara cada série temporal com o 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 de regra | Filtrar rótulos |
---|---|
Regra |
|
ClusterRule |
|
Para mais informações sobre o comportamento de filtragem nas expressões do Prometheus, consulte Seletores de vetores instantâneos.