

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Usar modelos de mensagens
<a name="alert-message-templates"></a>

****  
Este tópico de documentação foi desenvolvido para espaços de trabalho do Grafana compatíveis com o **Grafana versão 8.x**.  
Para espaços de trabalho do Grafana que suportam a versão 12.x do Grafana, consulte. [Trabalhando na versão 12 do Grafana](using-grafana-v12.md)  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 10.x, consulte [Trabalhar no Grafana versão 10](using-grafana-v10.md).  
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 9.x, consulte [Trabalhar no Grafana versão 9](using-grafana-v9.md).

As notificações enviadas via [Trabalhar com pontos de contato](alert-contact-points.md) são criadas usando *modelos de mensagens*. Os modelos padrão do Grafana são baseados no [sistema de modelos do Go](https://golang.org/pkg/text/template), em que alguns campos são avaliados como texto, enquanto outros são avaliados como HTML (o que pode afetar o escape).

Como a maioria dos campos de ponto de contato pode ser modelada, você pode criar modelos personalizados reutilizáveis e usá-los em vários pontos de contato. O tópico [Dados do modelo](#alert-template-data) lista as variáveis que estão disponíveis para modelos.

**Usar modelos**

Os modelos são usados para criar uma mensagem. Por exemplo, com uma mensagem de alerta do Slack, você pode definir o título e o corpo no ponto de contato. O exemplo a seguir mostra como usar modelos padrão para criar um título que contém uma contagem de alertas disparados e resolvidos e um corpo que lista os alertas e seus status.
+ **Título**:

  ```
  {{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
  ```
+ **Corpo do texto**: 

  ```
  {{ range .Alerts }}{{ .Status }}: {{ .Labels.alertname }}
  {{end }}
  ```

Você pode criar seus próprios modelos personalizados, como no exemplo a seguir.
+ **Título**:

  ```
  {{ template "slack.default.title" .}}
  ```
+ **Corpo do texto**: 

  ```
  {{ template "mymessage" .}}
  ```

Veja a seguir um modelo de exemplo.

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

Os procedimentos a seguir mostram como criar, editar e excluir modelos personalizados de mensagens.

**Para criar um modelo de mensagem**

1. No console do Grafana, no menu do Grafana, escolha o ícone de **Alertas** (sino) para abrir a página **Alertas**.

1. Escolha **Pontos de contato**.

1. No menu suspenso do **Alertmanager**, selecione a instância do Alertmanager para a qual você deseja criar um modelo de mensagem. O padrão é o Grafana Alertmanager.

1. Escolha **Adicionar modelo**.

1. Adicione um **Nome** descritivo.

1. Adicione o **Conteúdo** do modelo, por exemplo:

   ```
   {{ define "mymessage" }}
     {{ range .Alerts }}
       [{{ .Status }}] {{ range .Labels }} {{ .Name }}={{.Value }}{{end}}
     {{ end }}
   {{ end }}
   ```

   A tag `define` na seção Conteúdo atribui o nome do modelo. Essa tag é opcional e, quando omitida, o nome do modelo é derivado do campo **Nome**. Quando ambos são especificados, é uma prática recomendada mantê-los iguais.

1. Selecione **Salvar modelo**.

**nota**  
O HTML nos modelos de mensagens de alerta é renderizado como texto, com os caracteres de controle de escape. A renderização de HTML na notificação resultante não é compatível com o Grafana.

**Para editar um modelo de mensagem**

1. Na página **Alertas**, escolha **Pontos de contato** para abrir a lista de pontos de contato.

1. Na **tabela Modelo**, encontre o modelo que você deseja editar e escolha o ícone de **Editar** (caneta).

1. Faça suas alterações e escolha **Salvar modelo**.

**Para excluir um modelo de mensagem**

1. Na página **Alertas**, escolha **Pontos de contato** para abrir a lista de pontos de contato.

1. Na **tabela Modelo**, encontre o modelo que você deseja remover e escolha o ícone de **Excluir** (lixeira).

1. Escolha **Sim, excluir** para excluir o modelo.

**Modelos aninhados**

Você pode incorporar modelos em outros modelos.

Por exemplo, você pode definir um fragmento de modelo usando a palavra-chave `define`:

```
{{ define "mytemplate" }}
  {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved.
{{ end }}
```

Você pode então incorporar modelos personalizados nesse fragmento usando a palavra-chave `template`. Por exemplo:

```
Alert summary:
{{ template "mytemplate" . }}
```

Você pode usar as opções a seguir de modelo incorporado para incorporar modelos personalizados.


| Nome | Observações | 
| --- | --- | 
|  `default.title`  |  Exibe informações de status de alto nível.  | 
|  `default.message`  |  Fornece um resumo formatado dos alertas disparados e resolvidos.  | 

**Exemplos de modelos personalizados**

Aqui estão alguns exemplos de como usar modelos personalizados.

Modelo para renderizar um único alerta:

```
{{ define "myalert" }}
  [{{.Status}}] {{ .Labels.alertname }}

  Labels:
  {{ range .Labels.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}

  {{ if gt (len .Annotations) 0 }}
  Annotations:
  {{ range .Annotations.SortedPairs }}
    {{ .Name }}: {{ .Value }}
  {{ end }}
  {{ end }}

  {{ if gt (len .SilenceURL ) 0 }}
    Silence alert: {{ .SilenceURL }}
  {{ end }}
  {{ if gt (len .DashboardURL ) 0 }}
    Go to dashboard: {{ .DashboardURL }}
  {{ end }}
{{ end }}
```

Modelo para renderizar toda a mensagem de notificação:

```
{{ define "mymessage" }}
  {{ if gt (len .Alerts.Firing) 0 }}
    {{ len .Alerts.Firing }} firing:
    {{ range .Alerts.Firing }} {{ template "myalert" .}} {{ end }}
  {{ end }}
  {{ if gt (len .Alerts.Resolved) 0 }}
    {{ len .Alerts.Resolved }} resolved:
    {{ range .Alerts.Resolved }} {{ template "myalert" .}} {{ end }}
  {{ end }}
{{ end }}
```

## Dados do modelo
<a name="alert-template-data"></a>

Os dados a seguir são passados para os modelos de mensagem.


| Nome | Tipo | Observações | 
| --- | --- | --- | 
|  `Receiver`  |  string  |  Nome do ponto de contato para o qual a notificação está sendo enviada.  | 
|  `Status`  |  string  |  disparado se pelo menos um alerta estiver sendo disparado, caso contrário, resolvido.  | 
|  `Alerts`  |  Alerta  |  Lista de objetos de alerta incluídos nessa notificação (veja abaixo).  | 
|  `GroupLabels`  |  KeyValue  |  Rótulos pelos quais esses alertas foram agrupados.  | 
|  `CommonLabels`  |  KeyValue  |  Rótulos comuns a todos os alertas incluídos nessa notificação.  | 
|  `CommonAnnotations`  |  KeyValue  |  Anotações comuns a todos os alertas incluídos nessa notificação.  | 
|  `ExternalURL`  |  string  |  Link de retorno para o Grafana que enviou a notificação. Se estiver usando o Alertmanager externo, volte para ele.  | 

O tipo `Alerts` expõe duas funções para filtrar os alertas retornados.
+ `Alerts.Firing`: retorna uma lista de alertas disparados.
+ `Alerts.Resolved`: retorna uma lista de alertas resolvidos.

**Alerta (tipo)**

O tipo de alerta contém os dados a seguir.


| Nome | Tipo | Observações | 
| --- | --- | --- | 
|  Status  |  string  |  `firing` ou `resolved`.  | 
|  Rótulos  |  KeyValue  |  Um conjunto de rótulos anexados ao alerta.  | 
|  Anotações  |  KeyValue  |  Um conjunto de anotações anexadas ao alerta.  | 
|  StartsAt  |  time.Time  |  Hora em que o alerta começou a disparar.  | 
|  EndsAt  |  time.Time  |  Definido somente se a hora de término de um alerta for conhecida. Caso contrário, defina um período de tempo limite configurável a partir do momento em que o último alerta foi recebido.  | 
|  GeneratorURL  |  string  |  Um link de retorno para o Grafana ou para o Alertmanager externo.  | 
|  SilenceURL  |  string  |  Link para a funcionalidade de silêncio por do Grafana com rótulos para esse alerta pré-preenchidos. Somente para alertas gerenciados pelo Grafana.  | 
|  DashboardURL  |  string  |  Link para o dashboard do Grafana, se a regra de alerta pertencer a um. Somente para alertas gerenciados pelo Grafana.  | 
|  PanelURL  |  string  |  Link para o painel do dashboard do Grafana, se a regra de alerta pertencer a um. Somente para alertas gerenciados pelo Grafana.  | 
|  Impressão digital  |  string  |  Impressão digital que pode ser usada para identificar o alerta.  | 
|  ValueString  |  string  |  Uma string que contém os rótulos e o valor de cada expressão reduzida no alerta.  | 

**KeyValue tipo**

O `KeyValue` tipo é um conjunto de pares de key/value strings que representam rótulos e anotações.

Além do acesso direto aos dados armazenados como um `KeyValue`, também existem métodos para classificar, remover e transformar os dados.


| Nome | Argumentos | Retornos | Observações | 
| --- | --- | --- | --- | 
|  SortedPairs  |    |  Lista ordenada de pares de strings de chave e valor  |    | 
|  Remover  |  []string  |  KeyValue  |  Retorna uma cópia do Key/Value mapa sem as chaves fornecidas.  | 
|  Nomes  |    |  []string  |  Lista de nomes de rótulos  | 
|  Valores  |    |  []string  |  Lista de valores de rótulos  | 



## Funções de modelo
<a name="alert-template-functions"></a>

Ao usar funções de modelo, você pode processar rótulos e anotações para gerar notificações dinâmicas. As funções a seguir estão disponíveis.


| Nome | Tipo de argumento | Tipo de retorno | Description | 
| --- | --- | --- | --- | 
|  `humanize`  |  número ou string  |  string  |  Converte um número em um formato mais legível, usando prefixos de métricas.  | 
|  `humanize1024`  |  número ou string  |  string  |  Como o humanize, mas usa 1024 como base em vez de 1000.  | 
|  `humanizeDuration`  |  número ou string  |  string  |  Converte uma duração em segundos em um formato mais legível.  | 
|  `humanizePercentage`  |  número ou string  |  string  |  Converte um valor de proporção em uma fração de 100.  | 
|  `humanizeTimestamp`  |  número ou string  |  string  |  Converte um carimbo de data e hora do Unix em segundos em um formato mais legível.  | 
|  `title`  |  string  |  string  |  strings.Title, coloca em maiúscula o primeiro caractere de cada palavra.  | 
|  `toUpper`  |  string  |  string  |  cordas. ToUpper, converte todos os caracteres em maiúsculas.  | 
|  `toLower`  |  string  |  string  |  cordas. ToLower, converte todos os caracteres em minúsculas.  | 
|  `match`  |  padrão, texto  |  booleano  |  regexp. MatchString Testes para uma correspondência de expressão regular não ancorada.  | 
|  `reReplaceAll`  |  padrão, substituição, texto  |  string  |  Regexp. ReplaceAllString Substituição Regexp, não ancorada.  | 
|  `graphLink`  |  string: objeto JSON com os campos `expr` e `datasource`  |  string  |  Retorna o caminho para a visualização gráfica no Explore para a expressão e a fonte de dados fornecidas.  | 
|  `tableLink`  |  string: objeto JSON com os campos `expr` e `datasource`  |  string  |  Retorna o caminho para a visualização tabular no Explore para a expressão e a fonte de dados fornecidas.  | 
|  `args`  |  []interface\$1\$1  |  map[string]interface\$1\$1  |  Converte uma lista de objetos em um mapa com chaves, por exemplo, arg0, arg1. Use essa função para passar vários argumentos para modelos.  | 
|  `externalURL`  |  nothing  |  string  |  Retorna uma string representando o URL externo.  | 
|  `pathPrefix`  |  nothing  |  string  |  Retorna o caminho do URL externo.  | 

A tabela a seguir mostra exemplos do uso de cada função.


| Função | TemplateString | Input | Esperados | 
| --- | --- | --- | --- | 
|  humanize  |  \$1 humanize \$1value \$1  |  1234567,0  |  1,235M  | 
|  humanize1024  |  \$1 humanize1024 \$1value \$1  |  1048576,0  |  1Mi  | 
|  humanizeDuration  |  \$1 humanizeDuration \$1value \$1  |  899,99  |  14m 59s  | 
|  humanizePercentage  |  \$1 humanizePercentage \$1value \$1  |  0,1234567  |  12,35%  | 
|  humanizeTimestamp  |  \$1 humanizeTimestamp \$1value \$1  |  1435065584.128  |  2015-06-23 13:19:44.128 \$10000 UTC  | 
|  título  |  \$1 \$1value \$1 title \$1  |  aa bB CC  |  Aa Bb Cc  | 
|  toUpper  |  \$1 \$1value \$1 toUpper \$1  |  aa bB CC  |  AA BB CC  | 
|  toLower  |  \$1 \$1value \$1 toLower \$1  |  aa bB CC  |  aa bb cc  | 
|  match  |  \$1 match "a\$1" \$1labels.instance \$1  |  aa  |  true  | 
|  reReplaceAll  |  \$1\$1 reReplaceAll “localhost :( .\$1)” “meu.domínio: \$11" \$1labels.instance\$1\$1  |  localhost:3000  |  my.domain:3000  | 
|  graphLink  |  \$1\$1 graphLink "\$1\$1"expr\$1": \$1"up\$1", \$1"datasource\$1": \$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore?left=["now-1h","now","gdev-prometheus",\$1"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true\$1]  | 
|  tableLink  |  \$1\$1 tableLink "\$1\$1"expr\$1":\$1"up\$1", \$1"datasource\$1":\$1"gdev-prometheus\$1"\$1" \$1\$1  |    |  /explore?left=["now-1h","now","gdev-prometheus",\$1"datasource":"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\$1template "x" (args 1 "2")\$1\$1  |    |  1 2  | 
|  externalURL  |  \$1 externalURL \$1  |    |  http://localhost/path/prefix  | 
|  pathPrefix  |  \$1 pathPrefix \$1  |    |  /path/prefix  | 