Annota gli avvisi con la documentazione definita dall'utente

In questa pagina viene descritto come configurare la documentazione sui criterio di avviso per personalizzare il corpo e l'oggetto delle notifiche. I campi della documentazione supportano testo normale, Markdown, variabili e controlli specifici per canale.

Aggiungi informazioni alla notifica

Puoi fornire agli addetti alla risposta agli avvisi i passaggi per la correzione e informazioni sull'incidente nella notifica, specificando i contenuti quando crei il criterio di avviso. Ad esempio, puoi configurare il criterio di avviso in modo da includere link a un playbook interno in tutte le notifiche.

Per un'implementazione di esempio, consulta la sezione Esempio di questa pagina.

Configura la riga dell'oggetto delle notifiche

Puoi gestire e ordinare le notifiche specificando la relativa riga. La lunghezza dell'oggetto non può superare i 255 caratteri. Se non definisci un soggetto nella documentazione, Cloud Monitoring determina la riga dell'oggetto.

Puoi configurare la riga dell'oggetto quando utilizzi l'API Cloud Monitoring, Google Cloud CLI o la console Google Cloud.

Per un'implementazione di esempio, consulta la sezione Esempio di questa pagina.

Utilizzo di Markdown

Il campo della documentazione supporta il seguente sottoinsieme di tagging Markdown:

  • Intestazioni, indicate da caratteri hash iniziali.
  • Elenchi non ordinati, indicati con i segni iniziali più, meno o un asterisco.
  • Elenchi ordinati, indicati da un numero iniziale seguito da un punto.
  • Testo in corsivo, indicato da singoli trattini bassi o asterischi intorno a una frase.
  • Testo in grassetto, indicato da due trattini bassi o asterischi prima di una frase.
  • Link, indicati dalla sintassi [link text](url).

Per ulteriori informazioni su questo tagging, consulta qualsiasi riferimento di Markdown, ad esempio la Guida a Markdown.

Utilizzo delle variabili

Per personalizzare il testo nella documentazione, puoi utilizzare le variabili del modulo ${varname}. Quando la documentazione viene inviata con una notifica, la stringa ${varname} viene sostituita con un valore tratto dalla risorsa Google Cloud corrispondente, come descritto nella tabella seguente.

Variabile Valore
condition.name Il nome della risorsa REST della condizione, ad esempio
projects/foo/alertPolicies/1234/conditions/5678.
condition.display_name Il nome visualizzato di una condizione, come CPU usage increasing rapidly.
log.extracted_label.KEY Il valore dell'etichetta KEY, estratto da una voce di log. Solo per avvisi basati su log; per saperne di più, consulta Creare un avviso basato su log utilizzando l'API Monitoring.
metadata.system_label.KEY Il valore dell'etichetta dei metadati della risorsa fornita dal sistema KEY.1
metadata.user_label.KEY Il valore dell'etichetta dei metadati delle risorse definita dall'utente KEY.1,3
metric.type Il tipo di metrica, ad esempio
compute.googleapis.com/instance/cpu/utilization.
metric.display_name Il nome visualizzato per il tipo di metrica, ad esempio CPU utilization.
metric.label.KEY

Il valore dell'etichetta della metrica KEY.1
Per trovare le etichette associate al tipo di metrica, consulta Elenco delle metriche.

Quando il valore della variabile ${metric.label.KEY} non inizia con un numero, una lettera, una barra (/) o un segno uguale (=), Monitoring omette l'etichetta nelle notifiche.

Quando esegui la migrazione di una regola di avviso di Prometheus, i modelli di campi di avviso di Prometheus {{$value}} e {{humanize $value}} vengono visualizzati come ${metric.label.VALUE} nella configurazione della documentazione criterio di avviso. In questo caso, VALUE contiene il valore della query PromQL.

Puoi anche utilizzare ${metric.label.VALUE} quando crei query PromQL in Google Cloud.

metric_or_resource.labels

