

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Personnaliser les notifications
<a name="v9-alerting-notifications"></a>

****  
**Cette rubrique de documentation est conçue pour les espaces de travail Grafana compatibles avec la version 9.x de Grafana.**  
Pour les espaces de travail Grafana compatibles avec la version 10.x de Grafana, voir. [Travailler dans la version 10 de Grafana](using-grafana-v10.md)  
Pour les espaces de travail Grafana compatibles avec la version 8.x de Grafana, voir. [Travailler dans la version 8 de Grafana](using-grafana-v8.md)

Personnalisez vos notifications à l'aide de modèles de notifications.

Vous pouvez utiliser des modèles de notification pour modifier le titre, le message et le format du message dans vos notifications.

Les modèles de notification ne sont pas liés à des intégrations de points de contact spécifiques, telles que le courrier électronique ou Slack. Vous pouvez toutefois choisir de créer des modèles de notification distincts pour les différentes intégrations de points de contact.

Vous pouvez utiliser des modèles de notification pour :
+ Ajoutez, supprimez ou réorganisez les informations dans la notification, notamment le résumé, la description, les étiquettes et les annotations, les valeurs et les liens
+ Mettre en forme le texte en gras et en italique, et ajouter ou supprimer des sauts de ligne

Vous ne pouvez pas utiliser de modèles de notification pour :
+ Modifier le design des notifications dans les services de messagerie instantanée tels que Slack et Microsoft Teams

**Topics**
+ [Utilisation du langage de modélisation de Go](v9-alerting-notifications-go-templating.md)
+ [Création de modèles de notification](v9-alerting-create-templates.md)
+ [Référence de modèles](v9-alerting-template-reference.md)

# Utilisation du langage de modélisation de Go
<a name="v9-alerting-notifications-go-templating"></a>

****  
**Cette rubrique de documentation est conçue pour les espaces de travail Grafana compatibles avec la version 9.x de Grafana.**  
Pour les espaces de travail Grafana compatibles avec la version 10.x de Grafana, voir. [Travailler dans la version 10 de Grafana](using-grafana-v10.md)  
Pour les espaces de travail Grafana compatibles avec la version 8.x de Grafana, voir. [Travailler dans la version 8 de Grafana](using-grafana-v8.md)

