Usar modelos de mensagens - Amazon Managed Grafana

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, 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 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.

  2. Escolha Pontos de contato.

  3. 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.

  4. Escolha Adicionar modelo.

  5. Adicione um Nome descritivo.

  6. 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.

  7. 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.

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

  3. 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.

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

  3. 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

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.

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

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

strings.ToUpper, converte todos caracteres para letras maiúsculas.

toLower

string

string

strings.ToLower, converte todos caracteres para letras minúsculas.

match

padrão, texto

boolean

regexp.MatchString Testa uma correspondência de regexp não ancorada.

reReplaceAll

padrão, substituição, texto

string

Regexp.ReplaceAllString Substituição de 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{}

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.

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 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