Annotare le notifiche con la documentazione definita dall'utente

Questa pagina descrive come configurare la documentazione criterio di avviso in modo che le notifiche forniscano ai responsabili della risposta agli incidenti risorse e informazioni aggiuntive per la risoluzione degli incidenti.

Struttura della documentazione

La documentazione di un criterio di avviso è costituita da un oggetto, contenuti e link. Puoi configurare la documentazione nella console Google Cloud , nell'API Cloud Monitoring e in Google Cloud CLI.

Soggetti

L'oggetto della documentazione viene visualizzato nell'oggetto delle notifiche per gli incidenti correlati alle criterio di avviso. I destinatari delle notifiche possono gestirle e ordinarle per oggetto.

Le righe dell'oggetto sono limitate a 255 caratteri. Se non definisci un oggetto nella documentazione, Cloud Monitoring determina la riga dell'oggetto. Le righe dell'oggetto supportano testo normale e variabili.

API Cloud Monitoring

Configura l'oggetto della notifica utilizzando il campo subject del criterio di avviso documentation.

Console Google Cloud

Configura l'oggetto della notifica utilizzando il campo Oggetto della notifica nella sezione Notifiche e nome della pagina Crea policy di avviso.

Contenuti

I contenuti della documentazione vengono visualizzati nei seguenti tipi di notifiche:

  • Email, nella sezione Documentazione delle norme
  • PagerDuty
  • Pub/Sub
  • Slack
  • Webhook

Ti consigliamo di configurare i contenuti in modo che i responsabili della risposta agli incidenti possano visualizzare i passaggi di correzione e le informazioni sugli incidenti nelle notifiche relative alla tua criterio di avviso. Ad esempio, potresti configurare la documentazione in modo che includa un riepilogo dell'incidente e informazioni sulle risorse pertinenti.

I contenuti della documentazione supportano quanto segue:

API Cloud Monitoring

Configura i contenuti della documentazione utilizzando il campo content del criterio di avviso documentation.

Console Google Cloud

Configura i contenuti della documentazione utilizzando il campo Documentazione nella sezione Notifiche e nome della pagina Crea criterio di avviso.

Puoi aggiungere link alla documentazione in modo che coloro che sono preposti a reagire agli eventi possano accedere a risorse come playbook, repository e Google Cloud dashboard da una notifica.

L'API Cloud Monitoring ti consente di definire un oggetto che contiene i link più pertinenti per i rispondenti. Sebbene la Google Cloud console non disponga di un campo specifico per i link, puoi aggiungere una sezione per i link nel corpo della documentazione.

API Cloud Monitoring

Puoi aggiungere link alla documentazione definendo uno o più oggetti Link nel campo links del criterio di avviso documentation. Ogni oggetto Link è costituito da un display_name e da un url. Puoi inserire fino a tre link nella documentazione.

La seguente configurazione mostra il campo links con un oggetto Link che rappresenta un URL a un playbook per incidenti. L'URL include una variabile in modo che i destinatari delle notifiche possano accedere al playbook corretto in base alla risorsa monitorata in cui si è verificato l'incidente:

"links" [
  {
    "displayName": "Playbook",
    "url": "https://myownpersonaldomain.com/playbook?name=${resource.type}"
  }
]

I link alla documentazione aggiunti utilizzando il campo Link vengono visualizzati nei seguenti tipi di notifiche:

  • Email, nella sezione Link rapidi
  • PagerDuty
  • Pub/Sub
  • Webhook

Console Google Cloud

Puoi aggiungere link ai contenuti della documentazione includendoli nel campo Documentazione del criterio di avviso. Ad esempio, la documentazione seguente elenca un URL per un playbook del cliente:

### Troubleshooting and Debug References

Playbook: https://myownpersonaldomain.com/playbook?name=${resource.type}

I link alla documentazione aggiunti utilizzando la console Google Cloud vengono visualizzati insieme al resto dei contenuti della documentazione nei seguenti tipi di notifiche:

  • Email, nella sezione Documentazione delle norme
  • PagerDuty
  • Pub/Sub
  • Slack
  • Webhook

Markdown nei contenuti della documentazione

Puoi utilizzare Markdown per formattare i contenuti della documentazione. I contenuti della documentazione supportano il seguente sottoinsieme di tag Markdown:

  • Intestazioni, indicate dai caratteri hash iniziali.
  • Elenchi non ordinati, indicati dai caratteri iniziali più, meno o asterisco.
  • Elenchi ordinati, indicati da un numero iniziale seguito da un punto.
  • Testo in corsivo, indicato da trattini bassi o asterischi singoli intorno a una frase.
  • Testo in grassetto, indicato da doppi trattini bassi o asterischi intorno a una frase.
  • Link, indicati dalla sintassi [link text](url). Per aggiungere link alla notifica, ti consigliamo di utilizzare l'API Cloud Monitoring e configurare l'oggetto Link.

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

Variabili nella documentazione

