Uso de plantillas de mensajes - Amazon Managed Grafana

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de plantillas de mensajes

Este tema de documentación está diseñado para los espacios de trabajo de Grafana que admiten la versión 8.x de Grafana.

Para los espacios de trabajo de Grafana que admiten la versión 10.x de Grafana, consulte Uso de la versión 10 de Grafana.

Para los espacios de trabajo de Grafana que admiten la versión 9.x de Grafana, consulte Uso de la versión 9 de Grafana.

Las notificaciones que se envían a través de Uso de puntos de contacto se crean mediante plantillas de mensajes. Las plantillas predeterminadas de Grafana se basan en el sistema de plantillas de Go, en el que algunos campos se evalúan como texto, mientras que otros se evalúan como HTML (lo que puede afectar al escape).

Como la mayoría de los campos de puntos de contacto pueden tener plantillas, puede crear plantillas personalizadas reutilizables y utilizarlas en varios puntos de contacto. En el tema Datos de plantilla se enumeran las variables que están disponibles para la creación de plantillas.

Uso de plantillas

Las plantillas se utilizan para crear un mensaje. Por ejemplo, con un mensaje de alerta de Slack, puede establecer el título y el cuerpo del punto de contacto. En el siguiente ejemplo se muestra cómo usar las plantillas predeterminadas para crear un título que contenga un recuento de las alertas que se están activando y que están resueltas, y un cuerpo que muestre las alertas y sus estados.

  • Título:

    {{ len .Alerts.Firing }} firing, {{ len .Alerts.Resolved }} resolved
  • Cuerpo del texto:

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

Puede crear sus propias plantillas personalizadas, como en el ejemplo siguiente.

  • Título:

    {{ template "slack.default.title" .}}
  • Cuerpo del texto:

    {{ template "mymessage" .}}

A continuación se muestra una plantilla de ejemplo.

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

Los procedimientos que aparecen a continuación le muestran cómo crear, editar y eliminar plantillas de mensajes personalizadas.

Creación de una plantilla de mensaje
  1. En la consola de Grafana, en el menú de Grafana, seleccione el icono Alertas (campana) para abrir la página Alertas.

  2. Seleccione Puntos de contacto.

  3. En el menú desplegable Alertmanager, seleccione la instancia de Alertmanager para la que quiere crear una plantilla de mensaje. La predeterminada es la instancia de Alertmanager de Grafana.

  4. Elija Agregar plantilla.

  5. Indique un nombre descriptivo.

  6. Agregue el contenido de la plantilla, por ejemplo:

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

    La etiqueta define de la sección de contenido asigna el nombre de la plantilla. Esta etiqueta es opcional y, si se omite, el nombre de la plantilla se deriva del campo Nombre. Cuando se especifican ambas, se recomienda mantenerlas iguales.

  7. Elija Guardar plantilla.

nota

El HTML de las plantillas de mensajes de alerta se representa como texto, con los caracteres de control escapados. Grafana no admite la representación de HTML en la notificación resultante.

Para editar una plantilla de mensaje
  1. En la página Alertas, elija Puntos de contacto para abrir la lista de puntos de contacto.

  2. En la tabla de plantillas, busque la plantilla que desee editar y, a continuación, seleccione el icono Editar (lápiz).

  3. Haga sus cambios y, a continuación, elija Guardar.

Para eliminar una plantilla de mensaje
  1. En la página Alertas, elija Puntos de contacto para abrir la lista de puntos de contacto.

  2. En la tabla de plantillas, busque la plantilla que desea eliminar y, a continuación, seleccione el icono Eliminar (papelera).

  3. Elija Sí, eliminar para eliminar la plantilla.

Plantillas anidadas

Puede incrustar plantillas dentro de otras plantillas.

Por ejemplo, puede definir un fragmento de plantilla mediante la palabra clave define:

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

A continuación, puede incrustar plantillas personalizadas en este fragmento mediante la palabra clave template. Por ejemplo:

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

Puede utilizar las siguientes opciones de plantilla integradas para incrustar plantillas personalizadas.

Nombre Notas

default.title

Muestra información general de estado.

default.message

Proporciona un resumen con formato de las alertas que se están activando y que están resueltas.

Ejemplos de plantillas personalizadas

Estos son algunos ejemplos de cómo usar plantillas personalizadas.

Plantilla para representar una sola 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 }}

Plantilla para representar el mensaje de notificación completo:

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

Datos de plantilla

Los siguientes datos se transfieren a las plantillas de mensajes.

Nombre Tipo Notas

Receiver

cadena

Nombre del punto de contacto al que se envía la notificación.

Status

cadena

firing si se está activando al menos una alerta; de lo contrario, resolved.

Alerts

Alerta

Lista de los objetos de alerta que se incluyen en esta notificación (véase más abajo).

GroupLabels

KeyValue

Etiquetas por las que se agruparon estas alertas.

CommonLabels

KeyValue

