#!/coding/blatt
Sammelsurium mit Schwerpunkten Linux & IT-Sicherheit

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

Folgende Software bzw. Hardware wurde verwendet:
  • Router Flint 2 (GL-MT6000) mit OpenWrt v25.12.4
  • Beelink SER5 mit Arch Linux
  • syslog-ng
  • Grafana Alloy
  • Grafana Loki
  • Grafana

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.

OpenWrt: syslog aktivieren

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);
};
Datei: /etc/syslog-ng/syslog-ng.conf

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:

Grafana: OpenWrt-Logs einsehen

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:

OpenWrt: Logs in LuCI einsehen

Fazit

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