Migra las reglas de alerta y los receptores desde Prometheus

En esta página, se describe cómo migrar reglas de alertas de Prometheus a Cloud Monitoring políticas de alertas con una condición basada en PromQL. El proceso de migración es útil si usas PromQL en entornos fuera de Google Cloud. Mediante la migración tus reglas de alerta de Prometheus a Cloud Monitoring, puedes administrar tus políticas de alertas en un entorno.

Para obtener información general sobre las políticas de alertas consulta Políticas de alertas con PromQL.

También puedes importar paneles de Grafana. Para obtener más información, consulta Importa los paneles de Grafana a Cloud Monitoring.

Cómo funciona la migración

En gcloud CLI, puedes migrar tus reglas de alerta existentes y receptores para crear políticas de alertas y canales de notificaciones de Cloud Monitoring. Gcloud CLI puede realizar los siguientes tipos de migración:

  • Si proporcionas un archivo de configuración de Prometheus con una regla de alerta, gcloud CLI crea una política con una condición basada en PromQL.

    Puedes proporcionar varios archivos de configuración de Prometheus al mismo tiempo para crear varias políticas de alertas con una condición basada en PromQL.

  • Si proporcionas una instancia de Prometheus, Administrador de alertas con al menos un receptor, gcloud CLI convierte cada de notificaciones en un canal de notificaciones equivalente en Monitoring.

  • Si proporcionas un archivo Prometheus Alertmanager y archivo de configuración de Prometheus al mismo tiempo, Luego, gcloud CLI crea la política de alertas y la notificación canales y, luego, asocia cada nuevo canal de notificaciones con el nuevo política de alertas.

    Si proporcionas varios archivos de configuración con reglas de alerta, entonces, gcloud CLI asigna cada canal de notificaciones desde el archivo Alertmanager a cada política de alertas nueva.

Si tu regla de alertas de Prometheus hace referencia a una métrica personalizada, el gcloud CLI requiere un descriptor de métrica equivalente para crear la política de alertas.

Los archivos de configuración de Prometheus y los archivos de Prometheus Alertmanager deben formateados como archivos de reglas válidos de Prometheus en YAML o JSON.

Asignación de campos

Gcloud CLI asigna campos entre alertas de Prometheus y una política de alertas de Cloud Monitoring de la siguiente manera:

Regla de alertas de Prometheus Política de alertas de Cloud Monitoring
alert conditionPrometheusQueryLanguage.alertRule
expr conditionPrometheusQueryLanguage.query
for conditionPrometheusQueryLanguage.duration
labels conditionPrometheusQueryLanguage.labels
annotations: "summary" documentation.subject
annotations: "description" documentation.content

Variables de la documentación de Google Cloud en las reglas de alertas de Prometheus migradas

Prometheus usa plantillas de campos de alerta para configurar variables en anotaciones y etiquetas de reglas de alerta. Cuando migras reglas de alertas de Prometheus que tienen plantillas de campo de alerta, Cloud Monitoring las convierte a las variables de documentación de Cloud Monitoring de la siguiente manera:

Plantilla de campo de alerta de Prometheus Variable de documentación de Cloud Monitoring
{{$value}}

${metric.label.value}

Esta variable es una implementación de ${metric.label.KEY}, en la que value contiene el valor de la consulta de PromQL.

{{humanize $value}}

${metric.label.value}

Esta variable es una implementación de ${metric.label.KEY}, en la que value contiene el valor de la consulta de PromQL.

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

Aparece como ${metric_or_resource.label.KEY} en la configuración de la documentación de la política de alertas.

  • Si KEY es una etiqueta válida, esta variable se renderiza en la notificación como el valor de ${metric.label.KEY}.
  • Si KEY es un recurso válido, esta variable se renderiza en la notificación como el valor de ${resource.label.KEY}.
  • Si KEY no es una etiqueta válida ni un recurso válido, esta variable se renderiza en la notificación como una cadena vacía.
{{humanize $labels.<key>}}

Aparece como ${metric_or_resource.label.KEY} en la configuración de la documentación de la política de alertas.

  • Si KEY es una etiqueta válida, esta variable se renderiza en la notificación como el valor de ${metric.label.KEY}.
  • Si KEY es un recurso válido, esta variable se renderiza en la notificación como el valor de ${resource.label.KEY}.
  • Si KEY no es una etiqueta válida ni un recurso válido, esta variable se renderiza en la notificación como una cadena vacía.

Migra las reglas de alerta y los receptores desde Prometheus

