14 Inne problemy

Logowanie i systemd

Zalecamy utworzenie użytkownika zabbix jako użytkownika systemowego, to znaczy bez możliwości logowania. Niektórzy użytkownicy ignorują to zalecenie i używają tego samego konta do logowania (np. przez SSH) na host uruchamiający Zabbix. Może to spowodować awarię demona Zabbix przy wylogowaniu. W takim przypadku w logu serwera Zabbix pojawi się 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 z systemu semafory utworzone wcześniej przez Zabbix są usuwane, co powoduje awarię.

Cytat z dokumentacji systemd:

RemoveIPC=

Określa, czy obiekty IPC System V i POSIX należące do użytkownika mają być usuwane, gdy
użytkownik całkowicie się wyloguje. Przyjmuje argument logiczny. Jeśli jest włączone,
użytkownik nie może korzystać z zasobów IPC po zakończeniu ostatniej sesji użytkownika.
Obejmuje to semafory System V, pamięć współdzieloną i kolejki komunikatów,
a także pamięć współdzieloną POSIX i kolejki komunikatów. Należy pamiętać, że obiekty IPC
użytkownika root i innych użytkowników systemowych są wyłączone spod działania tego ustawienia.
Wartość domyślna to "yes".

Istnieją 2 rozwiązania tego problemu:

  1. (zalecane) Przestań używać konta zabbix do czegokolwiek innego niż procesy Zabbix; utwórz dedykowane konto do innych zastosowań.
  2. (niezalecane) Ustaw RemoveIPC=no w /etc/systemd/logind.conf i uruchom ponownie system. Pamiętaj, że RemoveIPC jest parametrem obejmującym cały system, 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
# ..