Udplogbeat ist eine benutzerdefinierte Beats-Anwendung, die es Entwicklern ermöglichen soll, Ereignisse zu protokollieren, die in Elasticsearch indiziert werden sollen. Protokolleinträge werden an einen lokalen UDP-Socket gesendet und dann über den ausgewählten Ausgang versendet. Der beabsichtigte Zweck dieses Tools besteht darin, es jeder Anwendung zu ermöglichen, Nachrichten einfach lokal zu protokollieren, ohne sie auf die Festplatte zu schreiben, und die verschiedenen integrierten Ausgaben und Funktionen des Beats-Frameworks zu nutzen.
Stellen Sie sicher, dass sich dieser Ordner am folgenden Speicherort befindet: ${GOPATH}/github.com/hartfordfive
Dieser Beat wird nun durch Protologbeat ersetzt. Obwohl dieser Beat einwandfrei funktionieren sollte, wird empfohlen, stattdessen seinen Nachfolger zu verwenden, da er einige Verbesserungen sowie die Möglichkeit bietet, zwischen TCP und UDP zu wählen. An diesem Projekt werden keine Änderungen mehr vorgenommen.
udplogbeat.port
: Der UDP-Port, auf dem der Prozess lauscht (Standard = 5000)udplogbeat.max_message_size
: Die maximal akzeptierte Nachrichtengröße (Standard = 1024)udplogbeat.enable_syslog_format_only
: Boolescher Wert, der angibt, ob nur Syslog-Meldungen akzeptiert werden sollen. (Standard = falsch)udplogbeat.enable_json_validation
: Boolescher Wert, der angibt, ob die JSON-Schemavalidierung für Nachrichten json
-Format angewendet werden soll (Standard = false)udplogbeat.publish_failed_json_invalid
: Boolescher Wert, der angibt, ob JSON-Objekte im Falle einer fehlgeschlagenen Validierung serialisiert gesendet werden sollen. Dadurch wird das Tag _udplogbeat_jspf
hinzugefügt. (Standard = falsch)udplogbeat.json_document_type_schema
: Ein Hash, der aus dem Elasticsearch-Typ als Schlüssel und dem absoluten lokalen Schemadateipfad als Wert besteht.Beispielkonfiguration für einen Syslog-Ersatz
udplogbeat:
port: 5000
max_message_size: 4096
enable_syslog_format_only: false
Beispielkonfiguration, die Schemata für Ereignisse im JSON-Format erzwingt
udplogbeat:
port: 5001
max_message_size: 2048
enable_json_validation: true
json_document_type_schema:
email_contact: "/etc/udplogbeat/app1_schema.json"
stock_item: "/etc/udplogbeat/app2_schema.json"
JSON-Schemas können hier automatisch aus einem Objekt generiert werden: http://jsonschema.net/. Sie können sich auch die enthaltenen Beispielschemata app1_schema.json
und app2_schema.json
als Beispiele ansehen.
Wenn Sie dies als Ersatz für die Protokollierung mit Rsyslog verwenden möchten, werden Ihre Daten mit dieser Methode nicht in einer Datei auf der Festplatte gespeichert.
Wenn udplogbeat aus irgendeinem Grund nicht verfügbar ist, werden an den konfigurierten UDP-Port gesendete Nachrichten niemals verarbeitet oder an Ihren ELK-Cluster gesendet. Wenn Sie eine 100-prozentige Garantie benötigen, dass jede Nachricht mindestens einmal zugestellt wird, ist dies möglicherweise nicht die beste Lösung für Sie.
Wenn ein möglicher Verlust von Protokollereignissen für Sie akzeptabel ist, könnte dies eine vernünftige Lösung für Sie sein.
Damit die udplogbeat-Anwendung Ereignisse akzeptiert, wenn sie sich nicht im Modus „Nur Syslog-Format“ ( enable_syslog_format_only: false ) befinden, müssen diese im folgenden Format strukturiert sein:
[FORMAT]:[ES_TYPE]:[EVENT_DATA]
json
oder plain
. JSON-codierte Einträge werden automatisch analysiert.Beispiel:
Einfach codiertes Ereignis:
plain:syslog:Nov 26 18:51:42 my-web-host01 dhclient: DHCPACK of 10.2.1.2 from 10.2.1.3
JSON-codiertes Ereignis:
json:my_application:{"message":"This is a test JSON message", "application":"my_application", "log_level":"INFO"}
Bitte beachten Sie, dass jedem Protokolleintrag automatisch das aktuelle Datum und die aktuelle Uhrzeit hinzugefügt werden.
Beispiele für Clients in verschiedenen Sprachen finden Sie im Verzeichnis sample_clients/
.
Um Udplogbeat zum Laufen zu bringen und auch die Abhängigkeiten zu installieren, führen Sie den folgenden Befehl aus:
make setup
Es wird für jeden wichtigen Schritt ein sauberer Git-Verlauf erstellt. Beachten Sie, dass Sie den Verlauf bei Bedarf jederzeit neu schreiben können, bevor Sie Ihre Änderungen übertragen.
Um Udplogbeat im Git-Repository zu pushen, führen Sie die folgenden Befehle aus:
git remote set-url origin https://github.com/hartfordfive/udplogbeat
git push origin master
Weitere Informationen zur Weiterentwicklung finden Sie im Beat-Entwicklerleitfaden.
Um die Binärdatei für Udplogbeat zu erstellen, führen Sie den folgenden Befehl aus. Dadurch wird im selben Verzeichnis eine Binärdatei mit dem Namen udplogbeat generiert.
make
Oder um die gezippten Binärdateien für OSX, Windows und Linux zu erstellen:
./build_os_binaries.sh „[VERSION_NUMBER]“
Diese werden im Verzeichnis bin/
abgelegt.
Um Udplogbeat mit aktivierter Debugging-Ausgabe auszuführen, führen Sie Folgendes aus:
./udplogbeat -c udplogbeat.yml -e -d "*"
Um Udplogbeat zu testen, führen Sie den folgenden Befehl aus:
make testsuite
alternativ:
make unit-tests
make system-tests
make integration-tests
make coverage-report
Die Testabdeckung wird im Ordner ./build/coverage/
gemeldet.
Jeder Beat verfügt über eine Vorlage für die Zuordnung in Elasticsearch und eine Dokumentation für die Felder, die automatisch basierend auf etc/fields.yml
generiert wird. Um etc/udplogbeat.template.json und etc/udplogbeat.asciidoc zu generieren
make update
Führen Sie die folgenden Befehle aus, um den Udplogbeat-Quellcode zu bereinigen:
make fmt
make simplify
Führen Sie Folgendes aus, um das Build-Verzeichnis und die generierten Artefakte zu bereinigen:
make clean
Um Udplogbeat aus dem Git-Repository zu klonen, führen Sie die folgenden Befehle aus:
mkdir -p ${GOPATH}/github.com/hartfordfive
cd ${GOPATH}/github.com/hartfordfive
git clone https://github.com/hartfordfive/udplogbeat
Weitere Informationen zur Weiterentwicklung finden Sie im Beat-Entwicklerleitfaden.
Die Beat-Frameworks bieten Tools zum Crosskompilieren und Packen Ihres Beats für verschiedene Plattformen. Dies erfordert Docker und Vendoring wie oben beschrieben. Führen Sie den folgenden Befehl aus, um Pakete Ihres Beats zu erstellen:
make package
Dadurch werden alle für den Erstellungsprozess erforderlichen Bilder abgerufen und erstellt. Der Abschluss des gesamten Vorgangs kann mehrere Minuten dauern.
Alain Lefebvre <hartfordfive 'at' gmail.com>
Untersteht der Apache-Lizenz, Version 2.0. Copyright (c) 2016 Alain Lefebvre