Graylog: Erste Schritte
Wie Sie mit Graylog starten
👋 Willkommen bei der Stackhero-Dokumentation!
Stackhero bietet eine einsatzbereite Graylog Cloud-Lösung, die zahlreiche Vorteile bietet, darunter:
- Unbegrenzter und dedizierter SMTP-E-Mail-Server inklusive.
- Mühelose Updates mit nur einem Klick.
- Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://logs.ihre-firma.com).
- Optimale Performance und robuste Sicherheit durch eine private und dedizierte VM.
Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Graylog Cloud Hosting-Lösung von Stackhero auszuprobieren!
Erstellen eines ersten Inputs in Graylog
Ein Input ist der Endpunkt, an dem Graylog Ihre Logs empfängt. Sie können Logs per TCP oder UDP senden. Zusätzlich kann Graylog Logeinträge über eine API, eine Kafka-Queue, einen RabbitMQ-Server und weitere Methoden sammeln.
In diesem Beispiel erstellen wir einen Raw UDP Input. Öffnen Sie dazu die Graylog-Oberfläche und navigieren Sie zu "System" und dann zu "Inputs". Wählen Sie "Raw/Plaintext UDP" und klicken Sie auf "Launch new input". Konfigurieren Sie Ihren Input mit den folgenden Werten und bestätigen Sie das Formular:
- Node: Wählen Sie Ihren Node aus
- Title: RAW UDP
- Port: 5555
Öffnen Sie anschließend ein Terminal auf Ihrem Computer und senden Sie eine UDP-Nachricht an Ihren Graylog-Server. Ersetzen Sie dabei XXXXXX durch den Domainnamen Ihres Dienstes:
- Unter macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Unter Linux:
echo "Hello Graylog from UDP" | nc -u -w1 <XXXXXX>.stackhero-network.com 5555
Nachdem Sie die Nachricht gesendet haben, kehren Sie zu Graylog zurück und klicken Sie auf "Search". Sie sollten Ihre Nachricht sehen 🎉
Herzlichen Glückwunsch, Sie haben Ihre erste Nachricht an Graylog gesendet! Sie können nun weitere Inputs und Dashboards erstellen, die auf Ihre Anforderungen zugeschnitten sind. Für weiterführende Informationen empfehlen wir die offizielle Graylog-Dokumentation.
Graylog Code-Beispiele
Mehrere Code-Beispiele finden Sie in unserem Git-Repository. Dieses Repository bietet praxisnahe Implementierungen und zusätzliche Anpassungen, um das Beste aus Graylog herauszuholen.
Rsyslog-Logs mit TLS-Verschlüsselung an Graylog senden
Wenn Sie einen rsyslog-Client nutzen und Logs sicher an Graylog senden möchten, gehen Sie wie folgt vor:
Aktivieren Sie keine TLS-Option am Graylog-Input. TLS wird direkt von einem Reverse Proxy auf Ihrer Instanz verwaltet, sodass Graylog dies nicht übernimmt.
-
Gehen Sie in die Konfiguration Ihres Graylog-Dienstes im Stackhero-Dashboard und aktivieren Sie "TLS-Verschlüsselung" für den Syslog TCP-Port 514.
-
Aktualisieren Sie Ihre rsyslog-Konfiguration wie unten beschrieben. Ersetzen Sie
<XXXXXX>.stackhero-network.comdurch den Hostnamen Ihrer Instanz:# TLS CA-Zertifikat definieren global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Alle Logs an einen Remote-Server senden # Für diese Aktion wird eine On-Disk-Queue erstellt. Ist der Remote-Host # nicht erreichbar, werden Nachrichten auf die Festplatte geschrieben und gesendet, sobald er wieder verfügbar ist # Siehe https://www.rsyslog.com/doc/v8-stable/configuration/actions.html # und https://www.rsyslog.com/doc/v8-stable/configuration/modules/omfwd.html *.* action( type="omfwd" target="<XXXXXX>.stackhero-network.com" port="514" protocol="tcp" KeepAlive="on" KeepAlive.Interval="30" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" ResendLastMSGOnReconnect="on" queue.filename="fwdRule1" # eindeutiges Präfix für Spool-Dateien queue.type="LinkedList" queue.maxDiskSpace="256m" queue.saveOnShutdown="on" action.resumeRetryCount="-1" action.resumeInterval="30" ) -
Starten Sie Ihren rsyslog-Dienst neu und prüfen Sie die Konfiguration, indem Sie einen Log mit folgendem Befehl senden:
logger This is a test
Damit ist die Einrichtung abgeschlossen. Sie senden nun Ihre Logs sicher per TLS-Verschlüsselung an Graylog!
Fehler "failed to parse field [XXXX] of type [YYYY]" beheben
Es kann vorkommen, dass Sie einen Fehler wie diesen sehen:
org.opensearch.index.mapper.MapperParsingException: failed to parse field [time] of type [long] in document with id 'xxxx'
Sie können diesen Fehler in den Logs im Stackhero-Dashboard oder im Graylog-Adminbereich unter System > Overview > Indexer failures einsehen.
Dieser Fehler bedeutet, dass ein Log mit einem Wert für das Feld time gesendet wurde, der nicht dem erwarteten Typ entspricht (in diesem Fall ein numerischer Wert vom Typ "long"). Graylog nutzt das dynamische Mapping-Feature von OpenSearch. Wenn ein Log zum ersten Mal gesendet wird, versucht OpenSearch, die Feldtypen zu erkennen. Enthält ein Log beispielsweise das Feld time mit dem numerischen Wert 1234, wird es als numerisches Feld definiert. Wird später ein Log mit dem Feld time und dem Wert "abcd" (also ein String) gesendet, lehnt OpenSearch dies ab, da ein numerischer Wert erwartet wird.
Beachten Sie, dass der Feldname time hier nur als Beispiel dient. Es kann sich um beliebige Feldnamen und Typen handeln.
Um dieses Problem zu beheben, müssen Sie den von OpenSearch erwarteten Typ neu definieren. Weitere Informationen finden Sie in der offiziellen Graylog-Dokumentation.
OpenSearch-Mapping aktualisieren
Bevor Sie fortfahren, aktivieren Sie den OpenSearch-Zugang im Stackhero-Dashboard. Navigieren Sie zu Ihrem Graylog-Dienst und klicken Sie auf die Schaltfläche "Konfigurieren", um den OpenSearch-Zugang zu aktivieren.
Seien Sie vorsichtig mit diesen Änderungen, da eine fehlerhafte Konfiguration Ihren OpenSearch-Cluster blockieren und zu Datenverlust führen kann. Wenn Sie unsicher sind, führen Sie die Änderungen nicht durch.
-
Definieren Sie Ihr neues Mapping. In diesem Beispiel definieren wir das Feld
timeals Typ string. Eine Übersicht der verfügbaren Typen finden Sie in der OpenSearch Feldtypen-Dokumentation. -
Speichern Sie den folgenden Inhalt in einer Datei namens
graylog-custom-mapping.json:{ "template": "graylog_*", "mappings": { "message": { "properties": { "time": { "type": "string", "index": "not_analyzed" } } } } } -
Senden Sie diese Datei mit folgendem curl-Befehl (ersetzen Sie
<XXXXXX>.stackhero-network.comdurch den Domainnamen Ihrer Instanz):curl -u 'admin' -X PUT -d @'graylog-custom-mapping.json' -H 'Content-Type: application/json' 'https://<XXXXXX>.stackhero-network.com/opensearch/_template/graylog-custom-mapping?pretty'Sie sollten eine Antwort wie diese erhalten:
{ "acknowledged": true } -
Überprüfen Sie abschließend, ob das Mapping aktualisiert wurde, mit folgendem Befehl (passen Sie die Domain ggf. an):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
Fehler "Unable to write audit log entry" beheben
Wenn Sie eine Fehlermeldung wie diese sehen:
Unable to write audit log entry because there is no valid license
oder
Not running cleanup for auditlog entries in MongoDB because there is no valid license
dann wurde Graylog Enterprise aktiviert, ohne dass eine gültige Lizenz hinterlegt ist. Wenn Sie eine Lizenz besitzen, können Sie diese in der Graylog-Oberfläche eintragen. Falls Sie keine Lizenz haben, deaktivieren Sie Graylog Enterprise einfach im Stackhero-Dashboard.