Переменные среды
Обзор
Переменные окружения позволяют настраивать компоненты Zabbix без жесткого задания значений в файлах конфигурации. Это упрощает управление конфигурациями в динамических средах, таких как Docker, где переменные можно передавать во время выполнения, чтобы адаптировать систему к разным сценариям.
В простейшем случае, задав значение параметра конфигурации Zabbix server DebugLevel через переменную окружения, вы можете использовать ее для настройки сервера при запуске:
# Файл конфигурации Zabbix server:
DebugLevel=${NEW_DEBUG_LEVEL}
# Запуск Zabbix server:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server
Переменные окружения поддерживаются следующими компонентами Zabbix:
- Сервер
- Прокси
- Агент (UNIX или Windows)
- Агент 2 (UNIX или Windows), включая плагины
- Веб-сервис
- Zabbix sender (при использовании опции -c, --config)
Важные примечания
- Когда параметр конфигурации задан через переменную среды, которая не указана при запуске компонента, используется значение параметра по умолчанию.
- При использовании команд во время выполнения (например, для увеличения уровня журнала агента) необходимо указывать все ранее использовавшиеся переменные среды. Это связано с тем, что компоненты Zabbix используют свой файл конфигурации для выполнения команд во время выполнения; если переменные среды опущены, будут использованы значения параметров конфигурации по умолчанию. См. Примеры.
- Команда во время выполнения
userparameter_reloadruntime command не поддерживает повторную загрузку переменных среды. Во время перезагрузки переменные игнорируются, и перезагружаются только параметры с обычными значениями. - Текущие переменные среды процесса, которые использовались в файлах конфигурации, очищаются после запуска компонента Zabbix. Это гарантирует, что дочерние процессы (например, удаленные скрипты, выполняемые Zabbix) не смогут получить доступ к этим переменным. Однако обратите внимание, что начальные переменные процесса по-прежнему можно получить (например, через файл
/proc/<PID>/environ).
Синтаксис
Переменные среды должны использовать следующий синтаксис: ${буквенно-цифровые_символы/подчеркивания}.
Имя переменной может содержать только буквы (a-z, A-Z), символы подчеркивания (_), и цифры (0-9), и не должно начинаться с цифры.
Переменные, которые не соответствуют требуемому синтаксису или объединены с обычным значением, будут рассматриваться как обычные значения, что может привести к ошибкам.
Правильный синтаксис переменной:
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
Неправильный синтаксис переменной:
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
В Windows имена переменных среды не чувствительны к регистру.
Примеры
Следующие примеры показывают, как настроить и использовать переменные среды с компонентами Zabbix.
Пример 1: Настройка и тестирование агента Zabbix
1. Задайте переменные среды в файле конфигурации агента:
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
2. Проверьте файл конфигурации:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
3. Запустите агент с переменными среды:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
При использовании команд времени выполнения (например, для увеличения уровня журнала агента) необходимо указывать все ранее использовавшиеся переменные среды:
ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase
Это связано с тем, что агент использует свой файл конфигурации для выполнения команд времени выполнения; если переменные среды не указаны, будут использованы значения параметров конфигурации по умолчанию.
В качестве альтернативы, после задания переменных среды в файле конфигурации агента, вы можете сделать их доступными для процессов (например, с помощью команды export).
Это снижает риск неожиданного поведения из-за отсутствующих или неправильно заданных переменных.
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
Пример 2: Настройка агента Zabbix для контейнера
Если вы создаете и настраиваете собственный пользовательский образ для компонентов Zabbix (например, агента Zabbix), вы можете задать параметры конфигурации с помощью переменных среды, а затем запустить контейнер с этими переменными.
1. При подготовке образа задайте переменные среды в файле конфигурации агента:
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
2. После сборки образа контейнера запустите контейнер агента (например, Docker) с переменными среды:
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. При использовании команд времени выполнения (например, для увеличения уровня журнала агента) откройте оболочку контейнера и выполните команду времени выполнения:
docker exec -it <containerid> sh
/usr/sbin/zabbix_agentd -R log_level_increase
Команда времени выполнения userparameter_reload не поддерживает повторную загрузку переменных среды.
Во время повторной загрузки переменные игнорируются, и перезагружаются только параметры с обычными значениями.