13 Inne problemy

Logowanie i systemd

Zalecamy utworzenie użytkownika zabbix jako użytkownika systemowego, czyli bez możliwości logowania. Niektórzy użytkownicy ignorują to zalecenie i używają tego samego konta do logowania się (np. przez SSH) na host, na którym działa Zabbix. Może to spowodować awarię demona Zabbix podczas wylogowywania. W takim przypadku w logu serwera Zabbix zobaczysz coś podobnego do poniższego:

zabbix_server [27730]: [file:'selfmon.c',line:375] lock failed: [22] Invalid argument
zabbix_server [27716]: [file:'dbconfig.c',line:5266] lock failed: [22] Invalid argument
zabbix_server [27706]: [file:'log.c',line:238] lock failed: [22] Invalid argument

a w logu agenta Zabbix:

zabbix_agentd [27796]: [file:'log.c',line:238] lock failed: [22] Invalid argument

Dzieje się tak z powodu domyślnego ustawienia systemd RemoveIPC=yes skonfigurowanego w /etc/systemd/logind.conf. Po wylogowaniu się z systemu semafory utworzone wcześniej przez Zabbix są usuwane, co powoduje awarię.

Cytat z dokumentacji systemd:

RemoveIPC=

Controls whether System V and POSIX IPC objects belonging to the user shall be removed when the
user fully logs out. Takes a boolean argument. If enabled, the user may not consume IPC resources
after the last of the user's sessions terminated. This covers System V semaphores, shared memory
and message queues, as well as POSIX shared memory and message queues. Note that IPC objects of the
root user and other system users are excluded from the effect of this setting. Defaults to "yes".

Istnieją 2 rozwiązania tego problemu:

  1. (zalecane) Przestań używać konta zabbix do czegokolwiek innego niż procesy Zabbix, utwórz osobne konto do innych zadań.
  2. (niezalecane) Ustaw RemoveIPC=no w /etc/systemd/logind.conf i uruchom ponownie system. Pamiętaj, że RemoveIPC jest parametrem obowiązującym w całym systemie, więc jego zmiana wpłynie na cały system.

Używanie frontend Zabbix za proxy

Jeśli frontend Zabbix działa za serwerem proxy, ścieżka cookie w pliku konfiguracyjnym proxy musi zostać przepisana tak, aby odpowiadała ścieżce reverse proxy. Zobacz przykłady poniżej. Jeśli ścieżka cookie nie zostanie przepisana, użytkownicy mogą napotkać problemy z autoryzacją podczas próby logowania do frontend Zabbix.

Przykładowa konfiguracja dla nginx
# ..
location / {
# ..
proxy_cookie_path /zabbix /;
proxy_pass http://192.168.0.94/zabbix/;
# ..
Przykładowa konfiguracja dla Apache
# ..
ProxyPass "/" http://host/zabbix/
ProxyPassReverse "/" http://host/zabbix/
ProxyPassReverseCookiePath /zabbix /
ProxyPassReverseCookieDomain host zabbix.example.com
# ..