Per personalizzare il testo nella documentazione, puoi utilizzare variabili nel formato ${varname}. Quando la documentazione viene inviata con una notifica, la stringa ${varname} viene sostituita con un valore estratto 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, ad esempio CPU usage increasing rapidly.
log.extracted_label.KEY Il valore dell'etichetta KEY, estratto da una voce di log. Solo per i criteri di avviso basati su log; per ulteriori informazioni, consulta Creare un criterio di avviso basato su log utilizzando l'API Monitoring.
metadata.system_label.KEY Il valore dell'etichetta metadati risorsa fornita dal sistema KEY.1
metadata.user_label.KEY Il valore dell'etichetta metadati risorsa 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 l'elenco delle metriche.

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

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

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

metric.label.metadata_system_VALUE

Fa riferimento a un'etichetta di sistema dei metadati PromQL, dove VALUE è il nome dell'etichetta specifica, ad esempio region o version.

Esempio di utilizzo: ${metric.label.metadata_system_version}.

metric.label.metadata_user_VALUE

Fa riferimento a un'etichetta utente dei metadati PromQL, dove VALUE è il nome dell'etichetta specifica, ad esempio region o name.

Esempio di utilizzo: ${metric.label.metadata_user_name}.

metric_or_resource.labels

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

Quando esegui la migrazione di una regola di avviso Prometheus, i modelli di campi di avviso 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, questa variabile viene visualizzata nella notifica come valore di ${metric.label.KEY}.
  • Se KEY è una risorsa valida, questa variabile viene visualizzata nella notifica come valore di ${resource.label.KEY}.
  • Se KEY non è un'etichetta valida né una risorsa valida, questa variabile viene visualizzata nella notifica come stringa vuota.

Quando esegui la migrazione di una regola di avviso Prometheus, i modelli di campi di avviso 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, cifre, trattini bassi e trattini.

project L'ID del progetto di definizione dell'ambito di un ambito delle metriche, ad esempio 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; per maggiori informazioni, consulta la sezione Valori di null.
2 Per recuperare il valore dell'etichetta project_id in 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.. Utilizza metadata.user_label.KEY in alternativa.

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 relativi valori solo nelle notifiche inviate tramite i canali di notifica. Nella console Google Cloud , quando viene visualizzata la documentazione, vengono mostrate le variabili, non i valori. Esempi nella console includono le descrizioni degli incidenti e l'anteprima della documentazione durante la creazione di un criterio di avviso.
  • Verifica che le impostazioni di aggregazione della condizione non eliminino l'etichetta. Se l'etichetta viene eliminata, il valore dell'etichetta nella notifica è null. Per ulteriori informazioni, vedi La variabile per un'etichetta della metrica è nulla.

null valori

I valori delle variabili metric.*, resource.* e metadata.* derivano dalle serie temporali. I loro valori possono essere null se non vengono restituiti valori 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) tra serie, ad esempio il calcolo della somma in tutte le serie temporali che corrispondono a un filtro. Quando utilizzi l'aggregazione tra serie, le etichette non utilizzate nel raggruppamento vengono eliminate e di conseguenza vengono visualizzate come null quando la variabile viene sostituita con il suo valore. Tutte le etichette vengono conservate quando non è presente un'aggregazione tra serie. Per ulteriori informazioni, vedi La variabile per un'etichetta della 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 tra serie. ovvero devi fare riferimento all'etichetta dei metadati nel filtro o nel raggruppamento affinché abbia 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
  • Google Chat
  • Slack
  • Pub/Sub, schema JSON versione 1.2
  • Webhook, schema JSON versione 1.2
  • PagerDuty, schema JSON versione 1.2

Controlli del canale

Il testo nel campo della documentazione può includere anche 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. Supponiamo che tu includa una stringa come questa 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 al criterio Tasso di variazione elevato della CPU".

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

Esempio

L'esempio seguente mostra le versioni Google Cloud della console e dell'API Cloud Monitoring della documentazione del modello per una criterio di avviso sull'utilizzo della CPU. Questi esempi utilizzano un'email per il tipo di canale di notifica. I modelli di documentazione includono diverse variabili per riepilogare l'incidente e fare riferimento alle risorse REST per le condizioni e i criteri di criterio di avviso.

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 5% for over 60 seconds.\n\n#### Additional resource information\n\nCondition resource name: ${condition.name}  \nAlerting policy resource name: ${policy.name}",
    "mimeType": "text/markdown",
    "subject": "Alert: ${metric.display_name} exceeded",
    "links": [
      {
        "displayName": "Playbook",
        "url": "https://myownpersonaldomain.com/playbook?name=${resource.type}"
      },
      {
        "displayName": "Repository with debug scripts",
        "url": "https://altostrat.com"
      },
      {
        "displayName": "Google Cloud dashboard",
        "url": "https://example.com"
      }
    ]
  }

L'immagine seguente mostra come appare questo modello in una notifica via email:

Esempio di come viene visualizzata la documentazione in una notifica. I link vengono visualizzati nella sezione &quot;Link rapidi&quot;.

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 5% for over 60 seconds.

#### Additional resource information

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

#### Troubleshooting and Debug References

Playbook: https://myownpersonaldomain.com/playbook?name=${resource.type}  
Repository with debug scripts: https://altostrat.com  
${resource.type} dashboard: https://example.com

L'immagine seguente mostra come appare questo modello in una notifica via email:

Esempio di come viene visualizzata la documentazione in una notifica. I link vengono visualizzati sotto l&#39;intestazione &quot;Riferimenti per la risoluzione dei problemi e il debug&quot;.