[comment]: # translation:outdated

[comment]: # ({d30dc182-d30dc182})
#2 Macros de usuario

[comment]: # ({/d30dc182-d30dc182})

[comment]: # ({3e220640-3e220640})
#### Visión general

Las macros de usuario son compatibles con Zabbix para una mayor flexibilidad, además
a las macros [compatibles](/manual/appendix/macros/supported_by_location)
fuera de la caja.

Las macros de usuario se pueden definir a nivel global, de plantilla y de host. Estas
Las macros tienen una sintaxis especial:

    {$MACRO}

Zabbix resuelve las macros de acuerdo con la siguiente prioridad:

1. macros de nivel de host (comprobadas primero)
2. macros definidas para plantillas de primer nivel del host (es decir,
    plantillas vinculadas directamente al host), ordenadas por ID de plantilla
3. macros definidas para plantillas de segundo nivel del host, ordenadas por
    identificador de plantilla
4. macros definidas para plantillas de tercer nivel del host, ordenadas por
    ID de plantilla, etc.
5. macros globales (marcado en último lugar)

En otras palabras, si no existe una macro para un host, Zabbix intentará
encuéntrelo en las plantillas de acogida de profundidad creciente. Si aún no se encuentra, un
se utilizará la macro global, si existe.

::: nota de advertencia
Si existe una macro con el **mismo nombre** en varios
plantillas vinculadas del mismo nivel, la macro de la plantilla con el
se utilizará el ID más bajo. Así tener macros con el mismo nombre en
múltiples plantillas es un riesgo de configuración.
:::

Si Zabbix no puede encontrar una macro, la macro no se resolverá.

::: notaimportante
Las macros (incluidas las macros de usuario) quedan sin resolver
en la sección Configuración (por ejemplo, en la lista de disparadores) por
diseño para hacer que la configuración compleja sea más transparente.
:::

Las macros de usuario se pueden utilizar en:

