Variables de entorno
Resumen
Las variables de entorno permiten configurar los componentes de Zabbix sin codificar valores directamente en los archivos de configuración. Esto facilita la gestión de configuraciones en entornos dinámicos, como Docker, donde las variables se pueden pasar en tiempo de ejecución para adaptarse a diferentes configuraciones.
En el caso más simple, al establecer el valor del parámetro de configuración DebugLevel del server de Zabbix en una variable de entorno, puede usarla para configurar el server al iniciarse:
# Archivo de configuración del server de Zabbix:
DebugLevel=${NEW_DEBUG_LEVEL}
# Inicio del server de Zabbix:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server
Las variables de entorno son compatibles con los siguientes componentes de Zabbix:
- Server
- Proxy
- Agent (UNIX o Windows)
- Agent 2 (UNIX o Windows), incluidos los plugins
- Servicio web
- Zabbix sender (cuando se usa la opción -c, --config)
Notas importantes
- Cuando un parámetro de configuración se establece mediante una variable de entorno, y esta no se especifica al ejecutar el componente, se utiliza el valor predeterminado del parámetro.
- Al usar comandos en tiempo de ejecución (por ejemplo, para aumentar el nivel de registro del agent), deben especificarse todas las variables de entorno utilizadas previamente. Esto se debe a que los componentes de Zabbix usan su archivo de configuración para ejecutar comandos en tiempo de ejecución; si se omiten las variables de entorno, se usarán los valores predeterminados de los parámetros de configuración. Consulte Ejemplos.
- El comando en tiempo de ejecución
userparameter_reloadno admite la recarga de variables de entorno. Durante la recarga, las variables se ignoran y solo se recargan los parámetros con valores normales. - Las variables de entorno actuales del proceso, que se usaron en los archivos de configuración, se eliminan después de que se inicia el componente de Zabbix. Esto garantiza que los procesos secundarios (por ejemplo, scripts remotos ejecutados por Zabbix) no puedan acceder a estas variables. Sin embargo, tenga en cuenta que las variables iniciales del proceso aún pueden recuperarse (por ejemplo, mediante el archivo
/proc/<PID>/environ).
Sintaxis
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 normal se tratarán como valores normales, lo que puede producir errores.
Sintaxis correcta de variables:
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
Sintaxis incorrecta de variables:
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
En Windows, los nombres de las variables de entorno no distinguen entre mayúsculas y minúsculas.
Ejemplos
Los siguientes ejemplos muestran cómo configurar y usar variables de entorno con los componentes de Zabbix.
Ejemplo 1: Configuración y prueba de Zabbix agent
1. Establezca variables de entorno en el archivo de configuración de agent:
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
2. Pruebe el archivo de configuración:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
3. Inicie agent con variables de entorno:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
Al usar comandos en tiempo de ejecución (por ejemplo, para aumentar el nivel de registro de agent), deben especificarse todas las variables de entorno utilizadas previamente:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
Esto se debe a que agent usa su archivo de configuración para ejecutar comandos en tiempo de ejecución; si se omiten las variables de entorno, se usarán los valores predeterminados de los parámetros de configuración.
Como alternativa, después de establecer variables de entorno en el archivo de configuración de agent, puede hacer que estén disponibles para los procesos (por ejemplo, usando el comando export).
Esto reduce el riesgo de un comportamiento inesperado debido a variables faltantes o configuradas incorrectamente.
export ZBX_HOSTNAME="New Zabbix agent"
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
Ejemplo 2: Configuración de Zabbix agent para un contenedor
Si está creando y configurando su propia imagen personalizada para componentes de Zabbix (por ejemplo, Zabbix agent), puede definir parámetros de configuración mediante 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 de agent:
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
2. Después de construir la imagen del contenedor, inicie el contenedor de agent (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 usar comandos en tiempo de ejecución (por ejemplo, para aumentar el nivel de registro de agent), acceda al shell del contenedor y ejecute el comando en tiempo de ejecución:
docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase
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 normales.