Dreamboxen loggen standardmäßig nur in einen Ringbuffer. In verschiedenen Images kann man einstellen, daß statt dessen in ein Logfile geschrieben wird, sinnigerweise sollte das dann auf einem Mount oder einer eingebauten HDD liegen, nicht im Flash.

Wer zu Hause aber eh einen Server laufen hat, der kann darauf die Logs der Dreambox (oder auch anderer Netzwerkgeräte, z.B. Router) empfangen und speichern.

Da dies bei mir der Fall ist, hier ein kleines HOWTO.

Einleitung

Zuerst muß der loghost, also die Maschine die die Logs empfangen soll, konfiguriert werden. Ich verwende syslog-ng, andere Systeme verwenden evtl. andere Optionen und eine andere Syntax in der Config.

Konfiguration Syslog-ng

Meine Netzgeräte sind so konfiguriert, das sie per UDP nach Port 514 loggen. In der syslog-ng.con sieht das explizit so aus:

source network {udp(ip(192.168.55.77) port(514));};

Dieser Eintrag erzeugt eine Quelle mit dem Namen “network”, sie empfängt alle logs die via udp auf dem angegebenen port und interface ankommen, in diesem Fall 192.168.55.77:514 UDP.

Weil diese Quelle ALLE Logs empfängt können wir nicht einfach die Quelle einem File zuweisen und dann munter ‘reinschreiben. Das file enthielte dann ja die Logs ALLER Netzwerkgeräte durcheinander! Wir müssen also filtern, z.B. so:

filter f_host_homer { host("192.168.55.11"); };
filter f_host_bart { host("192.168.55.44"); };

Der Filter f_host_homer liefert also nur Logs, die von IP 192.168.55.11 stammen. Dann erklären wir, wo wir die logs speichern wollen:

destination df_homer {file("/var/log/homer.log");};
destination df_bart {file("/var/log/bart.log");}

Die Einträge, die wir bisher gemacht haben, stehen im Moment noch alleine da, wir müssen sie jetzt mit einem Statement verbinden, damit “Quelle -> Filter -> Ziel” auch “aktiviert” wird:

log {
        source(network);
        filter(f_host_homer);
        destination(df_homer);
};

Nicht vergessen mittels syslog-ng -s configfile die Syntax zu prüfen und dann die Config neu zu laden!

Konfiguration Dreambox

Ich habe das Gemini-Image 4.6 laufen, da geht’s so: Eigentlich sollte man das hier übers blue panel machen, da hatte ich aber ein Problem und es funzte nicht. So gehts: Das Script /usr/scripts/syslogd_script.sh so anpassen:

SYSLOGD_ON=1
KLOGD_ON=1
BUFFERSIZE=0
MARKINT=60
REDUCE=0
LOGFILE=
REMOTE=1
REMOTE_HOST=192.168.1.37
REMOTE_PORT=514

Wer will kann natürlich auch weiterhin in ein File auf der Dreambox loggen, ich wollte es nicht und habs deswegen abgestellt.

Nun sollte nach dem start des syslogd auf der Dreambox das remote logging funktionieren und der loghost die Logs empfangen und loggen.

Wenns nicht tut, fragt einfach im Forum eures Image-Teams.


Geschrieben von Jan Niggemann in Computer und Technik am 29.11.2009