Para migrar tus reglas de alertas de Prometheus a las políticas de alertas de Cloud Monitoring con condiciones basadas en PromQL, usa el Comando gcloud alpha monitoring policies migrate. Este comando también te permite migrar tus receptores de Prometheus a Cloud Monitoring canales de notificaciones.

  • Para migrar una regla de alertas, debes tener una instancia de Prometheus rule file que contenga la regla de alerta.
  • Para migrar un receptor, debes usar Prometheus Alertmanager que contiene la receptor.

Google Cloud no admite la migración de Prometheus reglas de grabación. Para usar las reglas de grabación, te recomendamos que uses evaluador de reglas de implementación automática.

Crea una política de alertas desde un archivo de configuración de Prometheus

Para crear una política de alertas desde un archivo de configuración de Prometheus, ejecuta el siguiente comando. Puedes crear varias políticas de alertas proporcionando varias rutas de acceso a archivos:

gcloud alpha monitoring policies migrate \
--policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2

Crea canales de notificaciones desde un archivo de configuración de Prometheus Alertmanager

Para crear canales de notificaciones desde una configuración de Prometheus Alertmanager ejecuta el siguiente comando:

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

Crea políticas de alertas y canales de notificaciones al mismo tiempo

Para crear políticas de alertas a partir de archivos de configuración de Prometheus y crear canales de notificaciones desde una configuración de Prometheus Alertmanager al mismo tiempo, ejecuta el siguiente 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

Ejemplo

Tienes un archivo de configuración de Prometheus con una regla de alerta que envía una alerta cuando el uso de CPU se mantiene superior al 75% durante un minuto. El regla de alerta se configura de la siguiente manera:

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%"

También tienes un archivo Prometheus AlertManager que contiene por correo electrónico, PagerDuty y los receptores de 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 crear la política de alertas y el canal de notificaciones, ejecuta el siguiente 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

Luego, gcloud CLI crea una política de alertas como la siguiente ejemplo:

  {
  "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"
  ]
}

Migra las reglas de alertas desde Managed Service para Prometheus

Google Cloud configura Evaluación de reglas administradas para Managed Service para Prometheus con las reglas, ClusterRules y Recursos personalizados GlobalRules.

Para migrar estos recursos a una política de alertas de Google Cloud con una Condición basada en PromQL, haz lo siguiente:

  1. Copia la sección groups del recurso personalizado en un nuevo archivo de regla de Prometheus.

  2. Migra el archivo de regla con gcloud CLI.

Por ejemplo, tienes el siguiente recurso personalizado de reglas:

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

El archivo de reglas de Prometheus creado mediante la copia de groups de las reglas anteriores recurso personalizado se vería de la siguiente manera:

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

Migra varios recursos personalizados de reglas

Si desea migrar varias reglas, CustomRules o GlobalRules, te recomendamos que construyas y migres un archivo de reglas separado para cada recurso. Para obtener más información, consulta la Documentación de Prometheus.

Administra expresiones de agregación y filtros

Las reglas y ClusterRules filtran automáticamente su alerta de Prometheus. expresiones basadas en ciertas etiquetas. Para preservar este comportamiento en la consulta de un grupo debes incluir explícitamente estas etiquetas en un filtro o expresión de agregación en tus de Prometheus antes de migrarlo.

Por ejemplo: el evaluador de reglas administradas para Managed Service para Prometheus ejecuta la expresión sum(up) < 10 de la siguiente manera:

sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10

Sin embargo, si una política de alertas tiene la consulta sum(up) < 10, Cloud Monitoring ejecutará la consulta solo sum(up) < 10. Esta consulta se aplica a cada proyecto, clúster, y espacio de nombres en tu permiso de métricas. Para evitar este comportamiento, recomendamos agregando por etiquetas en tu consulta para garantizar que Cloud Monitoring se ejecute tu consulta según lo previsto. Por ejemplo, cuando creas tu archivo de reglas desde el Reglas personalizadas, puedes cambiar sum(up) < 10 por la siguiente expresión:

sum (up) by (project_id, cluster, namespace) < 10

La expresión anterior genera una serie temporal separada para cada proyecto, clúster y espacio de nombres de Google Cloud y, luego, compara cada serie temporal con el umbral de alerta de <10.

En la siguiente tabla, se muestra el orden de evaluación de los filtros de expresiones de alerta para Rules y ClusterRules:

Tipo de recurso de regla Filtrar etiquetas
Regla
  1. project_id
  2. cluster
  3. namespace
ClusterRule
  1. project_id
  2. cluster

Para obtener más información sobre el comportamiento de filtrado en las expresiones de Prometheus, consulta Selectores de vectores instantáneos.