Vous rédigez des modèles de notification dans le langage de modélisation de Go, [texte/modèle](https://pkg.go.dev/text/template).

Cette section fournit un aperçu du langage de création de modèles de Go et des modèles d'écriture sous forme de texte/modèle.

## Point
<a name="v9-go-dot"></a>

 text/template Il y a un curseur spécial appelé point, écrit comme`.`. Vous pouvez considérer ce curseur comme une variable dont la valeur change en fonction de l'endroit où il est utilisé dans le modèle. Par exemple, au début d'un modèle de notification, il `.` fait référence à l'`ExtendedData`objet, qui contient un certain nombre de champs`Alerts`, notamment`Status`,`GroupLabels`,`CommonLabels`, `CommonAnnotations` et`ExternalURL`. Cependant, le point peut faire référence à autre chose lorsqu'il est utilisé dans `range` une liste, lorsqu'il est utilisé dans un `with` ou lors de la rédaction de modèles de fonctionnalités à utiliser dans d'autres modèles. Vous pouvez en voir des exemples dans[Création de modèles de notification](v9-alerting-create-templates.md), ainsi que toutes les données et fonctions du[Référence de modèles](v9-alerting-template-reference.md).

## Étiquettes d'ouverture et de fermeture
<a name="v9-go-openclosetags"></a>

Dans le texte/le modèle, les modèles commencent par `{{` et se terminent par`}}`, qu'ils impriment une variable ou exécutent des structures de contrôle telles que des instructions if. Ceci est différent des autres langages de modélisation tels que Jinja où l'impression d'une variable utilise `{{` et et où les structures de contrôle utilisent `}}` `{%` et. `%}`

## Print
<a name="v9-go-print"></a>

Pour imprimer la valeur d'un élément, utilisez `{{` et`}}`. Vous pouvez imprimer la valeur d'un point, un champ de points, le résultat d'une fonction et la valeur d'une [variable](#v9-go-variables). Par exemple, pour imprimer le `Alerts` champ où le point fait référence, `ExtendedData` vous devez écrire ce qui suit :

```
{{ .Alerts }}
```

## Répéter les alertes
<a name="v9-go-iterate-alerts"></a>

Pour imprimer uniquement les étiquettes de chaque alerte, plutôt que toutes les informations relatives à l'alerte, vous pouvez utiliser a `range` pour itérer les alertes dans `ExtendedData` :

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
```

À l'intérieur de la plage, le point ne fait plus référence à`ExtendedData`, mais à un`Alert`. Vous pouvez l'utiliser `{{ .Labels }}` pour imprimer les étiquettes de chaque alerte. Cela fonctionne car le point `{{ range .Alerts }}` change pour faire référence à l'alerte en cours dans la liste des alertes. Lorsque la plage est terminée, le point est remis à la valeur qu'il avait avant le début de la plage, qui dans cet exemple est `ExtendedData` :

```
{{ range .Alerts }}
{{ .Labels }}
{{ end }}
{{/* does not work, .Labels does not exist here */}}
{{ .Labels }}
{{/* works, cursor was reset */}}
{{ .Status }}
```

## Répéter sur les annotations et les étiquettes
<a name="v9-go-iterate-labels"></a>

Rédigons un modèle pour imprimer les étiquettes de chaque alerte au format`The name of the label is $name, and the value is $value`, où `$name` et `$value` contenant le nom et la valeur de chaque étiquette.

Comme dans l'exemple précédent, utilisez une plage pour parcourir les alertes de `.Alerts` manière à ce que le point fasse référence à l'alerte en cours dans la liste des alertes, puis utilisez une deuxième plage sur les étiquettes triées afin que le point soit mis à jour une deuxième fois pour faire référence à l'étiquette actuelle. Dans la deuxième plage, utilisez `.Name` et `.Value` pour imprimer le nom et la valeur de chaque étiquette :

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
The name of the label is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ range .Annotations.SortedPairs }}
The name of the annotation is {{ .Name }}, and the value is {{ .Value }}
{{ end }}
{{ end }}
```

## Si des déclarations
<a name="v9-go-if"></a>

Vous pouvez utiliser des instructions if dans les modèles. Par exemple, pour imprimer `There are no alerts` s'il n'y a aucune alerte, `.Alerts` vous devez écrire ce qui suit :

```
{{ if .Alerts }}
There are alerts
{{ else }}
There are no alerts
{{ end }}
```

## Avec
<a name="v9-go-with"></a>

with est similaire aux instructions if, mais contrairement aux instructions if, `with` met à jour le point pour faire référence à la valeur du with :

```
{{ with .Alerts }}
There are {{ len . }} alert(s)
{{ else }}
There are no alerts
{{ end }}
```

## Variables
<a name="v9-go-variables"></a>

Les variables text/template doivent être créées dans le modèle. Par exemple, pour créer une variable appelée `$variable` avec la valeur actuelle de point, vous devez écrire ce qui suit :

```
{{ $variable := . }}
```

Vous pouvez `$variable` l'utiliser à l'intérieur d'une plage ou `with` cela fera référence à la valeur du point au moment où la variable a été définie, et non à la valeur actuelle du point.

Par exemple, vous ne pouvez pas écrire un modèle `{{ .Labels }}` à utiliser dans la deuxième plage car ici, le point fait référence à l'étiquette actuelle, et non à l'alerte en cours :

```
{{ range .Alerts }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* does not work because in the second range . is a label not an alert */}}
There are {{ len .Labels }}
{{ end }}
{{ end }}
```

Vous pouvez résoudre ce problème en définissant une variable appelée `$alert` dans la première plage et avant la deuxième plage :

```
{{ range .Alerts }}
{{ $alert := . }}
{{ range .Labels.SortedPairs }}
{{ .Name }} = {{ .Value }}
{{/* works because $alert refers to the value of dot inside the first range */}}
There are {{ len $alert.Labels }}
{{ end }}
{{ end }}
```

## Gamme avec index
<a name="v9-go-rangeindex"></a>

Vous pouvez obtenir l'indice de chaque alerte au sein d'une plage en définissant des variables d'indice et de valeur au début de la plage :

```
{{ $num_alerts := len .Alerts }}
{{ range $index, $alert := .Alerts }}
This is alert {{ $index }} out of {{ $num_alerts }}
{{ end }}
```

## Définir des modèles
<a name="v9-go-define"></a>

Vous pouvez définir des modèles qui peuvent être utilisés dans d'autres modèles `define` en utilisant le nom du modèle entre guillemets. Vous ne devez pas définir de modèles portant le même nom que les autres modèles, y compris les modèles par défaut tels que `__subject``__text_values_list`,`__text_alert_list`, `default.title` et`default.message`. Lorsqu'un modèle a été créé avec le même nom qu'un modèle par défaut, ou un modèle dans un autre modèle de notification, Grafana peut utiliser l'un ou l'autre modèle. Grafana n'empêche pas ou n'affiche pas de message d'erreur lorsqu'il existe deux modèles ou plus portant le même nom.

```
{{ define "print_labels" }}
{{ end }}
```

## Intégrer des modèles
<a name="v9-go-embed"></a>

Vous pouvez intégrer un modèle défini dans votre modèle en utilisant `template` le nom du modèle entre guillemets et le curseur qui doit être passé au modèle :

```
{{ template "print_labels" . }}
```

## Transmettre les données aux modèles
<a name="v9-go-passdata"></a>

Dans un modèle, le point fait référence à la valeur transmise au modèle.

Par exemple, si une liste d'alertes de déclenchement est transmise à un modèle, le point fait référence à cette liste d'alertes de déclenchement :

```
{{ template "print_alerts" .Alerts }}
```

Si le modèle reçoit les étiquettes triées d'une alerte, le point fait référence à la liste des étiquettes triées :

```
{{ template "print_labels" .SortedLabels }}
```

Cela est utile lors de la rédaction de modèles réutilisables. Par exemple, pour imprimer toutes les alertes, vous pouvez écrire ce qui suit :

```
{{ template "print_alerts" .Alerts }}
```

Ensuite, pour imprimer uniquement les alertes de déclenchement, vous pouvez écrire ceci :

```
{{ template "print_alerts" .Alerts.Firing }}
```

Cela fonctionne car `.Alerts` les deux `.Alerts.Firing` sont des listes d'alertes.

```
{{ define "print_alerts" }}
{{ range . }}
{{ template "print_labels" .SortedLabels }}
{{ end }}
{{ end }}
```

## Commentaires
<a name="v9-go-comments"></a>

Vous pouvez ajouter des commentaires avec `{{/*` et `*/}}` :

```
{{/* This is a comment */}}
```

Pour empêcher les commentaires d'ajouter des sauts de ligne, utilisez :

```
{{- /* This is a comment with no leading or trailing line breaks */ -}}
```

## Indentation
<a name="v9-go-indentation"></a>

Vous pouvez utiliser l'indentation, à la fois des tabulations et des espaces, ainsi que des sauts de ligne, pour rendre les modèles plus lisibles :

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

Cependant, l'indentation du modèle sera également présente dans le texte. Ensuite, nous verrons comment le supprimer.

## Supprimer les espaces et les sauts de ligne
<a name="v9-go-removespace"></a>

En cours text/template d'utilisation `{{-` et `-}}` pour supprimer les espaces de début et de fin et les sauts de ligne.

Par exemple, lorsque vous utilisez l'indentation et les sauts de ligne pour rendre un modèle plus lisible :

```
{{ range .Alerts }}
  {{ range .Labels.SortedPairs }}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

L'indentation et les sauts de ligne seront également présents dans le texte :

```
    alertname = "Test"

    grafana_folder = "Test alerts"
```

Vous pouvez supprimer l'indentation et les sauts de ligne du texte en le `}}` remplaçant par le `-}}` début de chaque plage :

```
{{ range .Alerts -}}
  {{ range .Labels.SortedPairs -}}
    {{ .Name }} = {{ .Value }}
  {{ end }}
{{ end }}
```

L'indentation et les sauts de ligne du modèle sont désormais absents du texte :

```
alertname = "Test"
grafana_folder = "Test alerts"
```

# Création de modèles de notification
<a name="v9-alerting-create-templates"></a>

****  
**Cette rubrique de documentation est conçue pour les espaces de travail Grafana compatibles avec la version 9.x de Grafana.**  
Pour les espaces de travail Grafana compatibles avec la version 10.x de Grafana, voir. [Travailler dans la version 10 de Grafana](using-grafana-v10.md)  
Pour les espaces de travail Grafana compatibles avec la version 8.x de Grafana, voir. [Travailler dans la version 8 de Grafana](using-grafana-v8.md)

Créez des modèles de notification réutilisables à envoyer à vos points de contact.

Vous pouvez ajouter un ou plusieurs modèles à votre modèle de notification.

Le nom de votre modèle de notification doit être unique. Vous ne pouvez pas avoir deux modèles portant le même nom dans le même modèle de notification ou dans des modèles de notification différents. Évitez de définir des modèles portant le même nom que les modèles par défaut, tels que : `__subject``__text_values_list`,`__text_alert_list`, `default.title` et`default.message`.

Dans l'onglet Points de contact, vous pouvez voir la liste de vos modèles de notification.

## Création de modèles de notification
<a name="v9-alerting-creating-templates"></a>

**Pour créer un modèle de notification**

1. Cliquez sur **Ajouter un modèle**.

1. Choisissez un nom pour le modèle de notification, par exemple`email.subject`.

1. Écrivez le contenu du modèle dans le champ de contenu.

   Par exemple :

   ```
   {{ if .Alerts.Firing -}}
      {{ len .Alerts.Firing }} firing alerts
      {{ end }}
      {{ if .Alerts.Resolved -}}
      {{ len .Alerts.Resolved }} resolved alerts
      {{ end }}
   ```

1. Cliquez sur Sauvegarder

   `{{ define "email.subject" }}`(où `email.subject` est le nom de votre modèle) et `{{ end }}` est automatiquement ajouté au début et à la fin du contenu.

**Pour créer un modèle de notification contenant plusieurs modèles :**

1. Cliquez sur **Ajouter un modèle**.

1. Entrez un nom pour le modèle de notification global. Par exemple, `email`.

1. Écrivez chaque modèle dans le champ Contenu, y compris `{{ define "name-of-template" }}` `{{ end }}` au début et à la fin de chaque modèle. Vous pouvez utiliser des noms descriptifs pour chacun des modèles du modèle de notification, par exemple, `email.subject` ou`email.message`. Dans ce cas, ne réutilisez pas le nom du modèle de notification que vous avez saisi ci-dessus.

   Les sections suivantes présentent des exemples détaillés de modèles que vous pouvez créer.

1. Cliquez sur Sauvegarder

## Création d'un modèle pour l'objet d'un e-mail
<a name="v9-alerting-create-template-subject"></a>

Créez un modèle pour l'objet d'un e-mail contenant le nombre d'alertes déclenchées et résolues, comme dans cet exemple :

```
1 firing alerts, 0 resolved alerts
```

**Pour créer un modèle pour l'objet d'un e-mail**

1. Créez un modèle appelé `email.subject` avec le contenu suivant :

   ```
   {{ define "email.subject" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Utilisez le modèle lors de la création de votre intégration de points de contact en le plaçant dans le champ **Objet** avec le `template` mot clé.

   ```
   {{ template "email.subject" . }}
   ```

## Création d'un modèle pour le message d'un e-mail
<a name="v9-alerting-create-template-message"></a>

Créez un modèle pour le message d'un e-mail contenant un résumé de toutes les alertes déclenchées et résolues, comme dans cet exemple :

```
There are 2 firing alerts, and 1 resolved alerts

Firing alerts:

- alertname=Test 1 grafana_folder=GrafanaCloud has value(s) B=1
- alertname=Test 2 grafana_folder=GrafanaCloud has value(s) B=2

Resolved alerts:

- alertname=Test 3 grafana_folder=GrafanaCloud has value(s) B=0
```

**Pour créer un modèle pour le message d'un e-mail**

1. Créez un modèle de notification appelé `email` avec deux modèles dans le contenu : `email.message_alert` et`email.message`.

   Le `email.message_alert` modèle est utilisé pour imprimer les étiquettes et les valeurs de chaque alerte déclenchée et résolue, tandis que le `email.message` modèle contient la structure de l'e-mail.

   ```
   {{- define "email.message_alert" -}}
   {{- range .Labels.SortedPairs }}{{ .Name }}={{ .Value }} {{ end }} has value(s)
   {{- range $k, $v := .Values }} {{ $k }}={{ $v }}{{ end }}
   {{- end -}}
   
   {{ define "email.message" }}
   There are {{ len .Alerts.Firing }} firing alerts, and {{ len .Alerts.Resolved }} resolved alerts
   
   {{ if .Alerts.Firing -}}
   Firing alerts:
   {{- range .Alerts.Firing }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ if .Alerts.Resolved -}}
   Resolved alerts:
   {{- range .Alerts.Resolved }}
   - {{ template "email.message_alert" . }}
   {{- end }}
   {{- end }}
   
   {{ end }}
   ```

1. Utilisez le modèle lors de la création de votre intégration de points de contact en le plaçant dans le champ **du corps du texte** avec le `template` mot clé.

   ```
   {{ template "email.message" . }}
   ```

## Création d'un modèle pour le titre d'un message Slack
<a name="v9-alerting-create-template-slack-title"></a>

Créez un modèle pour le titre d'un message Slack contenant le nombre d'alertes déclenchées et résolues, comme dans l'exemple suivant :

```
1 firing alerts, 0 resolved alerts
```

**Pour créer un modèle pour le titre d'un message Slack**

1. Créez un modèle appelé `slack.title` avec le contenu suivant :

   ```
   {{ define "slack.title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Utilisez le modèle lors de la création de votre intégration de points de contact en le plaçant dans le champ **Titre** avec le `template` mot clé.

   ```
   {{ template "slack.title" . }}
   ```

## Création d'un modèle pour le contenu d'un message Slack
<a name="v9-alerting-create-template-slack-message"></a>

Créez un modèle pour le contenu d'un message Slack contenant une description de toutes les alertes déclenchées et résolues, y compris leurs étiquettes, leurs annotations et l'URL du tableau de bord :

```
1 firing alerts:

[firing] Test1
Labels:
- alertname: Test1
- grafana_folder: GrafanaCloud
Annotations:
- description: This is a test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1

1 resolved alerts:

[firing] Test2
Labels:
- alertname: Test2
- grafana_folder: GrafanaCloud
Annotations:
- description: This is another test alert
Go to dashboard: https://example.com/d/dlhdLqF4z?orgId=1
```

**Pour créer un modèle pour le contenu d'un message Slack**

1. Créez un modèle appelé `slack` avec deux modèles dans le contenu : `slack.print_alert` et`slack.message`.

   Le `slack.print_alert` modèle est utilisé pour imprimer les étiquettes, les annotations et l'URL du tableau de bord tandis que le `slack.message` modèle contient la structure de la notification.

   ```
   {{ define "slack.print_alert" -}}
   [{{.Status}}] {{ .Labels.alertname }}
   Labels:
   {{ range .Labels.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ if .Annotations -}}
   Annotations:
   {{ range .Annotations.SortedPairs -}}
   - {{ .Name }}: {{ .Value }}
   {{ end -}}
   {{ end -}}
   {{ if .DashboardURL -}}
     Go to dashboard: {{ .DashboardURL }}
   {{- end }}
   {{- end }}
   
   {{ define "slack.message" -}}
   {{ if .Alerts.Firing -}}
   {{ len .Alerts.Firing }} firing alerts:
   {{ range .Alerts.Firing }}
   {{ template "slack.print_alert" . }}
   {{ end -}}
   {{ end }}
   {{ if .Alerts.Resolved -}}
   {{ len .Alerts.Resolved }} resolved alerts:
   {{ range .Alerts.Resolved }}
   {{ template "slack.print_alert" .}}
   {{ end -}}
   {{ end }}
   {{- end }}
   ```

1. Utilisez le modèle lors de la création de votre intégration de points de contact en le plaçant dans le champ **du corps du texte** avec le `template` mot clé.

   ```
   {{ template "slack.message" . }}
   ```

## Modélisez à la fois vos e-mails et Slack avec des modèles partagés
<a name="v9-alerting-create-shared-templates"></a>

Au lieu de créer des modèles de notification distincts pour chaque point de contact, tels que les e-mails et Slack, vous pouvez partager le même modèle.

Par exemple, si vous souhaitez envoyer un e-mail avec cet objet et un message Slack avec ce titre`1 firing alerts, 0 resolved alerts`, vous pouvez créer un modèle partagé.

**Pour créer un modèle partagé**

1. Créez un modèle appelé `common.subject_title` avec le contenu suivant :

   ```
   {{ define "common.subject_title" }}
   {{ len .Alerts.Firing }} firing alerts, {{ len .Alerts.Resolved }} resolved alerts
   {{ end }}
   ```

1. Pour les e-mails, exécutez le modèle à partir du champ d'objet de l'intégration de votre point de contact e-mail :

   ```
   {{ template "common.subject_title" . }}
   ```

1. Pour Slack, exécutez le modèle à partir du champ de titre dans l'intégration de votre point de contact Slack :

   ```
   {{ template "common.subject_title" . }}
   ```

## Utilisation de modèles de notification
<a name="v9-alerting-use-notification-templates"></a>

Utilisez des modèles dans les points de contact pour personnaliser vos notifications.

**Pour utiliser un modèle lors de la création d'un point de contact**

1. Dans le menu **Alertes**, choisissez **Points de contact** pour voir la liste des points de contact existants.

1. Choisissez **Ajouter un point de contact**. Vous pouvez également modifier un point de contact existant en choisissant l'icône **Modifier** (stylo) à côté du point de contact que vous souhaitez modifier.

1. Entrez les modèles que vous souhaitez utiliser dans un ou plusieurs champs, tels que **Message** ou **Objet**. Pour saisir un modèle, utilisez le formulaire `{{ template "template_name" . }}` en le *template\$1name* remplaçant par le nom du modèle que vous souhaitez utiliser.

1. Cliquez sur **Enregistrer le point de contact**.

# Référence de modèles
<a name="v9-alerting-template-reference"></a>

****  
**Cette rubrique de documentation est conçue pour les espaces de travail Grafana compatibles avec la version 9.x de Grafana.**  
Pour les espaces de travail Grafana compatibles avec la version 10.x de Grafana, voir. [Travailler dans la version 10 de Grafana](using-grafana-v10.md)  
Pour les espaces de travail Grafana compatibles avec la version 8.x de Grafana, voir. [Travailler dans la version 8 de Grafana](using-grafana-v8.md)

Cette section fournit des informations de référence pour créer vos modèles.

## Données du modèle
<a name="v9-alerting-template-data"></a>

Les données suivantes sont transmises aux modèles de messages.


| Name | Type | Remarques | 
| --- | --- | --- | 
|  `Receiver`  |  chaîne  |  Nom du point de contact auquel la notification est envoyée.  | 
|  `Status`  |  chaîne  |  déclenchement si au moins une alerte est déclenchée, sinon résolu.  | 
|  `Alerts`  |  Alerte  |  Liste des objets d'alerte inclus dans cette notification (voir ci-dessous).  | 
|  `GroupLabels`  |  KeyValue  |  Libellés selon lesquels ces alertes ont été regroupées.  | 
|  `CommonLabels`  |  KeyValue  |  Libellés communs à toutes les alertes incluses dans cette notification.  | 
|  `CommonAnnotations`  |  KeyValue  |  Annotations communes à toutes les alertes incluses dans cette notification.  | 
|  `ExternalURL`  |  chaîne  |  Lien de retour vers le Grafana qui a envoyé la notification. Si vous utilisez un Alertmanager externe, renvoyez le lien vers ce Alertmanager.  | 

Le `Alerts` type expose deux fonctions permettant de filtrer les alertes renvoyées.
+ `Alerts.Firing`— Renvoie la liste des alertes de déclenchement.
+ `Alerts.Resolved`— Renvoie la liste des alertes résolues.

**Alerte (type)**

Le type d'alerte contient les données suivantes.


| Name | Type | Remarques | 
| --- | --- | --- | 
|  Statut  |  chaîne  |  `firing` ou `resolved`.  | 
|  Étiquettes  |  KeyValue  |  Ensemble d'étiquettes associées à l'alerte.  | 
|  Annotations  |  KeyValue  |  Ensemble d'annotations associées à l'alerte.  | 
| Valeurs | KeyValue | Les valeurs de toutes les expressions, y compris les conditions classiques | 
|  StartsAt  |  Heure. Heure  |  Heure à laquelle l'alerte a commencé à se déclencher.  | 
|  EndsAt  |  Heure. Heure  |  Paramétré uniquement si l'heure de fin d'une alerte est connue. Sinon, définissez un délai d'expiration configurable à compter de la date de réception de la dernière alerte.  | 
|  URL du générateur  |  chaîne  |  Un lien de retour vers Grafana ou un Alertmanager externe.  | 
|  URL de silence  |  chaîne  |  Un lien pour désactiver l'alerte (avec des étiquettes préremplies pour cette alerte). Uniquement pour les alertes gérées par Grafana.  | 
|  URL du tableau de bord  |  chaîne  |  Lien vers le tableau de bord de Grafana, si la règle d'alerte appartient à l'une d'entre elles. Uniquement pour les alertes gérées par Grafana.  | 
|  URL du panneau  |  chaîne  |  Lien vers le panneau du tableau de bord de Grafana, si la règle d'alerte appartient à l'une d'entre elles. Uniquement pour les alertes gérées par Grafana.  | 
|  Empreinte  |  chaîne  |  Empreinte digitale qui peut être utilisée pour identifier l'alerte.  | 
|  ValueString  |  chaîne  |  Chaîne contenant les libellés et la valeur de chaque expression réduite de l'alerte.  | 

 **ExtendedData**

L' ExtendedData objet contient les propriétés suivantes.


| Name | Kind | Description | Exemple | 
| --- | --- | --- | --- | 
|  Récepteur  |  `string`  |  Nom du point de contact qui envoie la notification.  |  `{{ .Receiver }}`  | 
|  Statut  |  `string`  |  Le statut est `firing if at least one alert is firing, otherwise resolved.`  |  `{{ .Status }}`  | 
|  Alerts (Alertes)  |  `[]Alert`  |  Liste de toutes les alertes déclenchées et résolues dans cette notification.  |  `There are {{ len .Alerts }} alerts`  | 
|  Alertes de tir  |  `[]Alert`  |  Liste de toutes les alertes de tir contenues dans cette notification.  |  `There are {{ len .Alerts.Firing }} firing alerts`  | 
|  Alertes résolues  |  `[]Alert`  |  Liste de toutes les alertes résolues dans cette notification.  |  `There are {{ len .Alerts.Resolved }} resolved alerts`  | 
|  GroupLabels  |  `KeyValue`  |  Les étiquettes qui regroupent ces alertes dans cette notification.  |  `{{ .GroupLabels }}`  | 
|  CommonLabels  |  `KeyValue`  |  Les libellés communs à toutes les alertes de cette notification.  |  `{{ .CommonLabels }}`  | 
|  CommonAnnotations  |  `KeyValue`  |  Les annotations communes à toutes les alertes de cette notification.  |  `{{ .CommonAnnotations }}`  | 
|  URL externe  |  `string`  |  Un lien vers l'espace de travail Grafana ou Alertmanager qui a envoyé cette notification.  |  `{{ .ExternalURL }}`  | 

**KeyValue type**

Le `KeyValue` type est un ensemble de paires de key/value chaînes qui représentent des étiquettes et des annotations.

Outre l'accès direct aux données stockées sous forme de fichier`KeyValue`, il existe également des méthodes de tri, de suppression et de transformation des données.


| Name | Arguments | Renvoie | Remarques | Exemple | 
| --- | --- | --- | --- | --- | 
|  SortedPairs  |    |  Liste triée des paires de chaînes de clés et de valeurs  |    | `{{ .Annotations.SortedPairs }}` | 
|  Supprimer  |  [] chaîne  |  KeyValue  |  Renvoie une copie de la Key/Value carte sans les clés données.  | `{{ .Annotations.Remove "summary" }}` | 
|  Noms  |    |  [] chaîne  |  Liste des noms d'étiquettes  | `{{ .Names }}` | 
|  Valeurs  |    |  [] chaîne  |  Liste des valeurs d'étiquette  | `{{ .Values }}` | 

**Time (Période)**

L'heure est comptée dans le [https://pkg.go.dev/time#Time](https://pkg.go.dev/time#Time)package Go. Vous pouvez imprimer une heure dans différents formats. Par exemple, pour imprimer l'heure à laquelle une alerte s'est déclenchée dans ce format`Monday, 1st January 2022 at 10:00AM`, vous devez écrire le modèle suivant :

```
{{ .StartsAt.Format "Monday, 2 January 2006 at 3:04PM" }}
```

Vous pouvez trouver une référence pour le format horaire de Go [ici](https://pkg.go.dev/time#pkg-constants).

## Fonctions du modèle
<a name="v9-alerting-template-functions"></a>

À l'aide des fonctions du modèle, vous pouvez traiter les étiquettes et les annotations pour générer des notifications dynamiques. Les fonctions suivantes sont disponibles.


| Name | Type d’argument | Type de retour | Description | 
| --- | --- | --- | --- | 
|  `humanize`  |  nombre ou chaîne  |  chaîne  |  Convertit un nombre dans un format plus lisible à l'aide de préfixes métriques.  | 
|  `humanize1024`  |  nombre ou chaîne  |  chaîne  |  Comme humanize, mais utilise 1024 comme base au lieu de 1000.  | 
|  `humanizeDuration`  |  nombre ou chaîne  |  chaîne  |  Convertit une durée en secondes dans un format plus lisible.  | 
|  `humanizePercentage`  |  nombre ou chaîne  |  chaîne  |  Convertit une valeur de ratio en une fraction de 100.  | 
|  `humanizeTimestamp`  |  nombre ou chaîne  |  chaîne  |  Convertit un horodatage Unix en secondes dans un format plus lisible.  | 
|  `title`  |  chaîne  |  chaîne  |  Strings.title, met en majuscule le premier caractère de chaque mot.  | 
|  `toUpper`  |  chaîne  |  chaîne  |  cordes. ToUpper, convertit tous les caractères en majuscules.  | 
|  `toLower`  |  chaîne  |  chaîne  |  cordes. ToLower, convertit tous les caractères en minuscules.  | 
|  `match`  |  motif, texte  |  Booléen  |  expression régulière. MatchString Teste une correspondance regexp non ancrée.  | 
|  `reReplaceAll`  |  modèle, remplacement, texte  |  chaîne  |  Expression régulière. ReplaceAllString Substitution de Regexp, non ancrée.  | 
|  `graphLink`  |  string - Objet JSON avec `datasource` champs `expr` et  |  chaîne  |  Renvoie le chemin d'accès à la vue graphique dans Explore pour l'expression et la source de données données.  | 
|  `tableLink`  |  string - Objet JSON avec `datasource` champs `expr` et  |  chaîne  |  Renvoie le chemin d'accès à la vue tabulaire dans Explore pour l'expression et la source de données données.  | 
|  `args`  |  [] interface \$1\$1  |  carte [chaîne] interface \$1\$1  |  Convertit une liste d'objets en carte avec des clés, par exemple arg0, arg1. Utilisez cette fonction pour transmettre plusieurs arguments aux modèles.  | 
|  `externalURL`  |  rien  |  chaîne  |  Renvoie une chaîne représentant l'URL externe.  | 
|  `pathPrefix`  |  rien  |  chaîne  |  Renvoie le chemin de l'URL externe.  | 

Le tableau suivant présente des exemples d'utilisation de chaque fonction.


| Fonction | TemplateString | Input | Expected | 
| --- | --- | --- | --- | 
|  humaniser  |  \$1humaniser \$1value\$1  |  1234567,0  |  1,235 M  | 
|  humaniser 1024  |  \$1humaniser 1024\$1 de valeur\$1  |  1048576,0  |  1 mi  | 
|  Humaniser la durée  |  \$1HumanizeDuration \$1value\$1  |  899,99  |  14 m 59 s  | 
|  Pourcentage d'humanisation  |  \$1humanizePercentage \$1value\$1  |  0,1234567  |  12,35 %  | 
|  Humaniser l'horodatage  |  \$1humanizeTimestamp \$1value\$1  |  1435065584,128  |  23/06/2015 13:19:44,128 \$10000 UTC  | 
|  title  |  \$1\$1value \$1 titre\$1  |  un B C  |  Aa Bb CC  | 
|  toUpper  |  \$1\$1value \$1 toUpper\$1  |  un B C  |  AA BB CC  | 
|  toLower  |  \$1\$1value \$1 toLower\$1  |  un B C  |  AA BB CC  | 
|  match  |  \$1correspond à « a\$1 » \$1labels.instance\$1  |  aa  |  true  | 
|  reReplaceAll  |  \$1\$1 reReplaceAll « localhost :( .\$1) » « my.domain : \$11 » \$1labels.instance\$1\$1  |  hôte local : 3000  |  mon domaine .domain : 3000  | 
|  GraphLink  |  \$1\$1GraphLink « \$1\$1" expr \$1 » : \$1 "up \$1 », \$1 "source de données \$1 » : \$1 "gdev-prometheus \$1"\$1 »\$1  |    |  /explorer ? left= ["now-1h », « now », « gdev-prometheus », \$1"source de données » « gdev-prometheus », « expr » « up », « instant » :false, "range » :true\$1]  | 
|  Tableau Link  |  \$1\$1TableLink « \$1\$1" expr \$1 » : \$1 "up \$1 », \$1 "source de données \$1 » : \$1 "gdev-prometheus \$1"\$1 »\$1  |    |  /explorer ? left= ["now-1h », « now », « gdev-prometheus », \$1"source de données » « gdev-prometheus », « expr » « up », « instant » :true, "range » :false\$1]  | 
|  args  |  \$1\$1define « x »\$1\$1 \$1\$1.arg0\$1\$1 \$1\$1.arg1\$1\$1 \$1\$1end\$1\$1 \$1\$1modèle « x » (args 1 « 2 »)\$1\$1  |    |  1 2  | 
|  URL externe  |  \$1URL externe\$1  |    |  http ://localhost/path/prefix  | 
|  Préfixe de chemin  |  \$1PathPrefix\$1  |    |  /chemin/préfixe  | 