Macros de usuario
Descripción general
Los macros de usuario son compatibles con Zabbix para ofrecer una 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 la siguiente prioridad:
- Macros a nivel de host (se comprueban primero).
- Macros definidos para los templates de primer nivel del host (es decir, templates vinculados directamente al host), ordenados por ID del template.
- Macros definidos para los templates de segundo nivel del host, ordenados por ID del template.
- Macros definidos para los templates de tercer nivel del host, ordenados por ID del template, etc.
- Macros globales (se comprueban en último lugar).
En otras palabras, si un macro no existe para un host, Zabbix intentará encontrarlo en los templates del host, aumentando progresivamente el nivel de profundidad. Si aún no se encuentra, se utilizará un macro global, si existe.
Si existe un macro con el mismo nombre en varios templates vinculados del mismo nivel, se utilizará 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, este no se resolverá.
Los macros (incluidos los macros de usuario) se dejan sin resolver en la sección Configuration (por ejemplo, en la lista de triggers) de forma intencionada, para que las configuraciones complejas sean más transparentes.
Los macros de usuario se pueden utilizar en:
- nombre del item
- parámetro de la clave del item
- intervalos de actualización y intervalos flexibles del item
- nombre y descripción del trigger
- parámetros y constantes de la expresión del trigger (consulte los 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 usar macros de host 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 hosts. Para obtener más información, consulte Passive and active agent checks.
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}. Los siguientes caracteres están permitidos 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/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 utilizado 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 secret macros 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, clave de item, función, operador u otra expresión de trigger (las secret macros 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 una macro de nivel de host en la clave del item "Estado del daemon SSH":
net.tcp.service[ssh,,{$SSH_PORT}]
Este item se puede asignar a varios hosts, siempre que el valor de {$SSH_PORT} esté definido en esos hosts.
Ejemplo 2
Uso de una macro de nivel de host en el trigger "La carga de CPU es demasiado alta":
last(/ca_001/system.cpu.load[,avg1])>{$MAX_CPULOAD}
Este trigger se crearía en el template, no se editaría en hosts individuales.
Si desea utilizar la cantidad de valores como parámetro de la función (por ejemplo, max(/host/key,#3)), incluya el signo de almohadilla en la definición de la macro de esta manera: SOME_PERIOD => #3.
Ejemplo 3
Uso de dos macros en el trigger "La carga de la CPU es demasiado alta":
min(/ca_001/system.cpu.load[,avg1],{$CPULOAD_PERIOD})>{$MAX_CPULOAD}
Tenga en cuenta que una macro puede utilizarse como parámetro de una función de trigger, en este ejemplo, la función min().
Ejemplo 4
Sincronice la condición de indisponibilidad del agent con el intervalo de actualización del item:
- defina la macro
{$INTERVAL}y utilícela en el intervalo de actualización del item; - utilice
{$INTERVAL}como parámetro del trigger de indisponibilidad del agent:
nodata(/ca_001/agent.ping,{$INTERVAL})=1
Ejemplo 5
Centralice la configuración del horario laboral:
- cree una macro global
{$WORKING_HOURS}con el valor1-5,09:00-18:00; - utilícela en el campo Horario laboral de Administración > General > Interfaz gráfica de usuario;
- utilícela en el campo Cuándo está activo de Usuarios > Usuarios, pestaña Medios de un usuario;
- utilícela para configurar un sondeo más frecuente de los item durante el horario laboral:

- utilícela en la condición de acción Período de tiempo;
- ajuste el horario laboral en Administración > Macros, si es necesario.
Ejemplo 6
Utilice una macro de prototipo de host para configurar items para los hosts descubiertos:
- En un prototipo de host, defina la macro de usuario
{$SNMPVALUE}con la macro de descubrimiento de bajo nivel{#SNMPVALUE}como valor:

- Asigne el template Generic SNMPv2 al prototipo de host.
- Utilice
{$SNMPVALUE}en el campo SNMP OID de los items del template Generic SNMPv2.
Contexto de las macros de usuario
Consulta macros de usuario con contexto.