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

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 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, onde 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 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
  1. No console do Grafana, no menu Grafana, escolha o ícone de Alerta (sino) para abrir a página de Alerta.

  2. Escolha Pontos de contato.

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

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

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

default.title

Exibe informações de status de alto nível.

default.message

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

Receiver

string

Nome do ponto de contato para o qual a notificação está sendo enviada.

Status

string

disparando 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 nesta notificação.

CommonAnnotations

KeyValue

Anotações comuns a todos os alertas incluídos nessa notificação.

ExternalURL

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

firing ou resolved.

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

humanize

número ou string

string

Converte um número em um formato mais legível, usando prefixos métricos.

humanize1024

número ou string

string

Gosta de humanizar, 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 timestamp 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

boolean

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 campos expr e datasource

string

Retorna o caminho para a exibição gráfica no Explore para a expressão e a fonte de dados fornecidas.

tableLink

string - Objeto JSON com campos expr e datasource

string

Retorna o caminho para a exibição tabular no Explore para a expressão e a fonte de dados fornecidas.

args

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

externalURL

nada

string

Retorna uma string representando o URL externo.

pathPrefix

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