2 Macros de usuario

Resumen

Los macros de usuario son compatibles en Zabbix para ofrecer mayor flexibilidad, además de los macros compatibles de forma predeterminada.

Los macros de usuario se pueden definir a nivel global, de template y de host. Estos macros tienen una sintaxis especial:

{$MACRO}

Zabbix resuelve los macros según el siguiente orden de precedencia:

  1. Macros a nivel de host (se comprueban primero).
  2. Macros definidos para templates de primer nivel del host (es decir, templates vinculados directamente al host), ordenados por ID de template.
  3. Macros definidos para templates de segundo nivel del host, ordenados por ID de template.
  4. Macros definidos para templates de tercer nivel del host, ordenados por ID de template, etc.
  5. Macros globales (se comprueban al final).

En otras palabras, si un macro no existe para un host, Zabbix intentará encontrarlo en los templates del host con profundidad creciente. Si aún no se encuentra, se usará un macro global, si existe.

Si un macro con el mismo nombre existe en varios templates vinculados del mismo nivel, se usará el macro del template con el ID más bajo. Por lo tanto, tener macros con el mismo nombre en varios templates supone un riesgo de configuración.

Si Zabbix no puede encontrar un macro, el macro no se resolverá.

Los macros (incluidos los macros de usuario) se dejan sin resolver en la sección de Configuración (por ejemplo, en la lista de triggers) de forma intencionada para hacer más transparente la configuración compleja.

Los macros de usuario se pueden usar en:

  • nombre del item
  • parámetro de clave del item
  • intervalos de actualización del item e intervalos flexibles
  • nombre y descripción del trigger
  • parámetros y constantes de la expresión del trigger (consulte ejemplos)
  • muchas otras ubicaciones - consulte la lista completa
Casos de uso comunes de macros globales y de equipo
  • utilizar una macro global en varios lugares; luego cambiar el valor de la macro y aplicar los cambios de configuración a todos los lugares con un solo clic
  • aprovechar las plantillas con atributos específicos del equipo: contraseñas, números de puerto, nombres de archivos, expresiones regulares, etc.

Se recomienda utilizar macros de equipo en lugar de macros globales porque agregar, actualizar o eliminar macros globales obliga a una actualización incremental de la configuración para todos los equipos. Para obtener más información, consulte Comprobaciones activas y pasivas del agente.

Configuración

Para definir macros de usuario, vaya a la ubicación correspondiente en el frontend:

  • Para macros globales, visite Administración > Macros.
  • Para macros a nivel de host y template, abra las propiedades del host o del template y busque la pestaña Macros.

Una macro de usuario tiene los siguientes atributos:

Parameter Description
Macro Nombre de la macro. El nombre debe ir entre llaves y comenzar con un signo de dólar.
Ejemplo: {$FRONTEND_URL}. Se permiten los siguientes caracteres en los nombres de macro: A-Z (solo mayúsculas), 0-9, _, .
Value Valor de la macro. Se admiten tres tipos de valor:
Text (predeterminado): valor de texto sin formato
Secret text: el valor se oculta con asteriscos
Vault secret: el valor contiene una ruta o consulta a un vault secret.

Para cambiar el tipo de valor, haga clic en el botón al final del campo de entrada del valor.

La longitud máxima de un valor de macro de usuario es de 2048 caracteres.
Description Campo de texto usado para proporcionar más información sobre esta macro.

Al configurar macros de usuario, tenga en cuenta los siguientes comportamientos específicos según el contexto:

  • si las macros de usuario se usan en items o triggers de template, considere añadir esas macros también al template (aunque estén definidas globalmente); de ese modo, las macros de tipo Text funcionarán como se espera después de exportar el template a XML e importarlo en otro sistema (los valores de las macros secretas no se exportan)
  • si las macros de usuario se usan en expresiones de trigger, esas macros solo se resolverán si hacen referencia a un parámetro o constante; NO se resolverán si hacen referencia a un host, una clave de item, una función, un operador o a otra expresión de trigger (las macros secretas no se pueden usar en expresiones de trigger)
  • si las macros de usuario se usan en un host que tiene una regla de descubrimiento de bajo nivel con prototipos de host, los hosts descubiertos heredarán todas las macros de usuario definidas en ese host

Ejemplos

Ejemplo 1

Uso de macro a nivel de equipo en la clave de la métrica "Estado del demonio SSH":

net.tcp.service[ssh,,{$SSH_PORT}]

Esta métrica puede asignarse a varios equipos, siempre que el valor de {$SSH_PORT} esté definido en esos equipos.

Ejemplo 2

Uso de macro a nivel de equipo en el disparador "La carga de CPU es demasiado alta":

last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}

Este disparador se crearía en la plantilla, no se editaría en equipos individuales.

Si desea utilizar la cantidad de valores como parámetro de la función (por ejemplo, max(/equipo/clave,#3)), incluya el símbolo de almohadilla en la definición de la macro así: ALGÚN_PERIODO => #3

Ejemplo 3

Uso de dos macros en el disparador "La carga de CPU es demasiado alta":

min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}

Tenga en cuenta que una macro puede usarse como parámetro de una función de disparador, en este ejemplo la función min().

Ejemplo 4

Sincronizar la condición de indisponibilidad del agente con el intervalo de actualización de la métrica:

  • defina la macro {$INTERVAL} y utilícela en el intervalo de actualización de la métrica;
  • utilice {$INTERVAL} como parámetro del disparador de indisponibilidad del agente:

nodata(/ca_001/agent.ping,{$INTERVAL})=1

Ejemplo 5

Centralice la configuración del horario laboral:

  • cree una macro global {$WORKING_HOURS} igual a 1-5,09:00-18:00;
  • úsela en el campo Working time en Administration > General > GUI;
  • úsela en el campo When active en Users > Users, pestaña Media de un usuario;
  • úsela para configurar una comprobación de item más frecuente durante el horario laboral:

  • úsela en la condición de acción Time period;
  • ajuste el horario laboral en Administration > Macros, si es necesario.
Ejemplo 6

Utilice la macro de prototipo de equipo para configurar métricas para los equipos descubiertos:

  • asigne la plantilla Generic SNMPv2 al prototipo de equipo;
  • utilice {$SNMPVALUE} en el campo SNMP OID de las métricas de la plantilla Generic SNMPv2.

Contexto de macro de usuario

Consulte macros de usuario con contexto.