RFC 5424 · · Proposed Standard
Syslog, endlich mit echtem Zeitstempel.
Der offizielle Titel lautet "The Syslog Protocol." Worüber der RFC wirklich entscheidet: eine saubere Struktur für Log-Nachrichten, präzise Zeitstempel, maschinenlesbare Felder, damit der Ereignisstrom jedes Geräts aufhört, ein Haufen Freitext zu sein.
- Status
- Proposed Standard
- Ersetzt
- RFC 3164
Geschrieben von Noel Lang · IT-Trainer
Kurzfassung
RFC 5424 ist das moderne Syslog-Nachrichtenformat. Es ersetzte das lose BSD-Format von RFC 3164 durch einen präzisen RFC-3339-Zeitstempel (Jahr, Zeitzone, Sekundenbruchteile), klar benannte Kopf-Felder und einen optionalen Abschnitt für strukturierte Daten, den Werkzeuge parsen können. Es standardisiert, wie eine Log-Zeile aussieht, getrennt davon, wie sie transportiert wird.
Welches Problem er löst
Jahrzehntelang war “Syslog” gar kein echter Standard. Es war einfach das, was
BSD-Unix in den 1980ern zufällig tat, von Maschine zu Maschine kopiert, bis die
halbe Welt es sprach.
RFC 3164
kam 2001 dazu und schrieb dieses
Verhalten nur auf, mit allen Macken. Es war Informational: ein Obduktionsbericht,
kein Regelwerk. Sein schlimmstes Erbe ist der Zeitstempel. Oct 11 22:14:15 hat
kein Jahr und keine Zeitzone, was fast nutzlos ist, sobald du Logs von Servern in
drei Ländern sammelst und herausfinden willst, was wann passiert ist.
RFC 5424 ist der bewusste Neubau. Dieselbe Idee, eine kurze Zeile, die ein Ereignis beschreibt, aber mit einem echten, eindeutigen Format: ein vollständiger Zeitstempel, benannte Felder für Host, Anwendung und Prozess, und ein optionaler Platz für strukturierte Daten, die Maschinen wirklich parsen können. Es definiert, wie eine Log-Zeile aussieht, und überlässt betont getrennten Begleitdokumenten, wie sie reist.
Der Prioritätsstempel, entschlüsselt
Jede Syslog-Zeile beginnt mit einer kryptischen Zahl in spitzen Klammern, etwa
<165> oder <34>. Das ist der Teil, der alle
verwirrt, und er ist wunderbar einfach, sobald man ihn durchschaut. Diese eine
Zahl kodiert zwei Dinge zugleich: welches Subsystem die Nachricht schickte (die
Facility) und wie schlimm sie ist (die Severity).
Denk an interne Hauspost. Jedes Memo bekommt einen Stempel, der zugleich sagt, aus welcher Abteilung es kommt und wie dringend es ist, und die Poststelle sortiert danach, ohne ein Wort zu lesen. Syslog macht dasselbe, nur quetscht es beide Hälften in eine einzige kleine Ganzzahl, um Platz zu sparen, eine sehr 1980er-Entscheidung.
Die Formel lautet Facility mal 8, plus Severity.
Die Severity ist ein Wert von 0 bis 7, passt also in die untersten drei Bits;
alles darüber ist die Facility. So entschlüsselt sich <165> als
Facility 20 (local4) mal 8, also 160, plus Severity 5 (notice): 165. Und
<34> ist Facility 4 (security) mal 8, plus Severity 2
(critical). Sobald du diese kleine Division im Kopf kannst, sieht die Zahl am
Zeilenanfang nicht mehr aus wie Störrauschen.
Die acht Severity-Level
Die Hälfte der Prioritätszahl, nach der Leute tatsächlich suchen. Widersinnig ist: kleiner ist schlimmer. 0 ist die Katastrophe, 7 ist Geplauder.
| Severity | Was sie bedeutet |
|---|---|
| 0 · Emergency | System unbenutzbar. Die Stufe, bei der um 3 Uhr nachts der Pager losgeht. In der Praxis loggt kaum etwas so hoch. |
| 1 · Alert | Sofortiges Handeln nötig: ein Zustand, der jetzt einen Menschen braucht, etwa eine Datenbank ohne freien Speicherplatz. |
| 2 · Critical | Kritische Zustände. Eine Komponente ist ausgefallen, zum Beispiel ein Hardwarefehler oder eine verlorene Primärverbindung. |
| 3 · Error | Fehlerzustände. Etwas hat nicht funktioniert: eine Anfrage schlug fehl, eine Datei ließ sich nicht schreiben. Die alltägliche "etwas ist kaputt"-Stufe. |
| 4 · Warning | Noch nicht kaputt, aber auf dem Weg dorthin: eine Platte zu 85% voll, ein veralteter Aufruf, ein Retry, der beim zweiten Versuch klappte. |
| 5 · Notice | Normal, aber bemerkenswert. Routineereignisse, die man behalten will, etwa ein startender Dienst oder ein Neuladen der Konfiguration. |
| 6 · Informational | Der gewöhnliche Betriebskommentar: eine ausgelieferte Anfrage, ein fertiger geplanter Job. |
| 7 · Debug | Ausführliche Details, nur nützlich, wenn du einem Bug nachjagst. "Debug" heißt detailliert, nicht unwichtig. |
Die andere Hälfte der Zahl, die Facility, sagt, wer spricht: 0 ist der Kernel, 2
das Mailsystem, 3 sind System-Daemons, 4 ist die Authentifizierung. Die acht Werte
von 16 bis 23 sind als local0 bis local7 reserviert, damit du sie deinen
eigenen Anwendungen zuweisen kannst, weshalb so viele selbstgebaute Dienste als
local0 loggen. Die Facilities sind der am wenigsten standardisierte Teil von
Syslog; die Severities darüber sind der Teil, über den sich alle einig sind.
Die Anatomie einer Zeile
Eine Zeile, neun Felder, in fester Reihenfolge. Der Kopf reicht bis zu den
strukturierten Daten, dann der optionale key=“value”-Block, dann
die menschenlesbare Nachricht. Der Zeitstempel ist ein striktes Profil von
RFC 3339
, das Feld, das RFC 5424 am stärksten vom alten Format
abhebt.
5424 gegen 3164, Feld für Feld
Am klarsten sieht man, was RFC 5424 behoben hat, wenn man es neben das ersetzte Format legt. Der Zeitstempel ist die Hauptänderung.
| Was sich änderte | Von 3164 zu 5424 |
|---|---|
| Zeitstempel | Alt: Oct 11 22:14:15, kein Jahr, keine Zeitzone, ganze Sekunden. Neu: ein striktes RFC-3339-Format mit Jahr, Zeitzonen-Offset und Sekundenbruchteilen. Der beste einzelne Grund für den Umstieg. |
| Kopf-Felder | Alt: ein loses tag:, an die Nachricht geklebt. Neu: getrennte, benannte Felder für Version, Hostname, App-Name, Prozess-ID und Nachrichten-ID. |
| Maschinendaten | Alt: keine, alles war Freitext. Neu: ein optionaler Block strukturierter Daten aus key="value"-Paaren, die Werkzeuge ohne Raten lesen können. |
| Zeichensatz | Alt: ASCII per Gewohnheit, nie wirklich festgelegt. Neu: UTF-8, mit einer Byte-Order-Mark, die es ausdrücklich ankündigt. |
| Rang | Alt: RFC 3164 war Informational, eine Beschreibung dessen, was Leute ohnehin taten. Neu: RFC 5424 ist ein Proposed Standard, eine Spezifikation zum Bauen. |
Was der RFC wirklich sagt
Das Original ist rund 30 Seiten lang und dichter als 1918, aber die Landkarte ist kurz. Wo du nachschaust, falls du an die Quelle gehst:
| Abschnitt | In einfachen Worten |
|---|---|
| 1–5 · Einleitung & Begriffe | Warum das alte Format nicht genügte, und das Vokabular: Facility, Severity, die Teile einer Nachricht. |
| 6 · Nachrichtenformat | Das Herzstück: die PRI, die Version und jedes Kopf-Feld in fester Reihenfolge. Wenn du einen Abschnitt liest, dann diesen. |
| 6.2.1 · PRI | Die Zahl in spitzen Klammern und die Formel Facility × 8 + Severity, ausbuchstabiert. |
| 6.3 · Strukturierte Daten | Wie die [id key="value"]-Blöcke aufgebaut sind, und warum IDs eine @enterprise-Nummer tragen, damit sich keine Feldnamen in die Quere kommen. |
| 8 · Sicherheit | Der ehrliche Teil: Syslog allein hat keine Authentifizierung und keine Zustellgarantie. Genau dafür gibt es die Transport-Begleiter. |
Was Leute falsch verstehen
-
"Syslog ist die Datei /var/log/syslog."
Nein. Syslog ist ein Nachrichtenformat und ein Protokoll, keine Datei. /var/log/syslog ist nur ein Ort, an den ein bestimmter Daemon auf einer bestimmten Linux-Distribution zufällig schreibt. Dieselben Nachrichten reisen übers Netz, landen in journald, gehen an ein SIEM oder berühren nie eine Datei. RFC 5424 definiert die Zeile, nicht das Ziel.
-
"Port 514 steht in RFC 5424."
Tut er nicht. RFC 5424 definiert nur das Nachrichtenformat und sagt bewusst nichts über Transport. Reines UDP auf Port 514 kommt aus RFC 5426, Syslog über TLS auf Port 6514 aus RFC 5425. Das Format mit seinem Transport zu verwechseln ist das mit Abstand häufigste Syslog-Missverständnis.
-
"RFC 3164 war der Syslog-Standard."
War er nie. RFC 3164 ist Informational, was in IETF-Sprache heißt "so machen es die Leute schon", nicht "so musst du es machen". Er dokumentierte BSD-Syslog nachträglich, im Jahr 2001, Jahrzehnte nachdem sich das Format durchgesetzt hatte. RFC 5424 ist die erste echte Syslog-Spezifikation auf dem Standards Track. Der Vorgänger beschrieb, der Nachfolger schreibt vor.
-
"Severity debug heißt, die Nachricht ist unwichtig."
Debug heißt detailliert, nicht belanglos. Severity bewertet, wie dringend eine Zeile für den Betrieb ist, und debug (7) sitzt ganz unten, weil sie im Normalbetrieb Rauschen ist. Aber wenn du einen Bug jagst, sind oft genau diese Zeilen die einzigen, die zählen. Niedrige Severity meint Routine, nicht Wertlosigkeit.
Wo dir RFC 5424 begegnet
Du hast heute mit ziemlicher Sicherheit Syslog erzeugt, ohne eine Konfigurationsdatei anzufassen. Ein Feldführer:
| Wo du es triffst | Was es ist |
|---|---|
| rsyslog / syslog-ng | Die zwei Daemons, die Syslog auf den meisten Linux-Servern sammeln und weiterleiten. Beide sprechen das RFC-5424-Format; bei rsyslog muss man dafür ein Template aktivieren. |
| docker --log-driver=syslog | Dockers Syslog-Log-Treiber verschickt die Container-Ausgabe als Syslog, mit --log-opt syslog-format=rfc5424 für das moderne Format. |
| Kubernetes-Log-Shipper | Node-Agents wie Fluent Bit und Vector parsen Syslog und senden es auf dem Weg in den zentralen Speicher neu aus. |
| Firewalls & Switches | Cisco, Fortinet, MikroTik und Co. senden Syslog für jedes Ereignis. Vieles davon ist noch im 3164-Stil, weshalb Parser beide beherrschen müssen. |
| Dein SIEM | Splunk, Elastic und QRadar nehmen Syslog als Primär-Feed auf. Strukturierte Daten sind es, die sie echte Felder indexieren lassen statt Text zu durchsuchen. |
Fragen, die wirklich gestellt werden
Was sind die Syslog-Severity-Level? +
Syslog kennt acht Severity-Level, vom dringendsten zum harmlosesten: 0 Emergency, 1 Alert, 2 Critical, 3 Error, 4 Warning, 5 Notice, 6 Informational, 7 Debug. Je kleiner die Zahl, desto schwerwiegender. Es sind dieselben acht Werte, die RFC 5424 aus Jahrzehnten BSD-Syslog geerbt hat, und sie bilden die zweite Hälfte der Prioritätszahl am Anfang jeder Zeile.
Was ist der Unterschied zwischen RFC 5424 und RFC 3164? +
RFC 3164 beschrieb nur das lose, faktische BSD-Syslog-Format, samt seines ungenauen Zeitstempels ohne Jahr und ohne Zeitzone. RFC 5424 ist ein echter Neuentwurf: ein RFC-3339-Zeitstempel mit Jahr, Zeitzone und Sekundenbruchteilen, dazu strukturierte Datenfelder. Neue Systeme sollten 5424 nutzen, auch wenn viele Geräte weiterhin das alte 3164-Format senden.
Was sind strukturierte Daten in RFC 5424? +
Ein optionaler, maschinenlesbarer Teil der Nachricht aus benannten Parametern, gruppiert unter einer ID, etwa zur Herkunft oder zu Metadaten des Ereignisses. Werkzeuge können damit konkrete Werte auslesen, statt Freitext zu durchsuchen, ohne dass die menschenlesbare Nachricht verloren geht.
Was ist der Unterschied zwischen Port 514 und 6514? +
Port 514 über UDP ist der klassische, unverschlüsselte Syslog-Transport, definiert in RFC 5426. Port 6514 ist Syslog über TLS, definiert in RFC 5425, mit Verschlüsselung und zuverlässiger Zustellung. Keiner der Ports steht in RFC 5424 selbst, der nur das Nachrichtenformat regelt. Nutze 6514, wenn die Logs sensibel sind oder nicht verloren gehen dürfen.
Sollte Syslog TCP oder UDP verwenden? +
UDP auf Port 514 ist die traditionelle Wahl und passt für großes, unkritisches Log-Volumen, wo eine gelegentlich verlorene Nachricht nicht schadet. Für Logs, die nicht verloren gehen dürfen oder unsichere Netze überqueren, sind TCP oder Syslog über TLS (RFC 5425, Port 6514) die bessere Wahl. RFC 5424 definiert die Nachricht unabhängig vom Transport, du kannst also wechseln, ohne das Format zu ändern.
Verweise hierher
Andere Erklärseiten auf dieser Website, die auf diesen RFC zurückverweisen:
Wie RFC 5424 zusammenhängt
Was vorher kam
-
RFC 3164 Informational, aus dem Jahr 2001, schrieb es nur auf, was BSD-Syslog ohnehin schon tat. RFC 5424 löst es ab, und trotzdem sendet die halbe Welt bis heute den 3164-Dialekt: der seltene Fall, in dem der pensionierte Vorgänger nie wirklich gegangen ist.
Womit es zusammenspielt
-
RFC 3339 · liefert den Zeitstempel
Das Zeitstempel-Format
RFC 5424 nutzt ein striktes Profil von RFC 3339 für seinen Zeitstempel, genau die Änderung, die Syslog endlich ein Jahr, eine Zeitzone und Sekundenbruchteile gab.
-
RFC 5426 · transportiert es über UDP
Syslog über UDP
Definiert den klassischen UDP-Transport auf Port 514: schnell, verbindungslos und verlustbehaftet. Die eine Hälfte der Transport-Trennung, die RFC 5424 bewusst offenließ.
-
RFC 5425 · transportiert es über TLS
Syslog über TLS
Definiert den verschlüsselten, zuverlässigen Transport auf Port 6514. RFC 5424 überlässt die Zustellung Begleitern wie diesem, damit Format und Leitung sich getrennt weiterentwickeln können.
-
RFC 2119 · definiert sein MUST/SHOULD
Die Normwörter
Die MUST, SHOULD und MAY, die den Regeln von RFC 5424 ihre exakte Verbindlichkeit geben, wie bei jedem modernen Standards-Track-RFC.
Teil eines geführten Clusters: Die Betriebs-RFCs fürs Netzwerk, erklärt