Questa variabile esegue il rendering di tutti i valori delle metriche e delle etichette delle risorse come elenco ordinato di key-value coppie. Se un'etichetta di metrica e un'etichetta di risorsa hanno lo stesso nome, viene visualizzata solo l'etichetta della metrica.

Quando esegui la migrazione di una regola di avviso di Prometheus, i modelli di campi di avviso di Prometheus {{$labels}} e {{humanize $labels}} vengono visualizzati come ${metric_or_resource.labels} nella configurazione della documentazione criterio di avviso.

metric_or_resource.label.KEY
  • Se KEY è un'etichetta valida, nella notifica viene visualizzata la variabile come valore ${metric.label.KEY}.
  • Se KEY è una risorsa valida, questa variabile viene visualizzata nella notifica come il valore ${resource.label.KEY}.
  • Se KEY non è né un'etichetta né una risorsa valida, questa variabile viene visualizzata nella notifica come stringa vuota.

Quando esegui la migrazione di una regola di avviso di Prometheus, i modelli di campi di avviso di Prometheus {{$labels.KEY}} e {{humanize $labels.KEY}} vengono visualizzati come ${metric_or_resource.labels.KEY} nella configurazione della documentazione dei criteri di avviso.

policy.name Il nome della risorsa REST del criterio, ad esempio projects/foo/alertPolicies/1234.
policy.display_name Il nome visualizzato di un criterio, ad esempio High CPU rate of change.
policy.user_label.KEY Il valore dell'etichetta utente KEY.1

Le chiavi devono iniziare con una lettera minuscola. Le chiavi e i valori possono contenere solo lettere minuscole, numeri, trattini bassi e trattini.

project L'ID del progetto di definizione dell'ambito di un ambito delle metriche, come a-gcp-project.
resource.type Il tipo di risorsa monitorata, ad esempio gce_instance.
resource.project L'ID progetto della risorsa monitorata del criterio di avviso.
resource.label.KEY Il valore dell'etichetta della risorsa KEY.1,2,3
Per trovare le etichette associate al tipo di risorsa monitorata, consulta Elenco delle risorse.

1 Ad esempio, ${resource.label.zone} viene sostituito con il valore dell'etichetta zone. I valori di queste variabili sono soggetti a raggruppamento; consulta i valori di null per saperne di più.
2 Per recuperare il valore dell'etichetta project_id su una risorsa monitorata nel criterio di avviso, utilizza ${resource.project}.
3 Non puoi accedere alle etichette dei metadati delle risorse definite dall'utente utilizzando resource.label.KEY. Usa metadata.user_label.KEY.

