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
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
-
En la consola de Grafana, en el menú de Grafana, seleccione el icono Alertas (campana) para abrir la página Alertas.
-
Seleccione Puntos de contacto.
-
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.
-
Elija Agregar plantilla.
-
Indique un nombre descriptivo.
-
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. -
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
-
En la página Alertas, elija Puntos de contacto para abrir la lista de puntos de contacto.
-
En la tabla de plantillas, busque la plantilla que desee editar y, a continuación, seleccione el icono Editar (lápiz).
-
Haga sus cambios y, a continuación, elija Guardar.
Para eliminar una plantilla de mensaje
-
En la página Alertas, elija Puntos de contacto para abrir la lista de puntos de contacto.
-
En la tabla de plantillas, busque la plantilla que desea eliminar y, a continuación, seleccione el icono Eliminar (papelera).
-
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 |
---|---|
|
Muestra información general de estado. |
|
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 |
---|---|---|
|
cadena |
Nombre del punto de contacto al que se envía la notificación. |
|
cadena |
firing si se está activando al menos una alerta; de lo contrario, resolved. |
|
Alerta |
Lista de los objetos de alerta que se incluyen en esta notificación (véase más abajo). |
|
KeyValue |
Etiquetas por las que se agruparon estas alertas. |
|
KeyValue |
Etiquetas comunes a todas las alertas incluidas en esta notificación. |
|
KeyValue |
Anotaciones comunes a todas las alertas incluidas en esta notificación. |
|
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 |
|
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 |
---|---|---|---|
|
número o cadena |
cadena |
Convierte un número a un formato más legible mediante prefijos métricos. |
|
número o cadena |
cadena |
Como humanize, pero usa 1024 como base en lugar de 1000. |
|
número o cadena |
cadena |
Convierte una duración en segundos a un formato más legible. |
|
número o cadena |
cadena |
Convierte un valor de relación en una fracción de 100. |
|
número o cadena |
cadena |
Convierte una marca de tiempo de Unix en segundos a un formato más legible. |
|
cadena |
cadena |
strings.Title, pone en mayúscula el primer carácter de cada palabra. |
|
cadena |
cadena |
strings.ToUpper, convierte todos los caracteres en mayúscula. |
|
cadena |
cadena |
strings.ToLower, convierte todos los caracteres en minúscula. |
|
patrón, texto |
boolean |
regexp.MatchString, comprueba si hay una coincidencia de expresiones regulares no anclada. |
|
patrón, reemplazo, texto |
cadena |
Regexp.ReplaceAllString, sustitución de expresiones regulares, sin anclar. |
|
cadena: objeto JSON con campos |
cadena |
Devuelve la ruta a la vista gráfica en Explore para la expresión y el origen de datos determinados. |
|
cadena: objeto JSON con campos |
cadena |
Devuelve la ruta a la vista tabular en Explore para la expresión y el origen de datos determinados. |
|
[]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. |
|
ninguno |
cadena |
Devuelve una cadena que representa la URL externa. |
|
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 |