[comment]: # translation:outdated

[comment]: # ({39c4b215-26ad891b})
# 10 Променљиве окружења

[comment]: # ({/39c4b215-26ad891b})

[comment]: # ({5b980b7e-72128caf})
#### Преглед

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

У најједноставнијем случају, постављањем вредности параметра конфигурације Zabbix сервера [DebugLevel](/manual/appendix/config/zabbix_server#debuglevel) на променљиву окружења, можете је затим користити за конфигурисање сервера при покретању:

```bash
# Конфигурациона датотека Zabbix сервера:
DebugLevel=${NEW_DEBUG_LEVEL}

# Покретање Zabbix сервера:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server
```

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

-   [Сервер](/manual/appendix/config/zabbix_server)
-   [Прокси](/manual/appendix/config/zabbix_proxy)
-   Agent ([UNIX](/manual/appendix/config/zabbix_agentd) или [Windows](/manual/appendix/config/zabbix_agentd_win))
-   Агент 2 ([UNIX](/manual/appendix/config/zabbix_agent2) или [Windows](/manual/appendix/config/zabbix_agent2_win)), укључујући [додатке](/manual/appendix/config/zabbix_agent2_plugins)
-   [Веб сервис](/manual/appendix/config/zabbix_web_service)
-   Zabbix сендер (када се користи опција [-c, --config](/manpages/zabbix_sender#options))

[comment]: # ({/5b980b7e-72128caf})

[comment]: # ({8d252f3a-7598ffff})
#### Важне напомене

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

[comment]: # ({/8d252f3a-7598ffff})

[comment]: # ({c33cd6ee-5d8ec091})
#### Синтакса

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

Назив променљиве може да садржи само слова (a-z, A-Z), подвлаке (\_) и цифре (0-9) и не сме да почиње цифром.

Променљиве које не одговарају потребној синтакси или су комбиноване са регуларном вредношћу биће третиране као регуларне вредности, што може довести до грешака.

Исправна синтакса променљиве:

```ini
DebugLevel=${NEW_DEBUG_LEVEL}
Hostname=${ZBX_HOSTNAME}
LogFile=${LogFile_001}
```

Нетачна синтакса променљиве:

```ini
DebugLevel=${5_DebugLevel}
Hostname=${ZBX.HOSTNAME 1}
LogFile=/${HOME}/zabbix/zabbix_server.log
```

::: noteclassic
У оперативном систему Windows, имена променљивих окружења нису осетљива на велика и мала слова.
:::

[comment]: # ({/c33cd6ee-5d8ec091})

[comment]: # ({b319b360-c638a080})
#### Примери

Следећи примери показују како конфигурисати и користити променљиве окружења са Zabbix компонентама.

[comment]: # ({/b319b360-c638a080})

[comment]: # ({78b82896-0382a339})
##### Пример 1: Конфигурисање и тестирање Zabbix агента

1\. Подесите променљиве окружења у конфигурационој датотеци агента:

```ini
Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}
```

2\. Тестирајте конфигурациону датотеку:

```bash
ZBX_HOSTNAME="Нови Zabbix агент" ServerActive=127.0.0.1 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf --test-config
```

3\. Покрените агента са променљивим окружења:

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

Када користите [runtime commands](/manual/concepts/agent#runtime-control) (нпр., за повећање нивоа логовања агента), морају бити наведене све претходно коришћене променљиве окружења:

```bash
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`).
Ово смањује ризик од неочекиваног понашања због недостајућих или неправилно подешених променљивих.

```bash
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
```

[comment]: # ({/78b82896-0382a339})

[comment]: # ({6e772927-6852ff3f})
##### Пример 2: Конфигурисање Zabbix агента за контејнер

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

1\. Приликом припреме слике, подесите променљиве окружења у конфигурационој датотеци агента:

```ini
Hostname=${ZBX_HOSTNAME}
BufferSize=${BUFSZ}
ListenPort=${LISTENPORT}
UserParameter=${_UsrPar01}
UserParameter=${_UsrPar02}
```

2\. Након изградње слике контејнера, покрените контејнер агента (нпр. Docker) са променљивим окружења:

```bash
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 команде](/manual/concepts/agent#runtime-control) (нпр., да бисте повећали ниво логовања агента), приступите контејнерској љусци и извршите runtime команду:

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

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

[comment]: # ({/6e772927-6852ff3f})
