1 Server
Przegląd
Serwer Zabbix jest centralnym procesem oprogramowania Zabbix.
Serwer wykonuje odpytywanie i przechwytywanie danych, oblicza wyzwalacze oraz wysyła powiadomienia do użytkowników. Jest to centralny komponent, do którego agenty i proxy Zabbix raportują dane o dostępności i integralności systemów. Serwer może również samodzielnie zdalnie sprawdzać usługi sieciowe (takie jak serwery WWW i serwery pocztowe) przy użyciu prostych testów usług.
Serwer jest centralnym repozytorium, w którym przechowywane są wszystkie dane konfiguracyjne, statystyczne i operacyjne, oraz elementem Zabbix, który aktywnie alarmuje administratorów, gdy w którymkolwiek z monitorowanych systemów pojawią się problemy.
Działanie podstawowego serwera Zabbix jest podzielone na trzy odrębne komponenty; są to: serwer Zabbix, frontend WWW i baza danych.
Wszystkie informacje konfiguracyjne Zabbix są przechowywane w bazie danych, z którą współpracują zarówno serwer, jak i frontend WWW. Na przykład, gdy tworzysz nową pozycję przy użyciu frontend WWW (lub API), jest ona dodawana do tabeli items w bazie danych. Następnie, mniej więcej raz na minutę, serwer Zabbix odpytuje tabelę items o listę aktywnych pozycji, która jest następnie przechowywana w pamięci podręcznej serwera Zabbix. Dlatego wprowadzenie zmian w frontend Zabbix może spowodować, że ich pojawienie się w sekcji najnowszych danych zajmie do dwóch minut.
Uruchamianie serwera
Jeśli zainstalowano z pakietu
Serwer Zabbix działa jako proces demona. Serwer można uruchomić, wykonując:
systemctl start zabbix-server
To zadziała w większości systemów GNU/Linux. W innych systemach może być konieczne uruchomienie:
/etc/init.d/zabbix-server start
Podobnie, aby zatrzymać/uruchomić ponownie/sprawdzić stan, użyj następujących poleceń:
systemctl stop zabbix-server
systemctl restart zabbix-server
systemctl status zabbix-server
Uruchamianie ręczne
Jeśli powyższe nie działa, musisz uruchomić go ręcznie. Znajdź ścieżkę do pliku binarnego zabbix_server i wykonaj:
zabbix_server
Możesz użyć następujących parametrów wiersza poleceń z serwerem Zabbix:
-c --config <file> ścieżka do pliku konfiguracyjnego (domyślnie /usr/local/etc/zabbix_server.conf)
-f --foreground uruchom serwer Zabbix na pierwszym planie
-R --runtime-control <option> wykonaj funkcje administracyjne
-T --test-config sprawdź poprawność pliku konfiguracyjnego i zakończ
-h --help wyświetl tę pomoc
-V --version wyświetl numer wersji
Przykłady uruchamiania serwera Zabbix z parametrami wiersza poleceń:
zabbix_server -c /usr/local/etc/zabbix_server.conf
zabbix_server --help
zabbix_server -V
Kontrola w czasie działania
Opcje kontroli w czasie działania:
| Option | Description | Target |
|---|---|---|
| config_cache_reload | Przeładuj pamięć podręczną konfiguracji. Ignorowane, jeśli pamięć podręczna jest obecnie ładowana. | |
| history_cache_clear=target | Wyczyść pamięć podręczną historii dla pozycji określonej przez jej ID. Wpływa na wszystkie wartości pozycji, z wyjątkiem pierwszej i ostatniej wartości. |
target - ID pozycji |
| diaginfo[=<section>] | Zbierz informacje diagnostyczne w pliku logu serwera. | historycache - statystyki pamięci podręcznej historii valuecache - statystyki pamięci podręcznej wartości preprocessing - statystyki menedżera przetwarzania wstępnego alerting - statystyki menedżera alertów lld - statystyki menedżera LLD locks - lista mutexów (pusta w systemach BSD) connector - statystyki dla konektorów z największą kolejką |
| ha_status | Zapisz stan klastra wysokiej dostępności (HA) w logu. | |
| ha_remove_node=target | Usuń węzeł wysokiej dostępności (HA) określony przez jego nazwę lub ID. Należy pamiętać, że aktywne/rezerwowe węzły nie mogą zostać usunięte. |
target - nazwa lub ID węzła (można uzyskać, uruchamiając ha_status) |
| ha_set_failover_delay=delay | Ustaw opóźnienie przełączenia awaryjnego wysokiej dostępności (HA). Obsługiwane są sufiksy czasu, np. 10s, 1m. |
|
| proxy_config_cache_reload[=<target>] | Przeładuj pamięć podręczną konfiguracji proxy. | target - lista nazw proxy rozdzielona przecinkami Jeśli target nie zostanie określony, konfiguracja zostanie przeładowana dla wszystkich proxy |
| secrets_reload | Przeładuj sekrety z Vault. | |
| service_cache_reload | Przeładuj pamięć podręczną menedżera usług. | |
| snmp_cache_reload | Przeładuj pamięć podręczną SNMP — wyczyść właściwości silnika SNMP (czas silnika, liczba uruchomień silnika, ID silnika, poświadczenia) dla wszystkich hostów. Użyj, aby wymusić globalne wyczyszczenie pamięci podręcznej podczas rozwiązywania problemów z SNMP. | |
| housekeeper_execute | Uruchom procedurę housekeeping. Ignorowane, jeśli procedura housekeeping jest obecnie w toku. |
|
| trigger_housekeeper_execute | Uruchom procedurę housekeeping dla wyzwalaczy procedurę housekeeping. Ignorowane, jeśli procedura housekeeping wyzwalaczy jest obecnie w toku. |
|
| log_level_increase[=<target>] | Zwiększ poziom logowania; jeśli target nie zostanie określony, dotyczy to wszystkich procesów. Nieobsługiwane w systemach BSD. |
process type - Wszystkie procesy określonego typu (np. poller) Zobacz wszystkie typy procesów serwera. process type,N - Typ procesu i numer (np. poller,3) pid - Identyfikator procesu (od 1 do 65535). Dla większych wartości określ target jako 'process type,N'. |
| log_level_decrease[=<target>] | Zmniejsz poziom logowania; jeśli target nie zostanie określony, dotyczy to wszystkich procesów. Nieobsługiwane w systemach BSD. |
|
| prof_enable[=<target>] | Włącz profilowanie. Jeśli target nie zostanie określony, dotyczy to wszystkich procesów. Włączone profilowanie dostarcza szczegóły wszystkich rwlocków/mutexów według nazwy funkcji. |
process type - Wszystkie procesy określonego typu (np. history syncer) Obsługiwane typy procesów jako cele profilowania: alerter, alert manager, availability manager, configuration syncer, discovery manager, escalator, history poller, history syncer, housekeeper, http poller, icmp pinger, ipmi manager, ipmi poller, java poller, lld manager, lld worker, odbc poller, poller, preprocessing manager, preprocessing worker, proxy poller, self-monitoring, service manager, snmp trapper, task manager, timer, trapper, unreachable poller, vmware collector process type,N - Typ procesu i numer (np. history syncer,1) pid - Identyfikator procesu (od 1 do 65535). Dla większych wartości określ target jako 'process type,N'. scope - rwlock, mutex, processing mogą być używane z typem procesu i numerem (np. history syncer,1,processing) lub wszystkimi procesami danego typu (np. history syncer,rwlock) |
| prof_disable[=<target>] | Wyłącz profilowanie. Jeśli target nie zostanie określony, dotyczy to wszystkich procesów. |
process type - Wszystkie procesy określonego typu (np. history syncer) Obsługiwane typy procesów jako cele profilowania: zobacz prof_enableprocess type,N - Typ procesu i numer (np. history syncer,1) pid - Identyfikator procesu (od 1 do 65535). Dla większych wartości określ target jako 'process type,N'. |
Przykład użycia kontroli w czasie działania do przeładowania pamięci podręcznej konfiguracji serwera:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R config_cache_reload
Przykłady użycia kontroli w czasie działania do przeładowania konfiguracji proxy:
# Przeładuj konfigurację wszystkich proxy:
zabbix_server -R proxy_config_cache_reload
# Przeładuj konfigurację Proxy1 i Proxy2:
zabbix_server -R proxy_config_cache_reload=Proxy1,Proxy2
Przykład użycia kontroli w czasie działania do wyczyszczenia pamięci podręcznej historii dla pozycji:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R history_cache_clear=42243
Przykłady użycia kontroli w czasie działania do zebrania informacji diagnostycznych:
# Zbierz wszystkie dostępne informacje diagnostyczne w pliku dziennika serwera:
zabbix_server -R diaginfo
# Zbierz statystyki pamięci podręcznej historii w pliku dziennika serwera:
zabbix_server -R diaginfo=historycache
Przykład użycia kontroli w czasie działania do przeładowania pamięci podręcznej SNMP:
zabbix_server -R snmp_cache_reload
Gdy interfejs SNMPv3 jest aktualizowany za pomocą interfejsu użytkownika Zabbix, Zabbix w większości przypadków automatycznie przeładuje nowe poświadczenia SNMPv3 dla tego interfejsu; używaj -R snmp_cache_reload tylko wtedy, gdy odpytywanie nadal kończy się niepowodzeniem po zmianie poświadczeń (na przykład z powodu niespójności engineBoots/engineID lub urządzeń niezgodnych z RFC), albo gdy trzeba wymusić globalne wyczyszczenie pamięci podręcznej SNMP na potrzeby rozwiązywania problemów.
Przykład użycia kontroli w czasie działania do wyzwolenia wykonania housekeepera:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R housekeeper_execute
Przykłady użycia kontroli w czasie działania do zmiany poziomu logowania:
# Zwiększ poziom logowania wszystkich procesów:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase
# Zwiększ poziom logowania drugiego procesu pollera:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=poller,2
# Zwiększ poziom logowania procesu o PID 1234:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=1234
# Zmniejsz poziom logowania wszystkich procesów http poller:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_decrease="http poller"
Przykład ustawienia opóźnienia przełączenia awaryjnego HA na minimalne 10 sekund:
zabbix_server -R ha_set_failover_delay=10s
Użytkownik procesu
Serwer Zabbix został zaprojektowany do działania jako użytkownik niebędący rootem. Będzie działał jako dowolny użytkownik niebędący rootem, pod którym został uruchomiony. Dlatego możesz uruchomić serwer jako dowolnego użytkownika niebędącego rootem bez żadnych problemów.
Jeśli spróbujesz uruchomić go jako 'root', przełączy się na zakodowanego na stałe użytkownika 'zabbix', który musi być obecny w systemie. Możesz uruchomić serwer jako 'root' tylko wtedy, gdy odpowiednio zmodyfikujesz parametr 'AllowRoot' w pliku konfiguracyjnym serwera.
Jeśli serwer Zabbix i agent są uruchomione na tej samej maszynie, zaleca się użycie innego użytkownika do uruchamiania serwera niż do uruchamiania agenta. W przeciwnym razie, jeśli oba procesy są uruchomione jako ten sam użytkownik, agent może uzyskać dostęp do pliku konfiguracyjnego serwera, a każdy użytkownik z poziomem Admin w Zabbix może stosunkowo łatwo odczytać na przykład hasło do bazy danych.
Plik konfiguracyjny
Szczegółowe informacje na temat konfiguracji zabbix_server można znaleźć w opcjach pliku konfiguracyjnego.
Skrypty startowe
Skrypty są używane do automatycznego uruchamiania/zatrzymywania procesów Zabbix podczas uruchamiania/zamykania systemu. Skrypty znajdują się w katalogu misc/init.d.
Typy procesów serwera i wątki
agent poller- asynchroniczny proces odpytywania dla pasywnych kontroli z wątkiem roboczymalert manager- menedżer kolejki alertówalert syncer- proces zapisujący alerty do bazy danychalerter- proces wysyłania powiadomieńavailability manager- proces aktualizacji dostępności hostówbrowser poller- proces odpytywania dla kontroli pozycji przeglądarkiconfiguration syncer- proces zarządzania pamięcią podręczną danych konfiguracyjnych w pamięciconfiguration syncer worker- proces rozwiązywania i synchronizacji wartości makr użytkownika w nazwach pozycjiconnector manager- proces menedżera konektorówconnector worker- proces obsługi żądań od menedżera konektorówdiscovery manager- proces menedżera wykrywania urządzeńdiscovery worker- proces obsługi zadań wykrywania od menedżera wykrywaniaescalator- proces eskalacji działańha manager- proces zarządzania wysoką dostępnościąhistory poller- proces obsługi kontroli obliczanych wymagających połączenia z bazą danychhistory syncer- proces zapisujący historię do bazy danychhousekeeper- proces usuwania nieaktualnych danych (historii i trendów pozycji, sesji użytkowników, zdarzeń itp.), a także danych pozostawionych przez usunięte obiektyhttp agent poller- asynchroniczny proces odpytywania dla kontroli HTTP z wątkiem roboczymhttp poller- proces odpytywania monitorowania WWWicmp pinger- proces odpytywania dla kontroli icmppinginternal poller- proces odpytywania dla kontroli wewnętrznychipmi manager- menedżer procesów odpytywania IPMIipmi poller- proces odpytywania dla kontroli IPMIjava poller- proces odpytywania dla kontroli Javalld manager- proces menedżera zadań wykrywania niskiego poziomulld worker- proces roboczy zadań wykrywania niskiego poziomuodbc poller- proces odpytywania dla kontroli ODBCpoller- zwykły proces odpytywania dla pasywnych kontrolipreprocessing manager- menedżer zadań przetwarzania wstępnego z wątkami roboczymi przetwarzania wstępnegopreprocessing worker- wątek przetwarzania wstępnego danychproxy poller- proces odpytywania dla pasywnych proxyproxy group manager- menedżer równoważenia obciążenia proxy i wysokiej dostępnościreport manager- menedżer zadań generowania raportów cyklicznychreport writer- proces generowania raportów cyklicznychself-monitoring- proces zbierania wewnętrznych statystyk serweraservice manager- proces zarządzania usługami poprzez odbieranie informacji o problemach, tagach problemów i odtworzeniu problemów z history syncer, task manager i alert managersnmp poller- asynchroniczny proces odpytywania dla kontroli SNMP z wątkiem roboczym (tylko pozycjewalk[OID]iget[OID])snmp trapper- trapper dla pułapek SNMPtask manager- proces zdalnego wykonywania zadań żądanych przez inne komponenty (np. zamknięcie problemu, potwierdzenie problemu, sprawdzenie wartości pozycji teraz, funkcjonalność zdalnych poleceń)timer- timer do przetwarzania okresów utrzymaniatrapper- trapper dla aktywnych kontroli, trapów, komunikacji proxytrigger housekeeper- proces usuwania problemów i zdarzeń wygenerowanych przez wyzwalacze, które zostały od tego czasu usunięteunreachable poller- proces odpytywania dla nieosiągalnych urządzeńvmware collector- kolektor danych VMware odpowiedzialny za zbieranie danych z usług VMware
Plik dziennika serwera może być używany do obserwowania tych typów procesów.
Plik dziennika serwera jest tworzony z uprawnieniami odczytu i zapisu tylko dla właściciela pliku. Dodatkowo plik jest dostępny do odczytu dla grupy właściciela. Wszystkie pozostałe uprawnienia są zabronione.
Różne typy procesów serwera Zabbix mogą być monitorowane przy użyciu wewnętrznej pozycji zabbix\[process,<type>,<mode>,<state>\] item.
Statystyki transakcji synchronizatora historii
Tytuł procesu synchronizatora historii wyświetla szczegółowe statystyki dotyczące transakcji synchronizatora historii:
205182 ? S 0:00 zabbix_server: history syncer #2 [processed 0 values, 0+0 triggers in 0.000021 (0.000000,0.000000,0.000000,0.000000,0.000000) sec, idle 1 sec]
205183 ? S 0:00 zabbix_server: history syncer #3 [processed 18 values, 7+0 triggers in 0.002612 (0.001108,0.000000,0.000000,0.001208,0.000014) sec, idle 1 sec]
205184 ? S 0:00 zabbix_server: history syncer #4 [processed 0 values, 0+0 triggers in 0.000027 (0.000000,0.000000,0.000000,0.000000,0.000000) sec, idle 1 sec]
W „A+B triggers”:
- A - wyzwalacze przetworzone z powodu wartości historii;
- B - wyzwalacze przetworzone z powodu timerów.
Czasy w „processed...in N (<timings>) sec” oznaczają:
- Czas poświęcony na zapisywanie wartości pozycji do bazy danych;
- Czas poświęcony na aktualizację danych pozycji (stan, błędy, inwentarz hosta itp.);
- Czas poświęcony na opróżnianie trendów do bazy danych;
- Czas poświęcony na obliczanie wyzwalaczy;
- Czas poświęcony na przetwarzanie zdarzeń i akcji.
Procedura housekeeping
Proces housekeeper okresowo usuwa nieaktualne dane (historię i trendy pozycja, sesje użytkowników, zdarzenia itp.), a także dane pozostawione po usuniętych obiektach.
Działa cyklicznie, a częstotliwość i limit usuwania na cykl są określane przez HousekeepingFrequency oraz MaxHousekeeperDelete.
Wszelkie dane nieusunięte w jednym cyklu są przenoszone do następnego.
Automatyczny housekeeping można włączyć i skonfigurować w Administracja > Housekeeping.
W celu usuwania danych pozostawionych po usuniętych obiektach proces housekeeper opiera się na zadaniach z tabeli housekeeper, która jest wypełniana przy każdym usunięciu obiektu.
Na przykład po usunięciu hosta Zabbix usuwa również jego pozycje, ale nie ich historii, trendów ani problemów.
Zamiast tego wyzwalacze bazy danych wypełniają tabelę housekeeper zadaniami składającymi się z następujących pól:
housekeeperid- ID zadaniaobject- typ obiektu (0- pozycja;1- wyzwalacz;2- usługa;3- wykryty host;4- wykryta usługa)objectid- ID obiektu (pomaga procesowi housekeeper znaleźć dane powiązane z obiektem)
Na przykład usunięcie hosta z dwiema pozycjami i jednym wyzwalaczem wypełnia tabelę housekeeper w następujący sposób:
+---------------+--------+----------+
| housekeeperid | object | objectid |
+---------------+--------+----------+
| 1 | 1 | 28724 |
| 2 | 0 | 59396 |
| 3 | 0 | 59397 |
+---------------+--------+----------+
Wyzwalacze bazy danych wypełniają tabelę housekeeper bez sprawdzania danych powiązanych z obiektem; sprawdzenie to wykonuje proces housekeeper.
Każde zadanie skutkuje jedną lub większą liczbą operacji housekeeper, które zależą od typu obiektu:
-
Dla pozycji (w tym reguł LLD) - usuwa dane ze wszystkich tabel historii i trendów (
history,history_str,history_log,history_uint,history_text,history_bin,history_json,trends,trends_uint), które zawierają wartości dla tych pozycji. Dodatkowo sprawdza tabelęproblemsi usuwa nieaktualne zdarzenia wewnętrzne powiązane z tymi pozycjami. -
Dla wyzwalaczy - sprawdza tabele powiązane ze zdarzeniami (
problem,event_symptom,event_recovery,events) i usuwa nieaktualne zdarzenia powiązane z tymi wyzwalaczami, a także powiadamia processervice managero usuniętych zdarzeniach.
Oddzielny proces trigger housekeeper realizuje węższe zadanie — usuwa problemy i zdarzenia, które nie mają znanego źródłowego wyzwalacza.
Częstotliwość jego uruchamiania jest kontrolowana przez ProblemHousekeepingFrequency.
Do czasu uruchomienia procedury housekeeping wyzwalaczy problemy spowodowane przez wyzwalacze, które zostały już usunięte, mogą nadal generować problemy usług i przypisywać je do usług. Jeśli Twoja konfiguracja obejmuje wiele reguł obliczania statusu usług opartych na często wykrywanych/zanikających wyzwalaczach, rozważ zwiększenie częstotliwości procedury housekeeping przez dostosowanie parametru konfiguracyjnego serwer ProblemHousekeepingFrequency.
-
Dla usług - sprawdza tabelę
problemsi usuwa nieaktualne zdarzenia usług, a także nieaktualne problemy usług, rozwiązując je tym samym w momencie działania housekeeping. -
Dla wykrywania sieci - usuwa nieaktualne zdarzenia wykrywania z tabeli
problems.
Proces housekeeper usuwa tylko te zdarzenia, które nie są powiązane z problemami. Na przykład nieaktualne zdarzenie problemu/odzyskania nie zostanie usunięte, jeśli jest powiązane z otwartym problemem. Gdy proces housekeeper usuwa nieaktualne encje, najpierw usuwa problemy, a następnie zdarzenia.
Tabele używające trybu partition (tabele partycjonowane TimescaleDB) są pomijane; przetwarzane są tylko tabele używające trybu regular.
Obsługiwane platformy
Ze względu na wymagania bezpieczeństwa oraz krytyczny charakter działania serwera, UNIX jest jedynym systemem operacyjnym, który może konsekwentnie zapewniać wymaganą wydajność, odporność na awarie i niezawodność. Zabbix działa na wiodących na rynku wersjach systemu.
Serwer Zabbix jest testowany na następujących platformach:
- Linux
- Solaris
- AIX
- HP-UX
- Mac OS X
- FreeBSD
- OpenBSD
- NetBSD
- SCO Open Server
Zabbix może działać również na innych systemach operacyjnych typu Unix.
Ustawienia regionalne
Należy pamiętać, że serwer wymaga ustawień regionalnych UTF-8, aby niektóre tekstowe pozycje mogły być poprawnie interpretowane. Większość nowoczesnych systemów typu Unix ma domyślnie ustawienia regionalne UTF-8, jednak istnieją systemy, w których może być konieczne ich jawne skonfigurowanie.