Questa pagina descrive come eseguire la migrazione delle regole di avviso Prometheus ai criteri di avviso di Cloud Monitoring con una condizione basata su PromQL. La procedura di migrazione è utile se utilizzi PromQL in ambienti esterni a Google Cloud. Eseguendo la migrazione delle regole di avviso di Prometheus a Cloud Monitoring, puoi gestire tutti i tuoi criteri di avviso in un unico ambiente.
Per informazioni generali sui criteri di avviso con condizioni basate su PromQL, consulta Criteri di avviso con PromQL.
Puoi anche importare le dashboard di Grafana. Per ulteriori informazioni, consulta Importare le dashboard di Grafana in Cloud Monitoring.
Come funziona la migrazione
Nella gcloud CLI, puoi eseguire la migrazione di regole e destinatari di avviso esistenti per creare criteri di avviso e canali di notifica di Cloud Monitoring. Gcloud CLI può eseguire i seguenti tipi di migrazione:
Se fornisci un file di configurazione Prometheus con una regola di avviso, la gcloud CLI crea una policy di avviso con una condizione basata su PromQL.
Puoi fornire più file di configurazione Prometheus contemporaneamente per creare più criteri di avviso con una condizione basata su PromQL.
Se fornisci un file Prometheus Alertmanager con almeno un destinatario, la gcloud CLI converte ogni destinatario in un canale di notifica equivalente in Monitoraggio.
Se fornisci contemporaneamente un file Prometheus Alertmanager e un file di configurazione Prometheus, la gcloud CLI crea i canali di notifica e le norme di avviso, quindi associa ogni nuovo canale di notifica al nuovo criterio di avviso.
Se fornisci più file di configurazione con regole di avviso, gcloud CLI assegna ogni canale di notifica del file Alertmanager a ogni nuovo criterio di avviso.
Se la regola di avviso Prometheus fa riferimento a una metrica personalizzata, l'gcloud CLI richiede un descrittore della metrica equivalente per creare il criterio di avviso.
I file di configurazione di Prometheus e i file di Alertmanager di Prometheus devono essere formattati come file di regole Prometheus validi in YAML o JSON.
Mappatura campi
L'interfaccia a riga di comando gcloud mappa i campi tra una regola di avviso Prometheus e un criterio di avviso Cloud Monitoring come segue:
Regola di avviso Prometheus | Criterio di avviso di Cloud Monitoring |
---|---|
alert |
conditionPrometheusQueryLanguage.alertRule |
expr |
conditionPrometheusQueryLanguage.query |
for |
conditionPrometheusQueryLanguage.duration |
labels |
conditionPrometheusQueryLanguage.labels |
annotations: "summary" |
documentation.subject |
annotations: "description" |
documentation.content |
Variabili della documentazione di Google Cloud nelle regole di avviso Prometheus migrate
Prometheus utilizza i modelli di campo di avviso per configurare le variabili nelle annotazioni e nelle etichette delle regole di avviso. Quando esegui la migrazione delle regole di avviso Prometheus con modelli di campi di avviso, Cloud Monitoring converte i modelli in variabili di documentazione di Cloud Monitoring come segue:
Modello di campo di avviso Prometheus | Variabile della documentazione di Cloud Monitoring |
---|---|
{{$value}} |
Questa variabile è un'implementazione di |
{{humanize $value}} |
Questa variabile è un'implementazione di |
{{$labels}} |
${metric_or_resource.labels} |
{{humanize $labels}} |
${metric_or_resource.labels} |
{{$labels.key}} |
Viene visualizzato come
|
{{humanize $labels.<key>}} |
Viene visualizzato come
|
Eseguire la migrazione di regole e destinatari di avviso da Prometheus
Per eseguire la migrazione delle regole di avviso di Prometheus ai criteri di avviso di Cloud Monitoring con condizioni basate su PromQL, utilizza il comando gcloud alpha monitoring policies
migrate
. Questo comando ti consente inoltre di eseguire la migrazione dei ricevitori Prometheus ai canali di notifica di Cloud Monitoring.
- Per eseguire la migrazione di una regola di avviso, devi disporre di un file di regole Prometheus in YAML o JSON contenente la regola di avviso.
Per eseguire la migrazione di un destinatario, devi avere un file Prometheus Alertmanager in formato YAML o JSON contenente il destinatario.
Google Cloud non supporta la migrazione delle regole di registrazione di Prometheus. Per utilizzare le regole di registrazione, ti consigliamo di utilizzare un valutatore delle regole di cui hai eseguito il deployment autonomamente.
Creare un criterio di avviso da un file di configurazione Prometheus
Per creare un criterio di avviso da un file di configurazione di Prometheus, esegui il seguente comando. Puoi creare più criteri di avviso specificando più percorsi file:
gcloud alpha monitoring policies migrate \ --policies-from-prometheus-alert-rules-yaml=PATH_TO_FILE_1,PATH_TO_FILE_2
Creare canali di notifica da un file di configurazione di Prometheus Alertmanager
Per creare canali di notifica da un file di configurazione di Prometheus Alertmanager, esegui il seguente comando:
gcloud alpha monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
Creare contemporaneamente criteri di avviso e canali di notifica
Per creare contemporaneamente criteri di avviso dai file di configurazione di Prometheus e canali di notifica da un file di configurazione di Prometheus Alertmanager, esegui il seguente 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
Esempio
Hai un file di configurazione Prometheus con una regola di avviso che invia un avviso quando l'utilizzo della CPU rimane superiore al 75% per un minuto. La regola di avviso è configurata come segue:
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%"
Hai anche un file Prometheus AlertManager che contiene i destinatari email, 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
Per creare il criterio di avviso e il canale di notifica, esegui il seguente 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
Gcloud CLI crea quindi un criterio di avviso come nell'esempio seguente:
{ "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" ] }
Esegui la migrazione delle regole di avviso da Managed Service per Prometheus
Google Cloud configura la valutazione delle regole gestite per Managed Service per Prometheus utilizzando le risorse personalizzate Rules, ClusterRules e GlobalRules.
Per eseguire la migrazione di queste risorse a un criterio di avviso Google Cloud con una condizione basata su PromQL, segui questi passaggi:
Copia la sezione
groups
della risorsa personalizzata in un nuovo file di regole Prometheus.Esegui la migrazione del file delle regole utilizzando gcloud CLI.
Ad esempio, hai la seguente risorsa personalizzata Regole:
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
Il file delle regole di Prometheus creato copiando groups
dalla risorsa personalizzata Regole precedente avrà il seguente aspetto:
groups: - name: example interval: 30s rules: - alert: FewerThanTenInstancesUp expr: sum(up) < 10
Eseguire la migrazione di più risorse personalizzate delle regole
Se vuoi eseguire la migrazione di più regole, CustomRules o GlobalRules, ti consigliamo di creare e migrare un file delle regole separato per ogni risorsa. Per ulteriori informazioni, consulta la documentazione di Prometheus.
Gestire le espressioni di filtro e aggregazione
Le regole e ClusterRules filtrano automaticamente le espressioni di avviso Prometheus in base a determinate etichette. Per mantenere questo comportamento nella query di un criterio di avviso sottoposto a migrazione, devi includere esplicitamente queste etichette in un filtro o in un'espressione di aggregazione nel file delle regole di Prometheus prima di eseguire la migrazione del file.
Ad esempio,
l'evaluator delle regole gestite per Managed Service per Prometheus
esegue l'espressione sum(up) < 10
come segue:
sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10
Tuttavia, se un criterio di avviso contiene la query PromQL
sum(up) < 10
, Cloud Monitoring esegue la query solo come
sum(up) < 10
. Questa query viene applicata a ogni progetto, cluster e spazio dei nomi Google Cloud nell'ambito delle metriche. Per evitare questo comportamento, ti consigliamo di aggregare per etichette nella query per assicurarti che Cloud Monitoring esegua la query come previsto. Ad esempio, quando crei il file delle regole dalla risorsa personalizzata Regole, puoi sostituire sum(up) < 10
con la seguente espressione:
sum (up) by (project_id, cluster, namespace) < 10
L'espressione precedente genera una serie temporale separata per ogni progetto, cluster e spazio dei nomi Google Cloud e poi confronta ogni serie temporale con la soglia di avviso di <10
.
La tabella seguente mostra l'ordine di valutazione dei filtri di espressione di avviso per Rules e ClusterRules:
Tipo di risorsa regola | Filtra etichette |
---|---|
Regola |
|
ClusterRule |
|
Per saperne di più sul comportamento di filtro nelle espressioni Prometheus, consulta Selezionatori di vettori istantanei.