OpenWrt: Logs via syslog im RFC5424-Format an Grafana Alloy und Loki senden
Um die Logs meines OpenWrt-Routers auszuwerten, sende ich die Log-Einträge mittels syslog an Grafana Alloy. Alloy verarbeitet diese und sendet sie weiter an Grafana Loki, um sie dann mittels Grafana auszuwerten. Standardmäßig sendet OpenWrt die Log-Einträge anscheinend aber nur im RFC3164-Format. Für die Verarbeitung mit Alloy wollte ich diese aber im RFC5424-Format haben. Um das zu erreichen, kann man bspw. syslog-ng verwenden. Für OpenWrt gibt es ein entsprechendes Paket im offiziellen OpenWrt-Repository. Da ich auf meinem Homelab-Server aber syslog-ng sowieso bereits laufen habe, wollte ich es nicht unnötig auf meinem OpenWrt-Router installieren. Deshalb sende ich nun einfach die OpenWrt RFC3164-Log-Einträge an syslog-ng meines Homelab-Servers, der sie dann im RFC5424-Format an Alloy weiterreicht. Was ich dafür tun musste, erfahrt ihr in folgendem Beitrag
OpenWrt - Logging konfigurieren
Über die Weboberfläche LuCI lässt sich das Logging von OpenWrt unter System - System - Logging konfigurieren. In meinem Fall habe ich OpenWrt so konfiguriert, dass die Logs an 10.10.10.100:1514 per UDP gesendet werden. Hierbei handelt es sich um meinen Homelab-Server, dessen syslog-ng auf dem Port 1514 lauscht.

syslog-ng konfigurieren
Die Konfigurationsdatei /etc/syslog-ng/syslog-ng.conf habe ich wie folgt angepasst:
@version: 4.11
@include "scl.conf"
source s_journal {
systemd-journal();
};
source s_openwrt {
syslog(
ip("10.10.10.100")
port(1514)
transport("udp")
);
};
destination d_alloy {
syslog(
"10.10.100.100"
transport("udp")
port(1514)
);
};
log {
source(s_journal);
destination(d_alloy);
};
log {
source(s_openwrt);
destination(d_alloy);
};In meinem Fall sende ich hier sowohl die eingehenden OpenWrt-Logs als auch die Logs meines Homelab-Servers an Alloy.
Grafana - Logs auswerten
Wenn alles korrekt konfiguriert ist, lassen sich die OpenWrt-Logs in Grafana auswerten:

Ein Vorteil im Genesatz zur Verwendung von syslog-ng direkt auf meinem OpenWrt-Router ist zudem, dass logread nicht durch die eigene Variante von syslog-ng überschrieben wird. Hier hatte dann das Problem, dass ich in OpenWrt selbst die Logs nicht mehr einsehen konnte. Mit der jetzigen Lösung ist das auch weiterhin problemlos möglich:

Fazit
Solltet ihr eure OpenWrt-Logs auch im syslog RFC5425-Format benötigen, ist syslog-ng eine einfache Möglichkeit, dies umzusetzen.