Questa pagina descrive come eseguire la migrazione delle regole di avviso di Prometheus alle policy di avviso basate su PromQL in Cloud Monitoring. Il processo di migrazione è utile se utilizzi PromQL in ambienti esterni Google Cloud. Se esegui la migrazione delle regole di avviso di Prometheus a Cloud Monitoring, puoi gestire tutte le policy di avviso in un unico ambiente.
Per informazioni generali sulle policy di avviso basate su PromQL, consulta Panoramica degli avvisi PromQL.
Puoi anche importare dashboard Grafana. Per saperne di più, consulta Importare dashboard Grafana in Cloud Monitoring.
Come funziona la migrazione
Nella gcloud CLI, puoi eseguire la migrazione delle regole di avviso e dei destinatari 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 di Prometheus con una regola di avviso, gcloud CLI crea una criterio di avviso basata su PromQL.
Puoi fornire più file di configurazione di Prometheus contemporaneamente per creare più criteri di avviso basati su PromQL.
Se fornisci un file Prometheus Alertmanager� con almeno un destinatario, gcloud CLI converte ogni destinatario in un canale di notifica equivalente in Monitoring.
Se fornisci contemporaneamente un file Prometheus Alertmanager e un file di configurazione Prometheus, gcloud CLI crea la criterio di avviso e i canali di notifica, quindi associa ogni nuovo canale di notifica alla nuova criterio di avviso.
Se fornisci più file di configurazione con regole di avviso, l'gcloud CLId assegna ogni canale di notifica dal file Alertmanager a ogni nuovacriterio di avvisoo.
Se la regola di avviso di Prometheus fa riferimento a una metrica personalizzata, la gcloud CLI richiede undescrittore della metricaa equivalente per creare la criterio di avvisoso.
I file di configurazione di Prometheus e di Prometheus Alertmanager devono essere formattati come file di regole Prometheus validi in formato YAML o JSON.
Mappatura campi
Gcloud CLI mappa i campi tra una regola di avviso di Prometheus e un criterio di avviso di Cloud Monitoring nel seguente modo:
| 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 diGoogle Cloud nelle regole di avviso Prometheus migrate
Prometheus utilizza i modelli di campi di avviso per configurare le variabili nelle annotazioni e nelle etichette delle regole di avviso. Quando esegui la migrazione delle regole di avviso di Prometheus che hanno modelli di campi di avviso, Cloud Monitoring converte i modelli in variabili di documentazione di Cloud Monitoring nel seguente modo:
| 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
|
Esegui la migrazione di regole di avviso e ricevitori da Prometheus
Per eseguire la migrazione delle regole di avviso di Prometheus alle policy di avviso basate su PromQL di Cloud Monitoring, utilizza il comando
gcloud monitoring policies
migrate. Questo comando ti consente anche 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 YAML o JSON che contenga la regola di avviso.
Per eseguire la migrazione di un destinatario, devi disporre di un file YAML o JSON Prometheus Alertmanager che contenga 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 di regole autogestito.
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 fornendo più percorsi di file:
gcloud 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 questo comando:
gcloud monitoring policies migrate \ --channels-from-prometheus-alertmanager-yaml=PATH_TO_FILE
Creare criteri di avviso e canali di notifica contemporaneamente
Per creare criteri di avviso dai file di configurazione di Prometheus e per creare canali di notifica da un file di configurazione di Prometheus Alertmanager contemporaneamente, esegui questo 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
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 nel modo seguente:
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 destinatari di 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 questo comando:
gcloud 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 il seguente esempio:
{
"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 le 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 una criterio di avviso basata su PromQL: Google Cloud
Copia la sezione
groupsdella risorsa personalizzata in un nuovo file di regole di Prometheus.Esegui la migrazione del file di regole utilizzando gcloud CLI.
Ad esempio, hai la seguente risorsa personalizzata Rules:
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 Rules
precedente avrebbe il seguente aspetto:
groups:
- name: example
interval: 30s
rules:
- alert: FewerThanTenInstancesUp
expr: sum(up) < 10
Eseguire la migrazione di più risorse personalizzate di regole
Se vuoi eseguire la migrazione di più regole, CustomRules o GlobalRules, ti consigliamo di creare ed eseguire la migrazione di un file di regole separato per ogni risorsa. Per saperne di più, consulta la documentazione di Prometheus.
Gestire le espressioni di filtro e aggregazione
Le regole e le ClusterRules filtrano automaticamente le espressioni di avviso di Prometheus in base a determinate etichette. Per preservare questo comportamento nella query di unacriterio di avvisoo migrata, devi includere esplicitamente queste etichette in un filtro o in un'espressione di aggregazione nel tuo file di regole Prometheus prima di eseguire la migrazione del file.
Ad esempio,
lo strumento di valutazione delle regole gestito per Managed Service per Prometheus
esegue l'espressione sum(up) < 10 nel seguente modo:
sum(up{project_id="test-project", cluster="test-cluster", namespace="NAMESPACE_NAME"}) < 10
Tuttavia, se una criterio di avviso ha 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 nell'ambito delle metriche. Google Cloud 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 di regole dalla risorsa personalizzata Regole, puoi modificare sum(up) < 10 nella 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, quindi confronta ogni serie temporale con
la soglia di avviso di <10.Google Cloud
La tabella seguente mostra l'ordine di valutazione dei filtri delle espressioni di avviso per Rules e ClusterRules:
| Tipo di risorsa della regola | Filtra etichette |
|---|---|
| Regola |
|
| ClusterRule |
|
Per saperne di più sul comportamento di filtraggio nelle espressioni Prometheus, consulta Selettori di vettori istantanei.