This is a translation of the original English documentation page. Help us make it better.

10 Променљиве окружења

Преглед

Променљиве окружења омогућавају конфигурисање Zabbix компоненти без хардкодирања вредности у конфигурационим датотекама. Ово олакшава управљање конфигурацијама у динамичким окружењима, као што је Docker, где се променљиве могу прослеђивати током извршавања програма како би се прилагодиле различитим подешавањима.

У најједноставнијем случају, постављањем вредности параметра конфигурације Zabbix сервера DebugLevel на променљиву окружења, можете је затим користити за конфигурисање сервера при покретању:

# Конфигурациона датотека Zabbix сервера:
       DebugLevel=${NEW_DEBUG_LEVEL}
       
       # Покретање Zabbix сервера:
       NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server

Променљиве окружења подржавају следеће Zabbix компоненте:

Важне напомене

  • Када је конфигурациони параметар подешен на променљиву окружења, која није наведена приликом покретања компоненте, користи се подразумевана вредност параметра.
  • Приликом коришћења runtime команди (нпр., за повећање нивоа евиденције агента), морају се навести све претходно коришћене променљиве окружења. То је зато што Zabbix компоненте користе своју конфигурациону датотеку за извршавање runtime команди; ако се променљиве окружења изоставе, користиће се подразумеване вредности конфигурационих параметара. Погледајте Examples.
  • userparameter_reload runtime команда не подржава поновно учитавање променљивих окружења. Током поновног учитавања, променљиве се игноришу и поново се учитавају само параметри са регуларним вредностима.
  • Тренутне променљиве окружења процеса, које су коришћене у конфигурационим датотекама, бришу се након покретања Zabbix компоненте. Ово осигурава да подређени процеси (нпр. удаљене скрипте које извршава Zabbix) не могу приступити овим променљивим. Међутим, имајте на уму да се почетне променљиве процеса и даље могу преузети (нпр., путем датотеке /proc/<PID>/environ).

Синтакса

Променљиве окружења морају користити следећу синтаксу: ${alphanumerics/underscores}.

Назив променљиве може да садржи само слова (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="Нови Zabbix агент" 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

Када користите runtime commands (нпр., за повећање нивоа логовања агента), морају бити наведене све претходно коришћене променљиве окружења:

ZBX_HOSTNAME="New Zabbix agent" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf -R log_level_increase

То је зато што агент користи своју конфигурациону датотеку за извршавање runtime команди; ако се променљиве окружења изоставе, користиће се подразумеване вредности конфигурационих параметара.

Алтернативно, након подешавања променљивих окружења у конфигурационој датотеци агента, можете их учинити доступним процесима (нпр. коришћењем команде export). Ово смањује ризик од неочекиваног понашања због недостајућих или неправилно подешених променљивих.

export ZBX_HOSTNAME="Нови 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
Пример 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. Када користите runtime команде (нпр., да бисте повећали ниво логовања агента), приступите контејнерској љусци и извршите runtime команду:

docker exec -it <containerid> sh
       /usr/sbin/zabbix_agentd -R log_level_increase

Runtime команда userparameter_reload не подржава поновно учитавање променљивих окружења. Током поновног учитавања, променљиве се игноришу и поново се учитавају само параметри са регуларним вредностима.