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
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 compatíveis com o Grafana versão 10.x, consulte Trabalhar no Grafana versão 10.
Para espaços de trabalho do Grafana compatíveis com o Grafana versão 9.x, consulte Trabalhar no Grafana versão 9.
As notificações enviadas via Trabalhar com pontos de contato são criadas usando modelos de mensagens. Os modelos padrão do Grafana são baseados no sistema de modelos do Go
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 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
-
No console do Grafana, no menu do Grafana, escolha o ícone de Alertas (sino) para abrir a página Alertas.
-
Escolha Pontos de contato.
-
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.
-
Escolha Adicionar modelo.
-
Adicione um Nome descritivo.
-
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. -
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
-
Na página Alertas, escolha Pontos de contato para abrir a lista de pontos de contato.
-
Na tabela Modelo, encontre o modelo que você deseja editar e escolha o ícone de Editar (caneta).
-
Faça suas alterações e escolha Salvar modelo.
Para excluir um modelo de mensagem
-
Na página Alertas, escolha Pontos de contato para abrir a lista de pontos de contato.
-
Na tabela Modelo, encontre o modelo que você deseja remover e escolha o ícone de Excluir (lixeira).
-
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 |
---|---|
|
Exibe informações de status de alto nível. |
|
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
Os dados a seguir são passados para os modelos de mensagem.
Nome | Tipo | Observações |
---|---|---|
|
string |
Nome do ponto de contato para o qual a notificação está sendo enviada. |
|
string |
disparado se pelo menos um alerta estiver sendo disparado, caso contrário, resolvido. |
|
Alerta |
Lista de objetos de alerta incluídos nessa notificação (veja abaixo). |
|
KeyValue |
Rótulos pelos quais esses alertas foram agrupados. |
|
KeyValue |
Rótulos comuns a todos os alertas incluídos nessa notificação. |
|
KeyValue |
Anotações comuns a todos os alertas incluídos nessa notificação. |
|
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 |
|
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. |
Tipo KeyValue
O tipo KeyValue
é um conjunto de pares de strings de chave/valor 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 mapa Chave/Valor sem as chaves fornecidas. |
Nomes |
[]string |
Lista de nomes de rótulos |
|
Valores |
[]string |
Lista de valores de rótulos |
Funções de modelo
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 | Descrição |
---|---|---|---|
|
número ou string |
string |
Converte um número em um formato mais legível, usando prefixos de métricas. |
|
número ou string |
string |
Como o humanize, mas usa 1024 como base em vez de 1000. |
|
número ou string |
string |
Converte uma duração em segundos em um formato mais legível. |
|
número ou string |
string |
Converte um valor de proporção em uma fração de 100. |
|
número ou string |
string |
Converte um carimbo de data e hora do Unix em segundos em um formato mais legível. |
|
string |
string |
strings.Title, coloca em maiúscula o primeiro caractere de cada palavra. |
|
string |
string |
strings.ToUpper, converte todos caracteres para letras maiúsculas. |
|
string |
string |
strings.ToLower, converte todos caracteres para letras minúsculas. |
|
padrão, texto |
boolean |
regexp.MatchString Testa uma correspondência de regexp não ancorada. |
|
padrão, substituição, texto |
string |
Regexp.ReplaceAllString Substituição de regexp, não ancorada. |
|
string: objeto JSON com os campos |
string |
Retorna o caminho para a visualização gráfica no Explore para a expressão e a fonte de dados fornecidas. |
|
string: objeto JSON com os campos |
string |
Retorna o caminho para a visualização tabular no Explore para a expressão e a fonte de dados fornecidas. |
|
[]interface{} |
map[string]interface{} |
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. |
|
nothing |
string |
Retorna uma string representando o URL externo. |
|
nothing |
string |
Retorna o caminho do URL externo. |
A tabela a seguir mostra exemplos do uso de cada função.
Função | TemplateString | Entrada | Esperados |
---|---|---|---|
humanize |
{ humanize $value } |
1234567,0 |
1,235M |
humanize1024 |
{ humanize1024 $value } |
1048576,0 |
1Mi |
humanizeDuration |
{ humanizeDuration $value } |
899,99 |
14m 59s |
humanizePercentage |
{ humanizePercentage $value } |
0,1234567 |
12,35% |
humanizeTimestamp |
{ humanizeTimestamp $value } |
1435065584,128 |
2015-06-23 13:19:44.128 +0000 UTC |
title |
{ $value | title } |
aa bB CC |
Aa Bb Cc |
toUpper |
{ $value | toUpper } |
aa bB CC |
AA BB CC |
toLower |
{ $value | toLower } |
aa bB CC |
aa bb cc |
jogo |
{ match "a+" $labels.instance } |
aa |
verdadeiro |
reReplaceAll |
{{ reReplaceAll "localhost:(.*)" "my.domain:$1" $labels.instance }} |
localhost:3000 |
my.domain:3000 |
graphLink |
{{ graphLink "{\"expr\": \"up\", \"datasource\": \"gdev-prometheus\"}" }} |
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":false,"range":true}] |
|
tableLink |
{{ tableLink "{\"expr\":\"up\", \"datasource\":\"gdev-prometheus\"}" }} |
/explore?left=["now-1h","now","gdev-prometheus",{"datasource":"gdev-prometheus","expr":"up","instant":true,"range":false}] |
|
args |
{{define "x"}}{{.arg0}} {{.arg1}}{{end}}{{template "x" (args 1 "2")}} |
1 2 |
|
externalURL |
{ externalURL } |
http://localhost/path/prefix |
|
pathPrefix |
{ pathPrefix } |
/path/prefix |