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á.
Usando modelos de mensagens
Este tópico de documentação foi desenvolvido para espaços de trabalho do Grafana que oferecem suporte ao Grafana versão 8.x.
Para espaços de trabalho do Grafana que suportam a versão 10.x do Grafana, consulte. Trabalhando na versão 10 do Grafana
Para espaços de trabalho do Grafana que suportam a versão 9.x do Grafana, consulte. Trabalhando na versão 9 do Grafana
As notificações enviadas via Trabalhando com pontos de contato são criadas usando modelos de mensagens. Os modelos padrão do Grafana são baseados no sistema de modelagem 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 Dados do modelo tópico lista as variáveis que estão disponíveis para modelagem.
Usando 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 acionados 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 exemplo de modelo.
{{ 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 de mensagem personalizados.
Para criar um modelo de mensagem
-
No console do Grafana, no menu Grafana, escolha o ícone de Alerta (sino) para abrir a página de Alerta.
-
Escolha Pontos de contato.
-
No menu suspenso 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
define
tag 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 escapados. A renderização de HTML na notificação resultante não é suportada pela 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 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 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 define
palavra-chave:
{{ define "mytemplate" }} {{ len .Alerts.Firing }} firing. {{ len .Alerts.Resolved }} resolved. {{ end }}
Em seguida, você pode incorporar modelos personalizados nesse fragmento usando a template
palavra-chave. Por exemplo: .
Alert summary: {{ template "mytemplate" . }}
Você pode usar as seguintes opções 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 acionados 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 |
disparando 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 a Grafana que enviou a notificação. Se estiver usando o Alertmanager externo, volte para esse Alertmanager. |
O Alerts
tipo expõe duas funções para filtrar os alertas retornados.
-
Alerts.Firing
— Retorna uma lista de alertas de disparo. -
Alerts.Resolved
— Retorna uma lista de alertas resolvidos.
Alerta (tipo)
O tipo de alerta contém os seguintes dados.
Nome | Tipo | Observações |
---|---|---|
Status |
string |
|
Rótulos |
KeyValue |
Um conjunto de etiquetas anexadas ao alerta. |
Anotações |
KeyValue |
Um conjunto de anotações anexado ao alerta. |
StartsAt |
Hora. Hora |
Hora em que o alerta começou a disparar. |
EndsAt |
Hora. Hora |
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. |
URL do gerador |
string |
Um link de retorno para o Grafana ou para o Alertmanager externo. |
URL de silêncio |
string |
Link para grafana silence for com rótulos para este alerta pré-preenchidos. Somente para alertas gerenciados pela Grafana. |
URL do painel |
string |
Link para o painel do grafana, se a regra de alerta pertencer a uma. Somente para alertas gerenciados pela Grafana. |
URL do painel |
string |
Link para o painel do painel do grafana, se a regra de alerta pertencer a uma. Somente para alertas gerenciados pela 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 digitar
O KeyValue
tipo é um conjunto de pares de cadeias de chave/valor que representam rótulos e anotações.
Além do acesso direto aos dados armazenados como umKeyValue
, também existem métodos para classificar, remover e transformar os dados.
Nome | Argumentos | Retornos | Observações |
---|---|---|---|
SortedPairs |
Lista ordenada de pares de cadeias de chaves e valores |
||
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
Usando funções de modelo, você pode processar rótulos e anotações para gerar notificações dinâmicas. As seguintes funções 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 métricos. |
|
número ou string |
string |
Gosta de humanizar, 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 timestamp 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 |
cordas. ToUpper, converte todos os caracteres em maiúsculas. |
|
string |
string |
cordas. ToLower, converte todos os caracteres em minúsculas. |
|
padrão, texto |
boolean |
regexp. MatchString Testes para uma correspondência de expressão regular não ancorada. |
|
padrão, substituição, texto |
string |
Regexp. ReplaceAllString Substituição Regexp, não ancorada. |
|
string - Objeto JSON com campos |
string |
Retorna o caminho para a exibição gráfica no Explore para a expressão e a fonte de dados fornecidas. |
|
string - Objeto JSON com campos |
string |
Retorna o caminho para a exibição tabular no Explore para a expressão e a fonte de dados fornecidas. |
|
[] interface {} |
interface de mapa [string] {} |
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. |
|
nada |
string |
Retorna uma string representando o URL externo. |
|
nada |
string |
Retorna o caminho do URL externo. |
A tabela a seguir mostra exemplos do uso de cada função.
Função | TemplateString | Entrada | Esperados |
---|---|---|---|
humanizar |
{humanize $value} |
1234567,0 |
1.235M |
humanizar 1024 |
{humanize1024 $value} |
1048576,0 |
1 mi |
Humanize a duração |
{humanizeDuration $value} |
899,99 |
14m 59s |
Porcentagem de humanização |
{HumanizePercentage $ value} |
0,1234567 |
12,35% |
Humanize o carimbo de data/hora |
{humanizeTimestamp $value} |
1435065584.128 |
23/06/2015 13:19:44.128 +0000 UTC |
title |
{$value | título} |
um B C |
Aa Bb Cc |
toUpper |
{$value | toUpper} |
um B C |
A BB CC |
toLower |
{$value | toLower} |
um B C |
a bb cc |
jogo |
{match “a+” $labels.instance} |
aa |
verdadeiro |
reReplaceAll |
{{ reReplaceAll “localhost :( .*)” “meu.domínio: $1" $labels.instance}} |
host local: 3000 |
meu.domínio:3000 |
GraphLink |
{{GraphLink “{\" expr\”:\ "up\”,\ "fonte de dados\”:\ "gdev-prometheus\"}”}} |
/explorar? left= ["now-1h”, "now”, "gdev-prometheus”, {"datasource” :"gdev-prometheus”, "expr” :"up”, "instant” :false, "range” :true}] |
|
Link da tabela |
{{TableLink “{\" expr\”:\ "up\”,\ "fonte de dados\”:\ "gdev-prometheus\"}”}} |
/explorar? 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 |
|
URL externo |
{URL externo} |
http://localhost/path/prefix |
|
Prefixo do caminho |
{PathPrefix} |
/caminho/prefixo |