- parámetro clave del artículo
- intervalos de actualización de artículos e intervalos flexibles
- nombre y descripción del disparador
- desencadenar parámetros y constantes de expresión (ver
    [ejemplos](#ejemplos))
- muchos otros lugares - ver el [completo
    lista](/manual/apéndice/macros/compatible_por_ubicación_usuario)

[comment]: # ({/3e220640-3e220640})

[comment]: # ({e3755145-e3755145})
##### Casos de uso comunes de macros globales y de host

- utilizar una macro global en varios lugares; luego cambia el valor de la macro
    y aplique cambios de configuración a todas las ubicaciones con un solo clic
- aproveche las plantillas con atributos específicos del host:
    contraseñas, números de puerto, nombres de archivo, expresiones regulares, etc.

[comment]: # ({/e3755145-e3755145})

[comment]: # ({1814b616-561314a3})
#### Configuración

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

- para macros globales, visite *Administración → General → Macros*
- para macros de nivel de host y plantilla, abra host o propiedades de plantilla
    y busque la pestaña *Macros*

::: nota
Si se utiliza una macro de usuario en elementos o disparadores en un
plantilla, se sugiere agregar esa macro a la plantilla incluso si
se define a nivel mundial. De esa forma, si el tipo de macro es *texto*
exportar la plantilla a XML e importarla en otro sistema
Todavía permita que funcione como se esperaba. Los valores de las macros secretas no son
[exportado](/manual/xml_export_import).
:::

Una macro de usuario tiene los siguientes atributos:

![](../../../../assets/en/manual/config/macros/user_macros.png){ancho="600"}

|Parámetro|Descripción|
|--|--------|
|*Macro*|Nombre de macro. El nombre debe estar entre llaves y comenzar con un signo de dólar.<br>Ejemplo: {$FRONTEND\_URL}. Los siguientes caracteres están permitidos en los nombres de las macros: **A-Z** (solo en mayúsculas), **0-9**, **\_**, **.**|
|*Valor*|Valor de la macro. Se admiten tres tipos de valores:<br>**Texto** (predeterminado): valor de texto sin formato<br>**Texto secreto**: el valor está enmascarado con asteriscos, lo que podría ser útil para proteger información confidencial, como contraseñas o claves compartidas.<br>**Secreto de bóveda**: el valor contiene una ruta de referencia (como 'ruta:clave', por ejemplo, "secreto/zabbix:contraseña") a un [secreto de bóveda](/manual/config/ secrets)<br><br>*Tenga en cuenta* que, si bien el valor de una macro secreta está oculto a la vista, el valor puede revelarse a través del uso de elementos. Por ejemplo, en una secuencia de comandos externa, se puede usar una declaración de "eco" que hace referencia a una macro secreta para revelar el valor de la macro a la interfaz porque el servidor Zabbix tiene acceso al valor real de la macro.<br><br>Para seleccionar el tipo de valor, haga clic en en el botón al final del campo de entrada de valor:<br>![](../../../../assets/en/manual/config/macros/macro_type_text.png) el icono indica una macro de texto ;<br>![](../../../../assets/en/manual/config/macros/macro_type_secret.png) indica una macro de texto secreta. Al pasar el mouse, el campo de valor se transforma en un botón ![](../../../../assets/en/manual/config/macros/macro_type_secret2.png), que permite ingresar un nuevo valor del macro (para salir sin guardar un nuevo valor, haga clic en la flecha hacia atrás (![](../../../../assets/en/manual/config/macros/macro_type_secret3.png)).<br> El icono ![](../../../../assets/en/manual/config/macros/macro_type_vault.png) indica una macro secreta de Vault.<br><br>Longitud máxima del valor de una macro de usuario tiene 2048 caracteres (255 caracteres en versiones anteriores a la 5.2.0).|
|*Descripción*|Campo de texto utilizado para proporcionar más información sobre esta macro.|

::: notaclásica
 Las URL que contienen una macro secreta no funcionarán como la macro
en ellos se resolverá como "\*\*\*\*\*\*".
:::

::: notaimportante
En expresiones desencadenantes, las macros de usuario se resolverán si
haciendo referencia a un parámetro o constante. NO resolverán si
haciendo referencia a un host, clave de elemento, función, operador u otro activador
expresión. Las macros secretas no se pueden usar en el disparador
expresiones
:::

[comment]: # ({/1814b616-561314a3})

[comment]: # ({4c860844-4c860844})
#### Ejemplos

[comment]: # ({/4c860844-4c860844})

[comment]: # ({b9cf8f56-b9cf8f56})
##### Ejemplo 1

Uso de macro a nivel de host en la clave del elemento "Estado del demonio SSH":

`net.tcp.servicio[ssh,,{$SSH_PORT}]`

Este elemento se puede asignar a varios hosts, siempre que el valor de
**{$SSH\_PORT}** está definido en esos hosts.

[comment]: # ({/b9cf8f56-b9cf8f56})

[comment]: # ({0fa7cf4a-0fa7cf4a})
##### Ejemplo 2

Uso de macro a nivel de host en el activador "La carga de la CPU es demasiado alta":

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

Dicho activador se crearía en la plantilla, no se editaría en
anfitriones individuales.

::: nota
Si desea utilizar la cantidad de valores como la función
parámetro (por ejemplo, **max(/host/key,\#3)**), incluir marca hash en
la definición de la macro así: ALGUNA\_PERIODO => \#3
:::

[comment]: # ({/0fa7cf4a-0fa7cf4a})

[comment]: # ({36dc94ca-36dc94ca})
##### Ejemplo 3

Uso de dos macros en el activador "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 se puede utilizar como parámetro de la función de disparo, en
esta función de ejemplo **min()**.

[comment]: # ({/36dc94ca-36dc94ca})

[comment]: # ({0dabfae5-0dabfae5})
##### Ejemplo 4

Sincronice la condición de indisponibilidad del agente con la actualización del artículo
intervalo:

- definir la macro {$INTERVAL} y usarla en el intervalo de actualización del artículo;
- use {$INTERVALO} como parámetro del activador de indisponibilidad del agente:

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

[comment]: # ({/0dabfae5-0dabfae5})

[comment]: # ({0f8052f1-0f8052f1})
##### Ejemplo 5

Centralizar la configuración de los horarios de trabajo:

- crear una macro global {$WORKING\_HOURS} igual a `1-5,09:00-18:00`;
- utilícelo en el campo *Tiempo de trabajo* en *Administración* → *General* →
    *GUI*;
- utilícelo en el campo *Cuando esté activo* en *Administración* → *Usuario* →
    *Medios de comunicación*;
- utilícelo para configurar un sondeo de elementos más frecuente durante el horario laboral:

![](../../../../assets/en/manual/config/macros/usermacro_example5.png)

- usarlo en la condición de acción *Período de tiempo*;
- ajustar el tiempo de trabajo en *Administración* → *General* → *Macros*,
    si es necesario.

[comment]: # ({/0f8052f1-0f8052f1})

[comment]: # ({3c2ac944-3c2ac944})
##### Ejemplo 6

Use la macro de prototipo de host para configurar elementos para hosts descubiertos:

- en un prototipo de host, defina la macro de usuario {$SNMPVALUE} con
    {\#SNMPVALUE} [nivel bajo
    descubrimiento](/manual/config/macros/lld_macros) macro como un valor:

![](../../../../assets/en/manual/config/macros/usermacro_example6.png)

- asignar la plantilla *Generic SNMPv2* al prototipo de host;
- use {$SNMPVALUE} en el campo *SNMP OID* de *Generic SNMPv2*
    elementos de la plantilla.

[comment]: # ({/3c2ac944-3c2ac944})

[comment]: # ({44ca625a-44ca625a})
#### Contexto de macro de usuario

Ver [macros de usuario con
contexto](/manual/config/macros/user_macros_context).

[comment]: # ({/44ca625a-44ca625a})
