Migrar regras de alerta e receptores do Prometheus

Nesta página, descrevemos como migrar regras de alertas do Prometheus para o Cloud Monitoring. políticas de alertas com uma condição baseada em PromQL. O processo de migração é útil se você usa PromQL em ambientes fora do Google Cloud. Migração regras de alerta do Prometheus para o Cloud Monitoring, é possível gerenciar as políticas de alertas em um só ambiente.

Para informações gerais sobre políticas de alertas com modelos baseados em PromQL condições, consulte Políticas de alertas com 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 funciona a migração

Na CLI gcloud, é possível migrar suas regras de alertas e receptores 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 cria uma política 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 Prometheus Alertmanager (link em inglês) arquivo com pelo menos um receptor, a CLI gcloud converte cada receptor para um canal de notificação equivalente no Monitoring.

  • Se você fornecer um arquivo Alertmanager do Prometheus e um do arquivo de configuração do Prometheus ao mesmo tempo, a CLI gcloud cria a política de alertas e a notificação canais de notificação e associa cada novo canal de notificação e a política de alertas.

    Se você fornecer vários arquivos de configuração com regras de alerta, a CLI gcloud atribui todos os canais de notificação o arquivo Alertmanager a cada nova política de alertas.

Se a regra de alertas do Prometheus mencionar uma métrica personalizada, o CLI gcloud requer um descritor de métrica equivalente para criar a política de alertas.

Os arquivos de configuração e os arquivos do Prometheus 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 um alerta do Prometheus e uma política de alertas do Cloud Monitoring da seguinte maneira:

Regra de alertas 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 de documentação do Google Cloud em regras de alertas migradas do Prometheus

O Prometheus usa modelos de campo de alerta para configurar variáveis. em rótulos e anotações de regras de alertas. Quando você migra regras de alertas do Prometheus que têm modelos de campo de alerta, o Cloud Monitoring converte os modelos às 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}}

${metric.label.value}

Essa variável é uma implementação de ${metric.label.KEY}, em que value contém o valor da consulta PromQL.

{{humanize $value}}

${metric.label.value}

Essa variável é uma implementação de ${metric.label.KEY}, em que value contém o valor da consulta PromQL.

{{$labels}} ${metric_or_resource.labels}
{{humanize $labels}} ${metric_or_resource.labels}
{{$labels.key}}

Aparece como ${metric_or_resource.label.KEY} na configuração da documentação da política de alertas.

  • Se KEY for um rótulo válido, essa variável será renderizada na notificação como o valor de ${metric.label.KEY}.
  • Se KEY for um recurso válido, essa variável será renderizada na notificação como o valor de ${resource.label.KEY}.
  • Se KEY não for um rótulo nem um recurso válidos, essa variável será renderizada na notificação como uma string vazia.
{{humanize $labels.<key>}}

Aparece como ${metric_or_resource.label.KEY} na configuração da documentação da política de alertas.

  • Se KEY for um rótulo válido, essa variável será renderizada na notificação como o valor de ${metric.label.KEY}.
  • Se KEY for um recurso válido, essa variável será renderizada na notificação como o valor de ${resource.label.KEY}.
  • Se KEY não for um rótulo nem um recurso válidos, essa variável será renderizada na notificação como uma string vazia.

Migrar regras de alerta e receptores do Prometheus

Para migrar suas regras de alertas do Prometheus para políticas de alertas do Cloud Monitoring com condições baseadas em PromQL, use o Comando gcloud alpha monitoring policies migrate. Esse comando também permite que você migrar os receptores do Prometheus para o Cloud Monitoring canais de notificação.

  • Para migrar uma regra de alerta, você precisa ter um YAML ou JSON Prometheus arquivo de regras que contenha as regra de alerta.
  • Para migrar um receptor, você precisa usar um YAML ou JSON Alertmanager que contiver receptor.

O Google Cloud não oferece suporte à migração do Prometheus regras de gravação. Para usar as regras de gravação, recomendamos o uso de uma avaliador de regras autoimplantado.

crie 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 com base em uma configuração do Prometheus Alertmanager execute o seguinte comando:

gcloud alpha monitoring policies migrate \
--channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE

Criar 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 criar canais de notificação com base em uma 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 acima de 75% por um minuto. O é 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 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 a 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 avaliação de regras gerenciadas no Managed Service para Prometheus usando as Regras, ClusterRules, e GlobalRules.

Para migrar esses recursos para uma política de alertas do Google Cloud com um Faça o seguinte:

  1. Copie a seção groups do recurso personalizado para um um novo arquivo de regras do Prometheus.

  2. 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 o groups das regras anteriores recurso personalizado será semelhante a esta:

  groups:
  - name: example
    interval: 30s
    rules:
    - alert: FewerThanTenInstancesUp
      expr: sum(up) < 10

Migrar vários recursos personalizados de regras

Para migrar várias regras, CustomRules ou GlobalRules, recomendamos construir 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 as ClusterRules filtram automaticamente os alertas do Prometheus expressões baseadas em determinados rótulos. Para preservar esse comportamento na consulta de um bucket política de alertas, inclua esses rótulos explicitamente em um filtro ou expressão de agregação na sua arquivo de regras do Prometheus antes da migração.

Por exemplo: Avaliador de regras gerenciadas do Managed Service para Prometheus executa a expressão sum(up) < 10 desta forma:

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 executará a consulta apenas como sum(up) < 10: Essa consulta é aplicada a todos os clusters, projetos e e namespace no escopo das métricas. Para evitar esse comportamento, recomendamos agregar por rótulos na consulta para garantir que o Cloud Monitoring seja executado sua consulta conforme pretendido. Por exemplo, quando você cria o arquivo de regras na Recurso personalizado de regras, é possível mudar sum(up) < 10 para o 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 da expressão de alerta para regras e ClusterRules:

Tipo de recurso da regra Filtrar rótulos
Regra
  1. project_id
  2. cluster
  3. namespace
ClusterRule
  1. project_id
  2. cluster

Para mais informações sobre o comportamento de filtragem nas expressões do Prometheus, consulte Seletores de vetores instantâneos.