Note sull'utilizzo

  • Sono supportate solo le variabili nella tabella. Non puoi combinarli in espressioni più complesse, come ${varname1 + varname2}.
  • Per includere la stringa letterale ${ nella documentazione, esegui l'escape del simbolo $ con un secondo simbolo $ e $${ viene visualizzato come ${ nella documentazione.
  • Queste variabili vengono sostituite dai rispettivi valori solo nelle notifiche inviate tramite i canali di notifica. Nella console Google Cloud, quando viene mostrata la documentazione, vedi le variabili, non i valori. Alcuni esempi nella console includono le descrizioni degli incidenti e l'anteprima della documentazione durante la creazione di un criterio di avviso.
  • Assicurati che le impostazioni di aggregazione della condizione non eliminino l'etichetta. Se l'etichetta viene eliminata, il suo valore nella notifica sarà null. Per ulteriori informazioni, consulta La variabile per un'etichetta di metrica è nulla.

Esempio

L'esempio seguente mostra le versioni della console Google Cloud e dell'API Cloud Monitoring della documentazione del modello per un criterio di avviso relativo all'utilizzo della CPU, nonché la documentazione visualizzata nel corpo di una notifica. Questo esempio utilizza un indirizzo email per il tipo di canale di notifica. Il modello di documentazione include diverse variabili per riepilogare l'incidente e fare riferimento alle risorse REST del criterio di avviso e della condizione.

Console Google Cloud

## CPU utilization exceeded

### Summary

The ${metric.display_name} of the ${resource.type}
${resource.label.instance_id} in the project ${resource.project} has
exceeded 90% for over 15 minutes.

### Additional resource information

Condition resource name: ${condition.name}
Alerting policy resource name: ${policy.name}

### Troubleshooting and Debug References

Repository with debug scripts: example.com
Internal troubleshooting guide: example.com
${resource.type} dashboard: example.com

API Cloud Monitoring

"documentation": {
"content": "## CPU utilization exceeded\n\n### Summary\n\nThe ${metric.display_name} of the ${resource.type} ${resource.label.instance_id} in the project ${resource.project} has exceeded 90% for over 15 minutes.\n\n### Additional resource information\n\nCondition resource name: ${condition.name}  \nAlerting policy resource name: ${policy.name}  \n\n### Troubleshooting and Debug References\n    \nRepository with debug scripts: example.com  \nInternal troubleshooting guide: example.com  \n${resource.type} dashboard: example.com",
"mimeType": "text/markdown",
"subject": "Alert: ${metric.display_name} exceeded"
}

Formatta nella notifica

Esempio di come viene visualizzata la documentazione in una notifica.

null valori

I valori delle variabili metric.*, resource.* e metadata.* vengono ricavati da serie temporali. I valori possono essere null se non viene restituito alcun valore dalla query della serie temporale.

  • Le variabili resource.label.KEY e metric.label.KEY possono avere valori null se il criterio di avviso utilizza l'aggregazione (riduzione) in più serie, ad esempio calcolando il valore SUM in ogni serie temporale che corrisponde a un filtro. Quando utilizzi l'aggregazione tra serie, tutte le etichette non utilizzate nel raggruppamento vengono eliminate e di conseguenza vengono visualizzate come null quando la variabile viene sostituita con il relativo valore. Se non è presente un'aggregazione tra serie, tutte le etichette vengono mantenute. Per ulteriori informazioni, consulta La variabile per un'etichetta di metrica è nulla.

  • I valori delle variabili metadata.* sono disponibili solo se le etichette sono incluse esplicitamente nel filtro o nel raggruppamento di una condizione per l'aggregazione in più serie. Ciò significa che devi fare riferimento all'etichetta dei metadati nel filtro o nel raggruppamento per avere un valore per il modello.

Risoluzione variabile

Le variabili nei modelli di documentazione vengono risolte solo nelle notifiche inviate utilizzando i seguenti canali di notifica:

  • Email
  • Slack
  • Pub/Sub, schema JSON versione 1.2
  • Webhook, schema JSON versione 1.2
  • PagerDuty, versione dello schema JSON 1.2

Le variabili non vengono risolte, ma vengono visualizzate come stringhe come ${varname} in altri contesti, tra cui:

  • Nella pagina Dettagli incidente nella console Google Cloud.
  • Nelle notifiche inviate utilizzando altri canali di notifica.

Utilizzo dei controlli del canale

Il testo nel campo della documentazione può anche includere caratteri speciali utilizzati dal canale di notifica stesso per controllare la formattazione e le notifiche.

Ad esempio, Slack utilizza @ per le menzioni. Puoi utilizzare @ per collegare la notifica a un ID utente specifico. Le menzioni non possono includere nomi. Supponi di includere una stringa simile alla seguente nel campo della documentazione:

<@backendoncall> Incident created based on policy ${policy.display_name}

Quando il campo della documentazione viene ricevuto dal canale Slack pertinente nell'ambito della notifica, la stringa precedente fa sì che Slack invii un messaggio aggiuntivo all'ID utente backendoncall. Il messaggio inviato da Slack all'utente potrebbe contenere informazioni pertinenti della notifica, ad esempio "Incidente creato in base a un tasso di modifica della CPU elevato del criterio".

Queste opzioni aggiuntive sono specifiche per i canali; per ulteriori informazioni su cosa potrebbe essere disponibile, consulta la documentazione fornita dal fornitore del canale.