Graylog: Erste Schritte
Wie man mit Graylog beginnt
👋 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 über TCP oder UDP senden. Zusätzlich kann Graylog Logeinträge von einer API, einer Kafka-Warteschlange, einem RabbitMQ-Server und anderen Methoden sammeln.
In diesem Beispiel erstellen wir einen rohen UDP-Input. Öffnen Sie zunächst die Graylog-Oberfläche und navigieren Sie zu "System" und dann "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
- Title: RAW UDP
- Port: 5555
Öffnen Sie als Nächstes ein Terminal auf Ihrem Computer und senden Sie eine UDP-Nachricht an Ihren Graylog-Server. Denken Sie daran, XXXXXX durch Ihren Servicedomainnamen zu ersetzen:
- Auf macOS:
echo "Hello Graylog from UDP" | nc -u -w1 -c <XXXXXX>.stackhero-network.com 5555 - Auf 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 nun Ihre erste Nachricht an Graylog gesendet! Fühlen Sie sich frei, zusätzliche Inputs und Dashboards zu erstellen, die auf Ihre Bedürfnisse zugeschnitten sind. Für weitere Anleitungen finden Sie die offizielle Graylog-Dokumentation nützlich.
Graylog-Codebeispiele
Mehrere Codebeispiele sind in unserem Git-Repository verfügbar. Dieses Repository bietet praktische Implementierungen und zusätzliche Anpassungen, um Ihnen zu helfen, das Beste aus Graylog herauszuholen.
Senden von rsyslog-Logs an Graylog mit TLS-Verschlüsselung
Wenn Sie einen rsyslog-Client haben und Logs sicher an Graylog senden möchten, folgen Sie diesen Schritten:
Aktivieren Sie keine TLS-Option auf dem Input von Graylog. TLS wird direkt von einem Reverse-Proxy auf Ihrer Instanz verwaltet, sodass Graylog es nicht handhabt.
-
Gehen Sie zu Ihrer Graylog-Servicekonfiguration im Stackhero-Dashboard und aktivieren Sie "TLS encryption" für den Syslog TCP-Port 514.
-
Aktualisieren Sie Ihre rsyslog-Konfiguration wie unten beschrieben. Ersetzen Sie
<XXXXXX>.stackhero-network.comdurch Ihren Instanz-Hostnamen:# Definieren Sie das TLS-CA-Zertifikat global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/ssl/certs/ca-certificates.crt" ) # Senden Sie alle Logs an einen entfernten Server # Eine On-Disk-Warteschlange wird für diese Aktion erstellt. Wenn der entfernte Host # offline ist, werden Nachrichten auf die Festplatte gespult und gesendet, wenn 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 Namensprä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 überprüfen Sie die Konfiguration, indem Sie ein Log mit dem Befehl senden:
logger This is a test
Damit ist die Einrichtung abgeschlossen. Sie senden jetzt sicher Logs an Graylog mit TLS-Verschlüsselung!
Fehler "failed to parse field [XXXX] of type [YYYY]" behandeln
Sie könnten auf einen Fehler wie diesen stoßen:
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-Admin-Panel unter System > Overview > Indexer failures sehen.
Dieser Fehler zeigt an, 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 die dynamische Mapping-Funktion von OpenSearch. Wenn ein Log zum ersten Mal gesendet wird, versucht OpenSearch, die Feldtypen zu erraten. Wenn ein Log beispielsweise das Feld time mit dem numerischen Wert 1234 enthält, definiert OpenSearch es als numerisches Feld. Wenn ein weiteres Log mit dem Feld time als "abcd", einem String, gesendet wird, lehnt OpenSearch es ab, da es einen numerischen Wert erwartet.
Denken Sie daran, dass der Feldname time nur zur Veranschaulichung verwendet wird. Es kann sich um jeden Feldnamen und -typ handeln.
Um dieses Problem zu lösen, müssen Sie den Typ neu definieren, den OpenSearch erwartet. Für weitere Informationen lesen Sie bitte die offizielle Graylog-Dokumentation.
OpenSearch-Mapping aktualisieren
Bevor Sie fortfahren, aktivieren Sie den OpenSearch-Zugriff im Stackhero-Dashboard. Navigieren Sie zu Ihrem Graylog-Service und klicken Sie auf die Schaltfläche "Configure", um den OpenSearch-Zugriff zu aktivieren.
Seien Sie vorsichtig mit diesen Änderungen, da falsche Konfigurationen Ihren OpenSearch-Cluster blockieren und möglicherweise zu Datenverlust führen können. Wenn Sie unsicher sind, fahren Sie nicht fort.
-
Definieren Sie Ihr neues Mapping. In diesem Beispiel definieren wir das Feld
timeneu, damit es vom Typ String ist. Verfügbare 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 dem folgenden Curl-Befehl (ersetzen Sie
<XXXXXX>.stackhero-network.comdurch Ihren Instanz-Domainnamen):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 schließlich, ob das Mapping mit diesem Befehl aktualisiert wurde (ersetzen Sie die Domain bei Bedarf):
curl -u 'admin' -X GET 'https://<XXXXXX>.stackhero-network.com/opensearch/graylog_deflector/_mapping?pretty'
Fehler "Unable to write audit log entry" behandeln
Wenn Sie einen Fehler wie diesen 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
tritt dies auf, weil Graylog Enterprise ohne gültige Lizenz aktiviert wurde. Wenn Sie eine Lizenz haben, können Sie diese in der Graylog-Oberfläche eingeben. Wenn Sie keine Lizenz haben, deaktivieren Sie einfach Graylog Enterprise im Stackhero-Dashboard.