Zmienne środowiskowe

Omówienie

Zmienne środowiskowe umożliwiają konfigurację komponentów Zabbix bez wpisywania na sztywno wartości w plikach konfiguracyjnych. Ułatwia to zarządzanie konfiguracjami w dynamicznych środowiskach, takich jak Docker, gdzie zmienne mogą być przekazywane w czasie uruchomienia, aby dostosować je do różnych konfiguracji.

W najprostszym przypadku, ustawiając wartość parametru konfiguracyjnego DebugLevel serwera Zabbix na zmienną środowiskową, można następnie użyć jej do skonfigurowania serwera podczas uruchamiania:

# Plik konfiguracyjny serwera Zabbix:
DebugLevel=${NEW_DEBUG_LEVEL}

# Uruchamianie serwera Zabbix:
NEW_DEBUG_LEVEL=5 /usr/sbin/zabbix_server

Zmienne środowiskowe są obsługiwane przez następujące komponenty Zabbix:

Ważne uwagi

  • Gdy parametr konfiguracji jest ustawiony na zmienną środowiskową, która nie została określona podczas uruchamiania komponentu, używana jest domyślna wartość parametru.
  • Podczas korzystania z poleceń czasu działania (np. w celu zwiększenia poziomu logowania agent), należy podać wszystkie wcześniej używane zmienne środowiskowe. Wynika to z faktu, że komponenty Zabbix używają pliku konfiguracyjnego do wykonywania poleceń czasu działania; jeśli zmienne środowiskowe zostaną pominięte, zostaną użyte domyślne wartości parametrów konfiguracji. Zobacz Przykłady.
  • Polecenie czasu działania userparameter_reload polecenie czasu działania nie obsługuje ponownego wczytywania zmiennych środowiskowych. Podczas ponownego wczytywania zmienne są ignorowane, a wczytywane są tylko parametry o zwykłych wartościach.
  • Bieżące zmienne środowiskowe procesu, które były używane w plikach konfiguracyjnych, są czyszczone po uruchomieniu komponentu Zabbix. Zapewnia to, że procesy potomne (np. zdalne skrypty wykonywane przez Zabbix) nie mogą uzyskać dostępu do tych zmiennych. Należy jednak pamiętać, że początkowe zmienne procesu nadal można odczytać (np. za pomocą pliku /proc/<PID>/environ).

Składnia

Zmienne środowiskowe muszą używać następującej składni: ${alfanumeryczne/podkreślenia}.

Nazwa zmiennej może zawierać tylko litery (a-z, A-Z), podkreślenia (_), oraz cyfry (0-9) i nie może zaczynać się od cyfry.

Zmienne, które nie odpowiadają wymaganej składni lub są połączone ze zwykłą wartością, będą traktowane jako zwykłe wartości, co może powodować błędy.

Poprawna składnia zmiennej:

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

Niepoprawna składnia zmiennej:

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

W systemie Windows nazwy zmiennych środowiskowych nie rozróżniają wielkości liter.

Przykłady

Poniższe przykłady pokazują, jak skonfigurować i używać zmiennych środowiskowych z komponentami Zabbix.

Przykład 1: Konfigurowanie i testowanie agent Zabbix

1. Ustaw zmienne środowiskowe w pliku konfiguracyjnym agent:

Hostname=${ZBX_HOSTNAME}
ServerActive=${ServerActive}

2. Przetestuj plik konfiguracyjny:

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

3. Uruchom agent z zmiennymi środowiskowymi:

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

Podczas korzystania z poleceń w czasie działania (np. w celu zwiększenia poziomu logowania agent), należy podać wszystkie wcześniej użyte zmienne środowiskowe:

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

Dzieje się tak, ponieważ agent używa swojego pliku konfiguracyjnego do wykonywania poleceń w czasie działania; jeśli zmienne środowiskowe zostaną pominięte, zostaną użyte domyślne wartości parametrów konfiguracyjnych.

Alternatywnie, po ustawieniu zmiennych środowiskowych w pliku konfiguracyjnym agent, możesz udostępnić je procesom (np. za pomocą polecenia export). Zmniejsza to ryzyko nieoczekiwanego zachowania spowodowanego brakiem zmiennych lub ich nieprawidłowym ustawieniem.

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
Przykład 2: Konfigurowanie agenta Zabbix dla kontenera

Jeśli tworzysz i konfigurujesz własny niestandardowy obraz dla komponentów Zabbix (np. agenta Zabbix), możesz zdefiniować parametry konfiguracji za pomocą zmiennych środowiskowych, a następnie uruchomić kontener z tymi zmiennymi.

1. Podczas przygotowywania obrazu ustaw zmienne środowiskowe w pliku konfiguracji agenta:

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

2. Po zbudowaniu obrazu kontenera uruchom kontener agenta (np. Docker) ze zmiennymi środowiskowymi:

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. Podczas korzystania z poleceń w czasie działania (np. w celu zwiększenia poziomu logowania agenta) uzyskaj dostęp do powłoki kontenera i wykonaj polecenie w czasie działania:

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

Polecenie w czasie działania userparameter_reload nie obsługuje ponownego wczytywania zmiennych środowiskowych. Podczas ponownego wczytywania zmienne są ignorowane, a ponownie wczytywane są tylko parametry ze zwykłymi wartościami.