1 Server
Übersicht
Der Zabbix Server ist der zentrale Prozess der Zabbix-Software.
Der Server führt die Abfrage und das Empfangen von Daten durch, berechnet Auslöser und sendet Benachrichtigungen an Benutzer. Er ist die zentrale Komponente, an die Zabbix Agents und Proxys Daten über die Verfügbarkeit und Integrität von Systemen melden. Der Server kann selbst Netzwerkdienste (wie Webserver und Mailserver) mithilfe einfacher Service-Prüfungen aus der Ferne überprüfen.
Der Server ist das zentrale Repository, in dem alle Konfigurations-, Statistik- und Betriebsdaten gespeichert werden, und er ist die Instanz in Zabbix, die Administratoren aktiv alarmiert, wenn in einem der überwachten Systeme Probleme auftreten.
Die Funktionsweise eines grundlegenden Zabbix Servers ist in drei unterschiedliche Komponenten unterteilt: Zabbix Server, Web-Frontend und Datenbankspeicher.
Alle Konfigurationsinformationen für Zabbix werden in der Datenbank gespeichert, mit der sowohl der Server als auch das Web-Frontend interagieren. Wenn Sie beispielsweise mit dem Web-Frontend (oder der API) einen neuen Datenpunkt erstellen, wird er der Tabelle items in der Datenbank hinzugefügt. Anschließend fragt der Zabbix Server etwa einmal pro Minute die Tabelle items nach einer Liste der aktiven Datenpunkte ab; diese wird dann in einem Cache innerhalb des Zabbix Servers gespeichert. Deshalb kann es bis zu zwei Minuten dauern, bis Änderungen, die im Zabbix Frontend vorgenommen wurden, im Abschnitt „Neueste Daten“ sichtbar werden.
Server ausführen
Wenn als Paket installiert
Der Zabbix Server läuft als Daemon-Prozess. Der Server kann mit folgendem Befehl gestartet werden:
systemctl start zabbix-server
Dies funktioniert auf den meisten GNU/Linux-Systemen. Auf anderen Systemen müssen Sie möglicherweise Folgendes ausführen:
/etc/init.d/zabbix-server start
Entsprechend verwenden Sie zum Stoppen/Neustarten/Anzeigen des Status die folgenden Befehle:
systemctl stop zabbix-server
systemctl restart zabbix-server
systemctl status zabbix-server
Manuell starten
Falls das oben Genannte nicht funktioniert, müssen Sie ihn manuell starten. Suchen Sie den Pfad zur zabbix_server-Binärdatei und führen Sie Folgendes aus:
zabbix_server
Sie können die folgenden Befehlszeilenparameter mit dem Zabbix Server verwenden:
-c --config <file> Pfad zur Konfigurationsdatei (Standard ist /usr/local/etc/zabbix_server.conf)
-f --foreground Zabbix Server im Vordergrund ausführen
-R --runtime-control <option> administrative Funktionen ausführen
-T --test-config Konfigurationsdatei prüfen und beenden
-h --help diese Hilfe anzeigen
-V --version Versionsnummer anzeigen
Beispiele für das Ausführen von Zabbix Server mit Befehlszeilenparametern:
zabbix_server -c /usr/local/etc/zabbix_server.conf
zabbix_server --help
zabbix_server -V
Laufzeitsteuerung
Optionen zur Laufzeitsteuerung:
| Option | Beschreibung | Ziel |
|---|---|---|
| config_cache_reload | Konfigurations-Cache neu laden. Wird ignoriert, wenn der Cache derzeit geladen wird. | |
| history_cache_clear=target | History-Cache für den durch seine ID angegebenen Datenpunkt leeren. Wirkt sich auf alle Werte des Datenpunkts aus, außer auf den ersten und letzten Wert. |
target - ID des Datenpunkts |
| diaginfo[=<section>] | Diagnoseinformationen in der Server-Logdatei erfassen. | historycache - Statistiken zum History-Cache valuecache - Statistiken zum Wert-Cache preprocessing - Statistiken zum Präprozessing-Manager alerting - Statistiken zum Alert-Manager lld - Statistiken zum LLD-Manager locks - Liste der Mutexe (ist auf BSD-Systemen leer) connector - Statistiken für Konnektoren mit der größten Warteschlange |
| ha_status | Status des High-Availability-(HA)-Clusters protokollieren. | |
| ha_remove_node=target | Den High-Availability-(HA)-Knoten entfernen, der durch seinen Namen oder seine ID angegeben ist. Beachten Sie, dass aktive/Standby-Knoten nicht entfernt werden können. |
target - Name oder ID des Knotens (kann durch Ausführen von ha_status ermittelt werden) |
| ha_set_failover_delay=delay | Failover-Verzögerung für High Availability (HA) festlegen. Zeitsuffixe werden unterstützt, z. B. 10s, 1m. |
|
| proxy_config_cache_reload[=<target>] | Konfigurations-Cache des Proxy neu laden. | target - kommagetrennte Liste von Proxy-Namen Wenn kein target angegeben ist, wird die Konfiguration für alle Proxys neu geladen |
| secrets_reload | Secrets aus Vault neu laden. | |
| service_cache_reload | Den Cache des Service-Managers neu laden. | |
| snmp_cache_reload | SNMP-Cache neu laden — SNMP-Engine-Eigenschaften (Engine-Zeit, Engine-Boots, Engine-ID, Zugangsdaten) für alle Hosts löschen. Verwenden Sie dies, um bei der Fehlerbehebung von SNMP-Problemen ein globales Leeren des Caches zu erzwingen. | |
| housekeeper_execute | Die Housekeeping-Prozedur starten. Wird ignoriert, wenn die Housekeeping-Prozedur derzeit ausgeführt wird. |
|
| trigger_housekeeper_execute | Die Auslöser-Housekeeping-Prozedur starten. Wird ignoriert, wenn die Housekeeping-Prozedur für Auslöser derzeit ausgeführt wird. |
|
| log_level_increase[=<target>] | Log-Level erhöhen; wirkt sich auf alle Prozesse aus, wenn kein target angegeben ist. Auf BSD-Systemen nicht unterstützt. |
process type - Alle Prozesse des angegebenen Typs (z. B. poller) Siehe alle Server-Prozesstypen. process type,N - Prozesstyp und Nummer (z. B. poller,3) pid - Prozesskennung (1 bis 65535). Bei größeren Werten geben Sie target als 'process type,N' an. |
| log_level_decrease[=<target>] | Log-Level verringern; wirkt sich auf alle Prozesse aus, wenn kein target angegeben ist. Auf BSD-Systemen nicht unterstützt. |
|
| prof_enable[=<target>] | Profiling aktivieren. Wirkt sich auf alle Prozesse aus, wenn kein target angegeben ist. Aktiviertes Profiling liefert Details zu allen rwlocks/Mutexen nach Funktionsname. |
process type - Alle Prozesse des angegebenen Typs (z. B. history syncer) Unterstützte Prozesstypen als Profiling-Ziele: 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 - Prozesstyp und Nummer (z. B. history syncer,1) pid - Prozesskennung (1 bis 65535). Bei größeren Werten geben Sie target als 'process type,N' an. scope - rwlock, mutex, processing können mit Prozesstyp und Nummer verwendet werden (z. B. history syncer,1,processing) oder für alle Prozesse eines Typs (z. B. history syncer,rwlock) |
| prof_disable[=<target>] | Profiling deaktivieren. Wirkt sich auf alle Prozesse aus, wenn kein target angegeben ist. |
process type - Alle Prozesse des angegebenen Typs (z. B. history syncer) Unterstützte Prozesstypen als Profiling-Ziele: siehe prof_enableprocess type,N - Prozesstyp und Nummer (z. B. history syncer,1) pid - Prozesskennung (1 bis 65535). Bei größeren Werten geben Sie target als 'process type,N' an. |
Beispiel für die Verwendung der Laufzeitsteuerung zum Neuladen des Konfigurations-Cache des Servers:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R config_cache_reload
Beispiele für die Verwendung der Laufzeitsteuerung zum Neuladen der Proxy-Konfiguration:
# Konfiguration aller Proxys neu laden:
zabbix_server -R proxy_config_cache_reload
# Konfiguration von Proxy1 und Proxy2 neu laden:
zabbix_server -R proxy_config_cache_reload=Proxy1,Proxy2
Beispiel für die Verwendung der Laufzeitsteuerung zum Leeren des Verlaufs-Cache für einen Datenpunkt:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R history_cache_clear=42243
Beispiele für die Verwendung der Laufzeitsteuerung zum Sammeln von Diagnoseinformationen:
# Alle verfügbaren Diagnoseinformationen in der Server-Logdatei sammeln:
zabbix_server -R diaginfo
# Statistiken zum Verlaufs-Cache in der Server-Logdatei sammeln:
zabbix_server -R diaginfo=historycache
Beispiel für die Verwendung der Laufzeitsteuerung zum Neuladen des SNMP-Cache:
zabbix_server -R snmp_cache_reload
Wenn eine SNMPv3-Schnittstelle über die Zabbix-Benutzeroberfläche aktualisiert wird, lädt Zabbix in den meisten Fällen automatisch die neuen SNMPv3-Anmeldedaten für diese Schnittstelle neu; verwenden Sie -R snmp_cache_reload nur, wenn die Abfrage nach Änderungen der Anmeldedaten weiterhin fehlschlägt (zum Beispiel aufgrund von Inkonsistenzen bei engineBoots/engineID oder bei nicht RFC-konformen Geräten) oder wenn Sie zur Fehlerbehebung das globale Leeren des SNMP-Cache erzwingen müssen.
Beispiel für die Verwendung der Laufzeitsteuerung zum Auslösen der Ausführung des Housekeepers:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R housekeeper_execute
Beispiele für die Verwendung der Laufzeitsteuerung zum Ändern der Protokollierungsstufe:
# Protokollierungsstufe aller Prozesse erhöhen:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase
# Protokollierungsstufe des zweiten Poller-Prozesses erhöhen:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=poller,2
# Protokollierungsstufe des Prozesses mit PID 1234 erhöhen:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_increase=1234
# Protokollierungsstufe aller http poller-Prozesse verringern:
zabbix_server -c /usr/local/etc/zabbix_server.conf -R log_level_decrease="http poller"
Beispiel für das Setzen der HA-Failover-Verzögerung auf das Minimum von 10 Sekunden:
zabbix_server -R ha_set_failover_delay=10s
Prozessbenutzer
Der Zabbix Server ist dafür ausgelegt, als Nicht-Root-Benutzer ausgeführt zu werden. Er wird als derjenige Nicht-Root-Benutzer ausgeführt, als der er gestartet wird. Daher können Sie den Server problemlos als jeden beliebigen Nicht-Root-Benutzer ausführen.
Wenn Sie versuchen, ihn als 'root' auszuführen, wechselt er zu einem fest kodierten Benutzer 'zabbix', der auf Ihrem System vorhanden sein muss. Sie können den Server nur dann als 'root' ausführen, wenn Sie den Parameter 'AllowRoot' in der Server-Konfigurationsdatei entsprechend ändern.
Wenn Zabbix Server und Agent auf demselben Rechner ausgeführt werden, wird empfohlen, für den Server einen anderen Benutzer zu verwenden als für den Agent. Andernfalls kann der Agent, wenn beide unter demselben Benutzer ausgeführt werden, auf die Server-Konfigurationsdatei zugreifen, und jeder Benutzer mit Admin-Rechten in Zabbix kann dann beispielsweise das Datenbankpasswort relativ leicht auslesen.
Konfigurationsdatei
Siehe die Optionen der Konfigurationsdatei für Details zur Konfiguration von zabbix_server.
Startskripte
Die Skripte werden verwendet, um Zabbix-Prozesse während des Systemstarts/-herunterfahrens automatisch zu starten/stoppen. Die Skripte befinden sich im Verzeichnis misc/init.d.
Server-Prozesstypen und Threads
agent poller- asynchroner Poller-Prozess für passive Prüfungen mit einem Worker-Threadalert manager- Manager der Alarmwarteschlangealert syncer- Alarm-DB-Schreiberalerter- Prozess zum Senden von Benachrichtigungenavailability manager- Prozess für Aktualisierungen der Host-Verfügbarkeitbrowser poller- Poller für Browser-Datenpunkt-Prüfungenconfiguration syncer- Prozess zur Verwaltung des In-Memory-Caches von Konfigurationsdatenconfiguration syncer worker- Prozess zum Auflösen und Synchronisieren von Benutzermakro-Werten in Datenpunkt-Namenconnector manager- Manager-Prozess für Konnektorenconnector worker- Prozess zur Verarbeitung von Anfragen vom Connector Managerdiscovery manager- Manager-Prozess für die Geräteerkennungdiscovery worker- Prozess zur Verarbeitung von Erkennungsaufgaben vom Discovery Managerescalator- Prozess für die Eskalation von Aktionenha manager- Prozess zur Verwaltung der Hochverfügbarkeithistory poller- Prozess zur Verarbeitung berechneter Prüfungen, die eine Datenbankverbindung erfordernhistory syncer- Verlaufs-DB-Schreiberhousekeeper- Prozess zum Entfernen veralteter Daten (Datenpunkt-Verlauf und Trends, Benutzersitzungen, Ereignisse usw.) sowie von Daten, die von gelöschten Objekten zurückgelassen wurdenhttp agent poller- asynchroner Poller-Prozess für HTTP-Prüfungen mit einem Worker-Threadhttp poller- Poller für Web-Monitoringicmp pinger- Poller für icmpping-Prüfungeninternal poller- Poller für interne Prüfungenipmi manager- IPMI-Poller-Manageripmi poller- Poller für IPMI-Prüfungenjava poller- Poller für Java-Prüfungenlld manager- Manager-Prozess für Low-Level-Discovery-Aufgabenlld worker- Worker-Prozess für Low-Level-Discovery-Aufgabenodbc poller- Poller für ODBC-Prüfungenpoller- normaler Poller für passive Prüfungenpreprocessing manager- Manager für Vorverarbeitungsaufgaben mit Vorverarbeitungs-Worker-Threadspreprocessing worker- Thread für die Datenvorverarbeitungproxy poller- Poller für passive Proxysproxy group manager- Manager für Proxy-Lastverteilung und Hochverfügbarkeitreport manager- Manager für Aufgaben zur geplanten Berichtserstellungreport writer- Prozess zur Erstellung geplanter Berichteself-monitoring- Prozess zum Sammeln interner Server-Statistikenservice manager- Prozess zur Verwaltung von Services durch Empfang von Informationen über Probleme, Problem-Tags und Problembehebung von History Syncer, Task Manager und Alert Managersnmp poller- asynchroner Poller-Prozess für SNMP-Prüfungen mit einem Worker-Thread (nurwalk[OID]- undget[OID]-Datenpunkte)snmp trapper- Trapper für SNMP-Trapstask manager- Prozess zur Remote-Ausführung von Aufgaben, die von anderen Komponenten angefordert werden (z. B. Problem schließen, Problem bestätigen, Datenpunkt-Wert jetzt prüfen, Remote-Befehlsfunktionalität)timer- Timer für die Verarbeitung von Wartungszeiträumentrapper- Trapper für aktive Prüfungen, Traps, Proxy-Kommunikationtrigger housekeeper- Prozess zum Entfernen von Problemen und Ereignissen, die von Auslösern erzeugt wurden, die inzwischen gelöscht wurdenunreachable poller- Poller für nicht erreichbare Gerätevmware collector- VMware-Datensammler, der für die Datenerfassung von VMware-Services verantwortlich ist
Die Server-Logdatei kann verwendet werden, um diese Prozesstypen zu beobachten.
Die Server-Logdatei wird mit Lese- und Schreibrechten nur für den Dateieigentümer erstellt. Zusätzlich ist die Datei für die Eigentümergruppe lesbar. Alle anderen Berechtigungen werden verweigert.
Verschiedene Typen von Zabbix-Server-Prozessen können mit dem internen zabbix[process,<type>,<mode>,<state>]-Datenpunkt überwacht werden.
Transaktionsstatistiken des History-Syncers
Der Prozesstitel des History-Syncers zeigt detaillierte Statistiken zu den Transaktionen des History-Syncers an:
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]
In „A+B Auslöser“:
- A - Auslöser, die aufgrund von Verlaufswerten verarbeitet wurden;
- B - Auslöser, die aufgrund von Timern verarbeitet wurden.
Die Zeitangaben in „processed...in N (<timings>) sec“ sind:
- Zeit für das Schreiben von Datenpunkt-Werten in die Datenbank;
- Zeit für die Aktualisierung von Datenpunkt-Daten (Status, Fehler, Host-Inventar usw.);
- Zeit für das Schreiben von Trends in die Datenbank;
- Zeit für die Berechnung von Auslösern;
- Zeit für die Verarbeitung von Ereignissen und Aktionen.
Housekeeping-Verfahren
Der Prozess housekeeper entfernt periodisch veraltete Daten (Datenpunkt-Verlauf und Trends, Benutzersitzungen, Ereignisse usw.) sowie Daten, die von gelöschten Objekten zurückgelassen wurden.
Er läuft in Zyklen, wobei die Häufigkeit und das Löschlimit pro Zyklus durch HousekeepingFrequency und MaxHousekeeperDelete bestimmt werden.
Daten, die in einem Zyklus nicht entfernt werden, werden in den nächsten übernommen.
Automatisches Housekeeping kann unter Administration > Housekeeping aktiviert und konfiguriert werden.
Zum Entfernen von Daten, die von gelöschten Objekten zurückgelassen wurden, verwendet der Prozess housekeeper Aufgaben aus der Tabelle housekeeper, die jedes Mal befüllt wird, wenn ein Objekt gelöscht wird.
Wenn Sie beispielsweise einen Host löschen, löscht Zabbix auch dessen Datenpunkte, jedoch nicht deren Verlauf, Trends oder Probleme.
Stattdessen befüllen Datenbank-Trigger die Tabelle housekeeper mit Aufgaben, die aus folgenden Feldern bestehen:
housekeeperid- Aufgaben-IDobject- Objekttyp (0- Datenpunkt;1- Auslöser;2- Service;3- entdeckter Host;4- entdeckter Service)objectid- Objekt-ID (hilft dem housekeeper, objektbezogene Daten zu finden)
Wenn Sie beispielsweise einen Host mit zwei Datenpunkten und einem Auslöser löschen, wird die Tabelle housekeeper wie folgt befüllt:
+---------------+--------+----------+
| housekeeperid | object | objectid |
+---------------+--------+----------+
| 1 | 1 | 28724 |
| 2 | 0 | 59396 |
| 3 | 0 | 59397 |
+---------------+--------+----------+
Datenbank-Trigger befüllen die Tabelle housekeeper, ohne auf objektbezogene Daten zu prüfen; diese Prüfung wird vom Prozess housekeeper durchgeführt.
Jede Aufgabe führt zu einer oder mehreren housekeeper-Operationen, die vom Objekttyp abhängen:
-
Für Datenpunkte (einschließlich LLD-Regeln) - entfernt Daten aus allen Verlaufs- und Trendtabellen (
history,history_str,history_log,history_uint,history_text,history_bin,history_json,trends,trends_uint), die Werte für diese Datenpunkte enthalten. Außerdem wird die Tabelleproblemsgeprüft und veraltete interne Ereignisse entfernt, die mit diesen Datenpunkten verknüpft sind. -
Für Auslöser - prüft ereignisbezogene Tabellen (
problem,event_symptom,event_recovery,events) und entfernt veraltete Ereignisse, die mit diesen Auslösern verknüpft sind, und benachrichtigt außerdem den Prozessservice managerüber entfernte Ereignisse.
Ein separater Prozess trigger housekeeper übernimmt eine engere Aufgabe – das Entfernen von Problemen und Ereignissen, die keinen bekannten Quell-Auslöser haben.
Seine Ausführungshäufigkeit wird durch ProblemHousekeepingFrequency gesteuert.
Bis das Housekeeping-Verfahren für Auslöser gestartet wird, können Probleme, die durch inzwischen gelöschte Auslöser verursacht wurden, weiterhin Serviceprobleme erzeugen und diese Services zuweisen. Wenn Ihre Umgebung viele Regeln zur Statusberechnung für Services umfasst, die auf häufig entdeckten/nicht mehr entdeckten Auslösern basieren, sollten Sie erwägen, die Häufigkeit des Housekeeping-Verfahrens durch Anpassen des Server-Konfigurationsparameters ProblemHousekeepingFrequency zu erhöhen.
-
Für Services - prüft die Tabelle
problemsund entfernt veraltete Service-Ereignisse sowie veraltete Serviceprobleme und löst diese damit zum Zeitpunkt des Housekeepings. -
Für die Netzwerkdiscovery - entfernt veraltete Discovery-Ereignisse aus der Tabelle
problems.
Der housekeeper entfernt nur Ereignisse, die nicht mit Problemen verknüpft sind. Beispielsweise wird ein veraltetes Problem-/Wiederherstellungsereignis nicht entfernt, wenn es mit einem offenen Problem verknüpft ist. Wenn der housekeeper veraltete Entitäten entfernt, entfernt er zuerst Probleme und dann Ereignisse.
Tabellen, die den Modus partition verwenden (von TimescaleDB partitionierte Tabellen), werden übersprungen; nur Tabellen, die den Modus regular verwenden, werden verarbeitet.
Unterstützte Plattformen
Aufgrund der Sicherheitsanforderungen und des geschäftskritischen Charakters des Server-Betriebs ist UNIX das einzige Betriebssystem, das die erforderliche Leistung, Fehlertoleranz und Ausfallsicherheit zuverlässig bereitstellen kann. Zabbix läuft auf marktführenden Versionen.
Der Zabbix Server wird auf den folgenden Plattformen getestet:
- Linux
- Solaris
- AIX
- HP-UX
- Mac OS X
- FreeBSD
- OpenBSD
- NetBSD
- SCO Open Server
Zabbix kann auch auf anderen Unix-ähnlichen Betriebssystemen funktionieren.
Gebietsschema
Beachten Sie, dass der Server ein UTF-8-Gebietsschema benötigt, damit einige textuelle Datenpunkte korrekt interpretiert werden können. Die meisten modernen Unix-ähnlichen Systeme verwenden standardmäßig ein UTF-8-Gebietsschema, jedoch gibt es einige Systeme, bei denen dies ausdrücklich festgelegt werden muss.