Notificaciones avanzadas de Synthetic Monitoring
Puedes personalizar los mensajes de monitor de Synthetic Monitoring utilizando plantillas de identificadores. Los siguientes ejemplos abordan técnicas avanzadas como comentarios, acceso a listas, condiciones e iteraciones.
Nota: Siempre comprueba tu sintaxis directamente en el editor de mensajes de monitor, ya que el comportamiento de la plantilla puede variar ligeramente entre versiones.
Comentarios
Utiliza comentarios para explicar lo que hace la plantilla. Los comentarios se eliminan del mensaje final renderizado.
{{! This is a comment }}
{{!
This is a
multi-line comment
}}
Para mostrar valores sin formato, sin escapes HTML (por ejemplo, URLs o respuestas HTTP en bloques de código), utiliza llaves triples:
Algunas integraciones de mensaje (como Google) requieren llaves triples {{{ alrededor de las variables de plantilla para garantizar un formato adecuado cuando se muestra el mensaje. Por ejemplo, puedes utilizar {{{synthetics.attributes.result.failure.message}}}.
Puedes realizar bucles sobre listas (como pasos o variables) o acceder directamente a los elementos:
{{list.2.name}} {{! third item }}
{{list.-1.status}} {{! last item }}
{{list[My Complex Name]url}} {{! use bracket notation for complex keys }}
{{list[My Complex Name]failure.code}}
{{list.abc-def-ghi}} {{! access via ID (case-insensitive) }}
Nota: Todas las duraciones están en milisegundos.
Duraciones:
{{eval "synthetics.attributes.result.duration/1000"}}
Tamaños de los datos:
{{eval "humanize_bytes(bodySize)"}}
Condiciones
Utiliza #if, #is_match y #is_exact_match para una representación basada en la lógica.
Check booleano:
{{#if synthetics.attributes.variable.config.CONFIG_VAR.secure}}
The CONFIG_VAR variable is obfuscated
{{else}}
The CONFIG_VAR variable isn't obfuscated
{{/if}}
Alerta condicional basada en el ID de paso
{{#is_exact_match synthetics.failed_step.id "svn-yrx-3xg"}}
A backend-related step failed!
@slack-backend-team
{{else}}
Another step failed, probably Frontend related
@slack-frontend-team
{{/is_exact_match}}
Utiliza #if en lugar de #is_exact_match para comprobar si una variable está vacía o no está establecida.
Iteración
Utiliza #each para recorrer diccionarios o listas. Puedes acceder a ellos:
this → el elemento actual@key → la clave actual (para diccionarios)@index, @first, @last → metadatos de bucle
Ejemplo de diccionario:
{{#each users}}
# User `{{@key}}`
Name: {{name}}
Permissions: {{permissions}}
{{/each}}
Users: {{#each users}}`{{@key}}` ({{name}}){{#unless @last}}, {{/unless}}{{/each}}
Utilizar variables locales (configuración) en una notificación
Synthetic Test Failed!
Application: {{ synthetics.attributes.result.variables.config[APP_NAME].value }}
URL Tested: {{ synthetics.attributes.result.variables.config[APP_URL].value }}
Random value: {{ synthetics.attributes.result.variables.config[NAME].value }}
Test: {{ synthetics.attributes.test.name }} ({{ synthetics.attributes.test.id }})
Failed step: {{ synthetics.failed_step.name }}
Location: {{ synthetics.attributes.location.id }}
Result: {{ synthetics.result_url }}
@your-email
Para recorrer todas las variables de configuración e imprimir sus valores de forma segura:
{{#each synthetics.attributes.result.variables.config}}
- {{@key}}: {{#if this.secure}}[secure]{{else}}{{this.value}}{{/if}}
{{/each}}
Bucle de pasos
{{#each synthetics.attributes.result.steps}}
* Step name: {{description}}
* Step status: {{status}}
* Step type: {{type}}
{{/each}}
Referencias adicionales
Más enlaces, artículos y documentación útiles: