Las variables de entorno permiten configurar los componentes de Zabbix sin codificar valores en los archivos de configuración. Esto facilita la gestión de configuraciones en entornos dinámicos, como Docker, donde las variables pueden pasarse en tiempo de ejecución para adaptarse a diferentes configuraciones.
En el caso más sencillo, al establecer el valor del parámetro de configuración DebugLevel del servidor Zabbix en una variable de entorno, puede utilizarla para configurar el servidor al iniciarlo:
# Archivo de configuración del servidor Zabbix:
DebugLevel=${NEW_DEBUG_LEVEL}
# Iniciando el servidor Zabbix:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server
Las variables de entorno son compatibles con los siguientes componentes de Zabbix:
userparameter_reload
runtime command no admite la recarga de variables de entorno. Durante la recarga, las variables se ignoran y solo se recargan los parámetros con valores regulares./proc/<PID>/environ
).Las variables de entorno deben usar la siguiente sintaxis: ${alfanuméricos/guiones_bajos}.
El nombre de la variable solo puede incluir letras (a-z, A-Z), guiones bajos (_) y dígitos (0-9), y no debe comenzar con un dígito.
Las variables que no coincidan con la sintaxis requerida o que se combinen con un valor regular se tratarán como valores regulares, lo que puede producir errores.
Sintaxis correcta de variables:
Sintaxis incorrecta de variables:
En Windows, los nombres de las variables de entorno no distinguen entre mayúsculas y minúsculas.
Los siguientes ejemplos muestran cómo configurar y utilizar variables de entorno con los componentes de Zabbix.
1. Establezca las variables de entorno en el archivo de configuración del agente:
2. Pruebe el archivo de configuración:
ZBX_HOSTNAME="Nuevo agente Zabbix" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
3. Inicie el agente con variables de entorno:
ZBX_HOSTNAME="Nuevo agente Zabbix" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
Al utilizar comandos en tiempo de ejecución (por ejemplo, para aumentar el nivel de registro del agente), se deben especificar todas las variables de entorno utilizadas previamente:
ZBX_HOSTNAME="Nuevo agente Zabbix" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
Esto se debe a que el agente utiliza su archivo de configuración para ejecutar comandos en tiempo de ejecución; si se omiten las variables de entorno, se utilizarán los valores predeterminados de los parámetros de configuración.
Como alternativa, después de establecer las variables de entorno en el archivo de configuración del agente, puede hacerlas disponibles para los procesos (por ejemplo, utilizando el comando export
). Esto reduce el riesgo de un comportamiento inesperado debido a variables faltantes o configuradas incorrectamente.
export ZBX_HOSTNAME="Nuevo agente Zabbix"
export ServerActive=127.0.0.1
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
/usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
Si está creando y configurando su propia imagen personalizada para componentes de Zabbix (por ejemplo, el agente Zabbix), puede definir parámetros de configuración utilizando variables de entorno y luego iniciar el contenedor con esas variables.
1. Al preparar la imagen, establezca variables de entorno en el archivo de configuración del agente:
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
2. Después de construir la imagen del contenedor, inicie el contenedor del agente (por ejemplo, Docker) con variables de entorno:
docker run --name my-zabbix-agent -e ZBX_HOSTNAME="new-hostname" -e BUFSZ=1000 -e LISTENPORT=20050 -e _UsrPar01="key1,ls" -e _UsrPar02="key2,pwd" --init -d my-zabbix-agent:latest
3. Al utilizar comandos en tiempo de ejecución (por ejemplo, para aumentar el nivel de registro del agente), acceda a la shell del contenedor y ejecute el comando en tiempo de ejecución:
El comando en tiempo de ejecución userparameter_reload
no admite la recarga de variables de entorno. Durante la recarga, las variables se ignoran y solo se recargan los parámetros con valores regulares.