Es ist in Ordnung, den Artikel zu lesen, die Notizen zu teilen und den Lernfortschritt durch diese Methode aufzuzeichnen.
Wang Depeng. Serverüberwachung und Alarmierung sowie Leistungsoptimierung basierend auf Zabbix[D]. Liaoning: Dalian University of Technology, 2020.
Originaltext: Serverüberwachungsalarm und Leistungsoptimierung basierend auf Zabbix
Achten Sie auf das offizielle Konto und die Hintergrundantwort „ Basierend auf Zabbix, um Serverüberwachung sowie Alarm- und Leistungsoptimierung zu realisieren“ können Sie den Originaltext abrufen und gemeinsam lernen.
Der Hauptinhalt des Papiers:
Entwerfen und bauen Sie basierend auf dem Open-Source-Programm Zabbix und der MySQL-Datenbank eine zuverlässige Echtzeit-Überwachungs- und Alarmierungsplattform, um eine Echtzeitüberwachung und Alarmierung der Temperatur, Leistung, des Dienstes und anderen Status von Servern, Switches, Routern und anderen Geräten zu realisieren Diese in verschiedenen Regionen verteilte Überwachungs- und Alarmplattform ist von großem Wert für die Förderung der Standardisierung, Plattformisierung und Automatisierung des Informationssystems des Unternehmens.
Zwei innovative Punkte:
Durch das Schreiben eines Python-Programms zur Verbindung mit der API-Schnittstelle der Überwachungs- und Alarmplattform wird das Fehlen von Zabbix bei der Batch-Änderung ausgeglichen.
Um die Verarbeitungsleistung der Überwachungs- und Alarmierungsplattform zu verbessern, analysieren Sie den Hintergrundalgorithmus der MySQL-Datenbank, wählen Sie die Speicher-Engine und den Indextyp aus, die für die Überwachungs- und Alarmierungsplattform am besten geeignet sind, und optimieren Sie die Parameter der Datenbank, um die Leistung erheblich zu verbessern Echtzeitleistung und Zuverlässigkeit der Überwachungs- und Alarmierungsplattform. Verbesserung.
1. Einleitung
Vergleich verschiedener Open-Source-Überwachungssysteme
Dieses Bild ist an vielen Stellen im Internet zu sehen. Ist das die Originalquelle?
2. Verwandte technische Analyse
Ich habe ein Kapitel über SNMP, IPMI, JMX-Protokolle, MySQL-Datenbank und Python geschrieben. Wie kann man das Gewicht dieser Sache reduzieren? Haha, aber als Lernmaterial ist es trotzdem gut.
3. Analyse und Design der Überwachungs- und Alarmplattform
Zusätzlich zu den ähnlichen Anforderungen und Prinzipien besteht der große Unterschied zu den Online-Texten darin, dass das Blockdiagramm des Systems angegeben wird, das möglicherweise den Anforderungen wissenschaftlicher Arbeiten entspricht.
Im Logikdiagramm der gesamten Plattform beziehen sich die Pfeile links auf die Namen der Schichten rechts. Zuerst dachte ich, es sei die Ausgabe von Daten.
Dieses Bild ist zweifelhaft. Dies ist der Datenfluss des Agenten. Verwendet die Datenübertragung des Agenten den Snmpd-Dienst?
4. Plattformrealisierung und -anwendung
Die Implementierung und Anwendung der Plattform besteht darin, eine Zabbix-Überwachungslösung zu erstellen. Es gibt eine Methode, mit Python den Host in Excel zu lesen und Batch-Änderungen durchzuführen. Dies ist der Innovationspunkt des Artikels, und die anderen stimmen im Wesentlichen mit denen überein Handbuch.
Der Autor gibt den gesamten Code im Anhang unter Verwendung der Zabbix-API an. Dies sollte ein kleines Tool sein, das häufig verwendet werden kann und aus dem Sie lernen können.
5. Leistungsoptimierung und Test der Überwachungs- und Alarmierungsplattform
Es umfasst hauptsächlich Strukturoptimierung, Datenbankoptimierung und Parameteroptimierung und bietet einen Optimierungsvergleich. Die Struktur verwendet einen Proxy, die Datenbankoptimierung beginnt mit der Datenbank-Engine und dem Indextyp und optimiert dann die Parameter der Datenbank; die Optimierung des Zabbix-Servers umfasst hauptsächlich die Anzahl der Prozesse, die Cache-Größe und die Aktualisierungsfrequenz, es wird jedoch nur ein Bild angegeben und es wird nicht erklärt, warum es auf diese Weise optimiert werden sollte.
erneute Analyse von Zweifeln
1. Verarbeitungsprozess des Agenten
Gestern Abend habe ich gesagt, dass Abbildung 3.3 im Papier verdächtig ist, weil ich gesehen habe, dass SNMPD ein Dienst von SNMP ist und MIB (Management Information Base) eine Datenbank zum Speichern von OIDs ist, sodass es wie ein Blockdiagramm des Systems aussieht, das SNMP verwendet Protokoll zum Sammeln von Daten.
Tatsächlich wird im offiziellen Handbuch darauf hingewiesen, dass Agent über die folgenden drei Prozesse verfügt:
-
Collector_Thread sammelt regelmäßig grundlegende Informationen, hauptsächlich Speicher und CPU, die im gemeinsam genutzten Speicher gespeichert sind
-
listener_thread wird verwendet, um vom Server oder Proxy zugewiesene Sammlungsaufgaben und passive Sammlung zu empfangen
-
active_checks_thread Aktive Erfassung und Berichterstattung
Die drei Prozesse hier sind leicht zu verstehen: Einer besteht darin, Indikatoren zu sammeln, einer darin, Aufgaben vom Server anzunehmen und der letzte darin, Daten zu melden.
Ich habe im Internet auch ein Strukturdiagramm des Agentenprogramms gefunden, und die obige Struktur kann ebenfalls erstellt werden.
2. Optimales Design des Servers
Im gestrigen Artikel wurde gestern nur eine Serveroptimierungskonfiguration angegeben, und der Grund wurde nicht angegeben, geschweige denn weitere Konfigurationsmethoden. Hier sind andere Konfigurationslösungen, die später genauer untersucht werden.
Konfigurationsdatei des Zabbix-Servers
#ListenPort=10051
#Listening-Port
# SourceIP=
#Bei mehreren Adressen geben Sie an, welche Adresse für die Kommunikation verwendet werden soll
# LogType=Datei
#Die Möglichkeit, das Protokoll anzugeben, besteht darin, es in einer Datei aufzuzeichnen
LogFile=/var/log/zabbix/zabbix_server.log
#Geben Sie den Speicherpfad für die Protokolldatei an. Der Benutzer muss über Berechtigungen für das Verzeichnis verfügen.
# LogFileSize=1
# Protokollumschreibung, im Allgemeinen nicht geöffnet
# DebugLevel=3
#Protokollebene: Wenn Sie einen Fehler machen müssen, können Sie die Debug-Ebene anpassen, um klarer zu sehen. Nachdem der Fehler behoben ist, wechseln Sie zurück zur ursprünglichen Protokollebene, da das Protokoll sonst den Speicherplatz füllt
PidFile=/apps/zabbix-server/run/zabbix_server.pid
#PID-Dateipfad
SocketDir=/apps/zabbix-server/run/
#Geben Sie den Pfad der Socket-Datei an
DBHost=
#Adresse der verbundenen Datenbank
DBName=zabbix_server
#Name-Datenbank
DBUser=
#Verbundenes Konto
DBPassword=
#Verbindungspasswort
Konfiguration der Zabbix-Serveroptimierung
# HistoryStorageURL=
#Geben Sie die Elasticsearch-Serveradresse an, speichern Sie historische Zabbix-Daten in ES, optimieren Sie die Zabbix-Leistung und benötigen Sie eine neue Version von Zabbix zur Unterstützung
# HistoryStorageTypes=uint,dbl,str,log,text
Indextypen für #elasticsearch
# HistoryStorageDateIndex=0
#Speichern Sie historische Daten in verschiedenen Elasticsearch-Indizes
# ExportDir=
#Definieren Sie das Verzeichnis der Echtzeit-Export-Trigger-Ereignisse, der Werte der Überwachungselementsammlung und der Trenddaten
# ExportFileSize=1G
#Definieren Sie die maximale Größe jeder exportierten Datei
StartPollers=6
# Geben Sie an, dass mehrere Prozesse zum Sammeln von Agentendaten geöffnet werden sollen. Die Anzahl der allgemeinen Prozesse entspricht der Anzahl der CPU-Kerne und der Bereich liegt zwischen 0 und 1000
# StartIPMIPollers=1
# Geben Sie an, dass mehrere Prozesse zum Sammeln von IPMI-Daten geöffnet werden sollen. Sie müssen IPMI im Voraus öffnen, andernfalls wird ein Fehler gemeldet. Der Bereich liegt zwischen 0 und 1000
StartPreprocessors=6
#Wie viele Prozesse werden vorab gestartet, um Zabbix-Agentendaten zu verarbeiten? Der Bereich liegt zwischen 0 und 1000
# StartPollersUnreachable=1
#Wie viele Prozesse müssen gestartet werden, um nicht erreichbare Hosts im Wechsel zu erkennen? Der Bereich liegt zwischen 0 und 1000
Trapper starten=5
#Wie viele Prozesse werden vorab gestartet, um auslöserbezogene Vorgänge abzuwickeln? Der Bereich liegt zwischen 0 und 1000
StartPingers=5
#Wie viele Prozesse zur Ping-Erkennung gestartet werden sollen, um Netzwerkgeräte und Hosts zu pingen, der Bereich liegt zwischen 0 und 1000
StartDiscoverers=6
#Wie viele Prozesse sollen für die automatische Erkennung gestartet werden, z. B. automatische Festplattenerkennung, automatische Netzwerkerkennung? Die Anzahl der allgemeinen Prozesse sollte die Anzahl der Host-CPU-Kerne nicht überschreiten. Der Bereich liegt zwischen 0 und 250
StartHTTPPollers=3
#Wie viele Prozesse werden beim Ausführen des Webzugriffs gestartet, um den Webzugriff abzuwickeln? Der Bereich liegt zwischen 0 und 1000
StartTimers=3
#Die Anzahl der Timer-Prozesse. Der Timer wird zur Berechnung der Zeit des Auftretens des Problems und zur Schrittsynchronisierung usw. verwendet. Er wird zum rekursiven Senden von E-Mails beim Auslösen eines Alarms usw. verwendet und liegt im Bereich von 1 bis 1000
# StartEscalators=1
Die anfängliche Prozessnummer des #elasticsearch-Prozesses, die Anzahl der Prozesse, die zur Verarbeitung der automatischen Schritte in der Aktion verwendet werden, 0-100
# StartAlerts=3
#Die Vorstartnummer des Alarmprozesses, 0-100
# JavaGateway=
#zabbix ist in PHP geschrieben und kann nicht direkt auf Java-Programme zugreifen. Daher wird Javagateway verwendet. Das Javagateway ist an einem Ende mit Zabbix und am anderen Ende mit der Java-Umgebung verbunden, um Ressourcenindikatoren der Java-Umgebung zu sammeln. Ein Javagateway kann eine Verbindung herstellen an mehrere Java-Dienste; geben Sie die Javagateway-Adresse an
# JavaGatewayPort=10052
#javagatewayListening-Port
# StartJavaPollers=0
#Wie viele Prozesse müssen vorab gestartet werden, um abwechselnd Java-Daten zu sammeln, 0-1000
# StartVMwareCollectors=0
#Wird zum Festlegen der überwachenden VMware Esxi-Hostinstanz verwendet. Wenn sie 0 ist, wird sie nicht verwendet. Wenn Sie den Esxi-Host überwachen möchten, beträgt der Mindestwert 1. Stellen Sie die entsprechende Zahl entsprechend der Anzahl der Überwachungs-Esxi ein . Zabbix überwacht VMware. Sie müssen die Vorlage zur Überwachung von VMware ;0-250 verwenden
VMwareFrequency=60
#Überwachen Sie das Zeitintervall in Sekunden, in dem VMware die neuesten Daten erhält
# VMwarePerfFrequency=60
#Überwachen Sie das Zeitintervall der VMware-Leistungsdaten
# VMwareCacheSize=8M
Die Größe des #VMware-Datencaches belegt den Speicher des Zabbix-Serverservers
# VMwareTimeout=10
#vmware-Timeout beim Abrufen von Daten
SNMPTrapperFile=/apps/zabbix-server/run/zabbix_traps.tmp
#Temporärer Pfad der SNMP-Triggerdatei
StartSNMPTrapper=1
#SNMP-Trigger-Prozessnummer, der Bereich ist 0-1, 1 bedeutet offen
# ListenIP=0.0.0.0
#zabbix-Server-Abhöradresse
# HousekeepingFrequency=1
#Wie viele Stunden werden die historischen Daten der Agentendatenbank bereinigt? Der Standardwert ist 1 Stunde, der Bereich liegt zwischen 0 und 24. Wenn die im Überwachungselement definierte Speicherzeit für historische Daten und die Speicherzeit für Trenddaten die angegebene Zeit überschreiten, Es wird bereinigt. Trenddaten speichern den Maximalwert, den Minimalwert und den Durchschnittswert der Daten innerhalb einer Stunde. Bei historischen Daten handelt es sich um die Abfrage der Daten jedes Überwachungselements, bei denen es sich um historische Daten handelt
# MaxHousekeeperDelete=5000
#Die maximale Anzahl von Zeilen, die jedes Mal gelöscht werden sollen. Der Bereich liegt zwischen 0 und 1.000.000
CacheSize=128M
#Die Cache-Größe, die zum Speichern von Host-, Verwaltungselement- und Triggerdaten verwendet wird; der Bereich liegt zwischen 128 KB und 8 GB und wird im Allgemeinen mit 1 bis 2 GB konfiguriert
CacheUpdateFrequency=300
#zabbix aktualisiert die Häufigkeit der zwischengespeicherten Daten, in Sekunden, Bereich 1–3600
StartDBSyncers=4
Wie viele Prozesse startet #zabbix, um Daten mit der Datenbank zu synchronisieren, einschließlich Abfragen; 0-100
HistoryCacheSize=2G
# Cachegröße für historische Daten, 128K-2G
HistoryIndexCacheSize=128M
#Cache für historische Datenindexinformationen, 128K-2G
TrendCacheSize=16M
#Wird verwendet, um festzulegen, wie viel gemeinsam genutzter Systemspeicher zum Zwischenspeichern der berechneten Trenddaten verwendet wird. Dieser Parameter kann den Lesedruck der Datenbank bis zu einem gewissen Grad beeinflussen und liegt im Bereich von 128 KB bis 2 GB
ValueCacheSize=16M
#Größe des gemeinsam genutzten Speichers, der zum Zwischenspeichern von Projektverlaufsdatenanfragen verwendet wird, 128K-64G
Zeitüberschreitung=30
#Geben Sie an, wie lange der Agent die vom Server abgefragten Daten nicht zurückgegeben hat. Es tritt eine Zeitüberschreitung von 1 bis 30 auf
TrapperTimeout=300
#Die maximale Zeit, die der Trigger zum Verarbeiten von Daten benötigt, in Sekunden; 1-300
UnreachablePeriod=60
#Wenn der Host für wie viele Sekunden nicht erreichbar ist, wird er als nicht verfügbarer Host festgelegt. Die Einheit beträgt Sekunden, 1-3600
UnavailableDelay=60
#Wenn der Host nicht verfügbar ist, kann die Häufigkeit, mit der die Verfügbarkeit des Hosts überprüft werden soll, zwischen 1 und 3600 liegen
UnreachableDelay=15
#Wenn der Host nicht erreichbar ist, wie oft wird die Verfügbarkeit des Hosts überprüft, 1-3600
AlertScriptsPath=${datadir}/zabbix/alertscripts
#Der Pfad des Überwachungsalarmskripts hängt vom Parameter datadir zur Kompilierungszeit ab, z. B. /apps/zabbix-server/share/zabbix/alertscripts
# FpingLocation=/usr/sbin/fping
#Geben Sie den Speicherort des Befehls fping an. Fping wird zum Testen der Netzwerkkonnektivität verwendet. Zur Installation können Sie apt install fping verwenden
# Fping6Location=/usr/sbin/fping6
Befehlsspeicherort für #fping6
LogSlowQueries=3000
#Geben Sie an, wie lange das Ergebnis nicht zurückgegeben wird. Es handelt sich um ein langsames Protokoll (in Millisekunden). Nur wenn die Protokollstufe 3, 4/5 und 0 beträgt, bedeutet dies, dass keine Aufzeichnung erfolgt. Der Bereich liegt zwischen 1 und 3600000
# TmpDir=/tmp
#Temporäres Dateispeicherverzeichnis
StartProxyPollers=1
#Geben Sie an, wie viele Prozesse der Zabbix-Server beginnt, mit dem Proxy zu kommunizieren. Dies ist ein passiver Proxy, und der Zabbix-Server stellt aktiv eine Verbindung zum Proxy her, und der Proxy akzeptiert passiv die Serververbindung. Im Allgemeinen muss sichergestellt werden, dass ein Server vorhanden ist Der Prozess interagiert mit einem Proxy
ProxyConfigFrequency=60
#Proxy-Passivmodus: Wie viele Sekunden synchronisiert der Server die Konfigurationsdatei (Überwachungselement) mit dem Proxy? Dieser Parameter wird nur für den Passivmodus-Proxy verwendet. Der Bereich liegt zwischen 1 und 3600 * 24 * 7. Bei einem neuen Agentenknoten Wird über Zabbix Web hinzugefügt, wie lange Synchronisieren Sie die Konfigurationsdatei jeweils einmal mit dem Proxy. Nachdem der Proxy die Konfigurationsdatei empfangen hat, synchronisiert er die Konfigurationsdatei erneut mit dem Agent-Host, sodass der Agent-Host die Überwachungselemente abrufen kann in der Konfigurationsdatei gesammelt werden.
ProxyDataFrequency=60
#Wie viele Sekunden fordert der Zabbix-Server im passiven Modus historische Daten vom Proxy an? Der Proxy meldet die Überwachungsdaten des Agenten innerhalb der angegebenen Zeit (1-3600) an den Server
# AllowRoot=0
#Ob es erlaubt ist, Zabbix als Root zu starten, wenn Sie es zulassen möchten, ändern Sie es auf 1
Benutzer=zabbix
#Geben Sie den Benutzer an, der Zabbix startet
# Include=
#Importieren Sie die Konfigurationsdatei des angegebenen Pfads
# StatsAllowedIP=
#Legen Sie die Adresse fest, die den Zugriff auf den Zabbix-Server ermöglicht
nach dem Lesen
In dem Artikel wird oft die Überwachung des Netzwerks eines bestimmten Unternehmens erwähnt. Dies sollte eine Zusammenfassung eines bestimmten Netzwerküberwachungsprojekts sein. Die verwendete Technologie ist nicht schwierig, aber die Struktur, der Prozess usw. sind immer noch klar geschrieben und der größte Unterschied zwischen Handbücher und Online-Artikel können für ein besseres Verständnis der Überwachung hilfreich sein.
Originaltext: Serverüberwachungsalarm und Leistungsoptimierung basierend auf Zabbix
Achten Sie auf das offizielle Konto und die Hintergrundantwort „ Basierend auf Zabbix, um Serverüberwachung sowie Alarm- und Leistungsoptimierung zu realisieren“ können Sie den Originaltext abrufen und gemeinsam lernen.