
Sammeln von VMware ESXi-LOGs in Elasticsearch und Visualisieren in Grafana
Nun, heute ist es Zeit für einen weiteren Beitrag über das Sammeln von Logs, wie man sie behandelt und vor allem, wie man sie visualisiert; In diesem Dokument erfahren Sie, wie Sie den gesamten Prozess mit den VMware ESXi-Hypervisor-Protokollen durchführen, Behandeln Sie sie mit Elastic Stack und visualisieren Sie schließlich in Grafana, was uns interessiert, wie z.B. Fehlerprotokolle, Falsche Anmeldungen…
Wir alle, die mit VMware-Infrastrukturen arbeiten, wissen, dass die gesamte Grundlage von einem fabelhaften Hypervisor unterstützt wird, unsere geliebten ESXi-Hosts. Ein Hypervisor, der auf Sicherheit und Stabilität basiert, dass sie in der Regel wenig Probleme bereiten, Aber dass es nicht schadet, ihre Protokolle an einem zentralen Ort zu sammeln, um den Überblick über ihre Gesundheit zu behalten. Wie wir wissen, Wir können Ihre Protokolle in einem Syslog speichern, Das zu nutzen, um das zu nutzen, Wir senden die Logs an Logstash. Logstash ist für den Empfang und die Bestellung der Protokolle verantwortlich, Trennen von mühsamen Textzeichenfolgen in verschiedene Felder mit gültigen Daten, um diese Daten schließlich an Elasticsearch zu senden und in einem Index zu speichern. Dann werden wir über Kibana oder Grafana in der Lage sein, diese Inhalte grafisch zu visualisieren, und zeigen Sie Anmeldeversuche beim Host an (von SSH, GUI…), Zugänge einfach ansehen, Grundlegendes zu fehlgeschlagenen Ereignissen, Vergleichen Sie verschiedene Hypervisoren miteinander, Kennen Sie sich wiederholende Fehler… Und das alles wie immer in Echtzeit oder um historische Daten der letzten 24 Stunden zu erstellen, Woche, Monat, Jahr…
Zuerst müssen wir natürlich den Elastic Stack-Teil installiert haben, Was wurde Logstash, Elasticsearch (Englisch) und Kibana; dann würde es darum gehen, jeden Hypervisor anzuweisen, die Protokolle an Logstash zu senden, zum Hafen unserer Wahl. Hör damit auf, Wir haben viele Möglichkeiten, dies zu tun, Host zu Host, von der GUI, CLI, von vCenter…
Am ehesten so, wenn Sie nur wenige Hosts haben, Von vCenter aus gehen wir zu jedem Host, in “Konfigurieren” > Erweiterte Systemeinstellungen” > und wir suchen “syslog.global”, Wir bearbeiten 'Syslog.global.logHost” Anzeige im TCP/UDP-Format://DIRECCION_IP:PORT das Ziel unserer Logs. Oder noch besser mit PowerShell:
Get-VMHostSysLogServer -VMHost NOMBRE_HOST_ESXi Set-VMHostSysLogServer -VMHost NOMBRE_HOST_ESXi -SysLogServer 'udp://DIRECCION_IP:PUERTO Set-VMHostSysLogServer -VMHost NOMBRE_HOST_ESXi -SysLogServer 'tcp://DIRECCION_IP:PORT Get-VMHostSysLogServer -VMHost NOMBRE_HOST_ESXi Get-VMhostFireWallException -VMhost NOMBRE_HOST_ESXi -Name syslog Get-VMHostFireWallException -VMHost NOMBRE_HOST_ESXi -Name Syslog | Set-VMHostFirewallException -Enabled:$STIMMT.
Eingabe { TCP { Typ => "ESXi" Anschluss => "1514" -Tags => ["VMware (Englisch)","ESXi"] } } Filter { wenn [Art] == "ESXi" { Begreifen { Übereinstimmung => { "Nachricht" => [ "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{GIERIGE DATEN:Op_id} Benutzer=%{GIERIGE DATEN:Benutzer}\] %{GIERIGE DATEN:Evento_tipo} %{GIERIGE DATEN:Evento_codigo} : %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{GIERIGE DATEN:Op_id} Benutzer=%{GIERIGE DATEN:Benutzer}\] %{GIERIGE DATEN:Evento_codigo}: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{GIERIGE DATEN:Op_id} Benutzer=%{GIERIGE DATEN:Benutzer}\] \(%{GIERIGE DATEN:Evento_codigo}\)", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{GIERIGE DATEN:Op_id}\] \[%{GIERIGE DATEN:Evento_codigo}\]: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{GIERIGE DATEN:Op_id}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Gehostet: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Vpxa: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{GIERIGE DATEN:Op_id}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Vpxa: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Vpxa: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Rhttpproxy: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Rhttpproxy: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} apiForwarder: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} VSANMGMTSVC: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[opID=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} VSANSYSTEM: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} VSANSYSTEM: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} vmkernel: %{WORT:CPU_core}:%{INT:Evento_id}\)%{GIERIGE DATEN:Titel}: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} vmkernel: %{WORT:CPU_core}:%{INT:Evento_id} opID=%{PROG:Op_id}\)%{GIERIGE DATEN:Titel}: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} vmkernel: %{WORT:CPU_core}:%{INT:Evento_id}\)%{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} vmkwarning: %{WORT:CPU_core}:%{INT:Evento_id}\)%{GIERIGE DATEN:Titel}: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Fdm: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{PROG:Op_id}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Fdm: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} hostd-probe: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} %{PROG:Log_proceso}\[%{INT:Evento_id}\]: BENUTZER %{WORT:Benutzer} Pid %{INT:Pid} %{WORT:Tipo_proceso} %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} %{PROG:Log_proceso}\[%{INT:Evento_id}\]: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} esxtokend: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{DATUM:Op_id}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Kmxa: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel} opID=%{DATUM:Op_id}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Kmxa: %{WORT:Log_nivel} %{PROG:Log_proceso}\[%{INT:Evento_id}\] \[Originator@6876 sub=%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} vobd: \[%{WORT:Log_nivel}\] %{WORT:Log_id}: \[%{GIERIGE DATEN:Titel}\] %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} configStoreBackup: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} ConfigStore[%{INT:Evento_id}\]: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} Herzschlag: %{WORT:Uptime_estado} %{WORT:Uptime_tiempo}, %{GIERIGE DATEN:MVs_encendidas}; %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} ISCSID (Englisch): %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} schlau: \[%{WORT:Log_nivel}\] %{GIERIGE DATEN:Titel}: %{GIERIGE DATEN:Nachricht}", "<%{POSINT:syslog_pri}>%{TIMESTAMP_ISO8601:Datum} %{HOSTNAME:Host_ESXi} %{PROG:Log_proceso}\[%{INT:Evento_id}\]: %{GIERIGE DATEN:Nachricht}" ] } } } } Ausgabe { wenn ([Art]=="ESXi"){ ElasticSearch (Englisch) { Index => "vmware_esxi-%{+JJJJ. MM.dd}" hosts=> "DIRECCION_IP_ELASTICSEARCH:9200" } } }
Tippen Sie nun auf Logstash, Sobald Sie also damit verbunden sind, Wir erstellen durch eine Konfigurationsdatei , Zum Beispiel: '/etc/logstash/conf.d/vmware-esxi.conf'. Und dort geben wir den Listening-Port an, Wenn wir TCP oder UDP wählen und kommen auch die Filter. Genauso wie ich immer darum bitte, dass die Gurus mich nicht mit Steinen bewerfen, Diese Werte sind jedoch für das Parsen von VMware ESXi-Protokollen gültig 7.0, Natürlich, Verbesserungbar und viel 😉 Gutes, Nachdem wir die Protokolle in Blöcke unterteilt haben, werden wir Ihnen mitteilen, dass wir sie in Elasticsearch speichern werden, und wir setzen einen Index. Denken Sie daran, nicht wie ich zu sein, und fügen Sie auch Anmeldeinformationen hinzu, Das ist: Nutzername & Passwort.
Sobald die Konfigurationsdatei erstellt wurde, Denken Sie daran, den Logstash-Dienst neu zu starten, um die neue Konfiguration neu zu laden. Nach, Wir gehen zu Kibana und sobald die Daten eintreffen, können wir zu "Management" gehen. > "Stack-Verwaltung" > "Kibana" > "Index-Muster" > "Indexmuster erstellen", um das Indexmuster zu erstellen, Wie ich schon sagte, wie gewöhnlich (In diesem Fall und ohne die Anführungszeichen) 'vmware_esxi-*" und wir haben die Daten bereits korrekt in Elasticsearch gespeichert. Wir konnten uns nun von "Discover" aus mit unserem VMware ESXi-Index verbinden und visualisieren, dass er Daten sammelt, die alle Hosts senden…
Und zum Schluss, nach dem Erstellen des Index in Kibana, nun sollten wir in Grafana eine "Datenquelle" erstellen, die gegen unsere Elasticsearch und den neu erstellten VMware ESXi Index verweist. Dann heißt es, Ihrer Fantasie freien Lauf zu lassen, Erstellen eines Dashboards mit verschiedenen Dashboards, mit unterschiedlichen Daten zur Visualisierung, Eine Stilgruppe Sankey um Ursprungs-/Ziel-IPs und den gesendeten Datenverkehr anzuzeigen, im Spaltenformat, in Patt um bestimmte Daten anzuzeigen, z. B. Anmeldeversuche, Richtig, Unrichtig, Laden Sie Fehlerprotokolle auf und versuchen Sie, sie zu beheben, Vergleichen Sie zwischen verschiedenen Hosts die "normale"’ der Häufigkeit bestimmter Info-Logs, Warnung, Fehler….
Wie gewöhnlich, All dies, um Sie zu inspirieren, wenn Sie, Ideen aufgreifen und verbessern, Damit können Sie in Echtzeit sehen, was auf Ihren ESXi's passiert, Einfügen einer automatischen Aktualisierung alle 10 Sekunden ist sehr beeindruckend, Es wird uns auch helfen, die Zusammenfassung des letzten Tages zu analysieren, oder zu wissen, wenn etwas Seltsames passiert... Wie gewöhnlich, Vielen Dank an alle und in vollen Zügen, mit denen Sie diese Art von Inhalten in den sozialen Netzwerken bewegen!!!