Etiquetas comunes a todas las alertas incluidas en esta notificación.

CommonAnnotations

KeyValue

Anotaciones comunes a todas las alertas incluidas en esta notificación.

ExternalURL

cadena

Enlace para volver a la instancia de Grafana que envió la notificación. Si utiliza un Alertmanager externo, enlace para volver a este Alertmanager.

El tipo Alerts presenta dos funciones para filtrar las alertas devueltas.

  • Alerts.Firing: devuelve una lista de alertas en activación.

  • Alerts.Resolved: devuelve una lista de alertas resueltas.

Alerta (tipo)

El tipo de alerta contiene los datos siguientes.

Nombre Tipo Notas

Status

cadena

firing o bien resolved.

Etiquetas

KeyValue

Un conjunto de etiquetas adjunto a la alerta.

Annotations

KeyValue

Un conjunto de anotaciones adjunto a la alerta.

StartsAt

time.Time

Hora en que la alerta empezó a activarse.

EndsAt

time.Time

Se establece solo si se conoce la hora de finalización de una alerta. De lo contrario, se establece en un periodo de tiempo de espera configurable a partir del momento en que se recibió la última alerta.

GeneratorURL

cadena

Enlace para volver a Grafana o a una instancia externa de Alertmanager.

SilenceURL

cadena

Enlace a un silencio de Grafana con las etiquetas para esta alerta rellenadas previamente. Solo para alertas administradas por Grafana.

DashboardURL

cadena

Enlace al panel de control de Grafana, si la regla de alerta pertenece a uno. Solo para alertas administradas por Grafana.

PanelURL

cadena

Enlace al panel de paneles de control de Grafana, si la regla de alerta pertenece a uno. Solo para alertas administradas por Grafana.

Huella digital

cadena

Huella digital que se puede utilizar para identificar la alerta.

ValueString

cadena

Una cadena que contiene las etiquetas y el valor de cada expresión reducida de la alerta.

Tipo KeyValue

El tipo KeyValue es un conjunto de pares de cadenas de clave-valor que representan etiquetas y anotaciones.

Además del acceso directo a los datos almacenados como KeyValue, también hay métodos para ordenar, eliminar y transformar los datos.

Nombre Argumentos Devuelve Notas

SortedPairs

Lista ordenada de pares de cadenas de claves y valores

Remove

[]string

KeyValue

Devuelve una copia de la asignación de clave-valor sin las claves indicadas.

Nombres

[]string

Lista de nombres de etiquetas

Valores

[]string

Lista de valores de etiquetas

Funciones de plantilla

Con las funciones de plantilla, puede procesar etiquetas y anotaciones para generar notificaciones dinámicas. Están disponibles las siguientes funciones.

Nombre Tipo de argumento Tipo de retorno Descripción

humanize

número o cadena

cadena

Convierte un número a un formato más legible mediante prefijos métricos.

humanize1024

número o cadena

cadena

Como humanize, pero usa 1024 como base en lugar de 1000.

humanizeDuration

número o cadena

cadena

Convierte una duración en segundos a un formato más legible.

humanizePercentage

número o cadena

cadena

Convierte un valor de relación en una fracción de 100.

humanizeTimestamp

número o cadena

cadena

Convierte una marca de tiempo de Unix en segundos a un formato más legible.

title

cadena

cadena

strings.Title, pone en mayúscula el primer carácter de cada palabra.

toUpper

cadena

cadena

strings.ToUpper, convierte todos los caracteres en mayúscula.

toLower

cadena

cadena

strings.ToLower, convierte todos los caracteres en minúscula.

match

patrón, texto

boolean

regexp.MatchString, comprueba si hay una coincidencia de expresiones regulares no anclada.

reReplaceAll

patrón, reemplazo, texto

cadena

Regexp.ReplaceAllString, sustitución de expresiones regulares, sin anclar.

graphLink

cadena: objeto JSON con campos expr y datasource

cadena

Devuelve la ruta a la vista gráfica en Explore para la expresión y el origen de datos determinados.

tableLink

cadena: objeto JSON con campos expr y datasource

cadena

Devuelve la ruta a la vista tabular en Explore para la expresión y el origen de datos determinados.

args

[]interface{}

map[string]interface{}

Convierte una lista de objetos en una asignación con claves, por ejemplo, arg0, arg1. Utilice esta función para pasar varios argumentos a las plantillas.

externalURL

ninguno

cadena

Devuelve una cadena que representa la URL externa.

pathPrefix

ninguno

cadena

Devuelve la ruta de la URL externa.

En la siguiente tabla se muestran ejemplos de uso de cada función.

Función TemplateString Entrada Expected

humanize

{ humanize $value }

1234567.0

1,235 M

humanize1024

{ humanize1024 $value }

1048576.0

1 Mi

humanizeDuration

{ humanizeDuration $value }

899,99

14 min 59 s

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

match

{ match "a+" $labels.instance }

aa

true

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