Wir haben das Problem, dass wir Server haben die einfach Abstürzen ohne einem Meldung im /var/log/kernel.log zu hinterlassen. Wir haben nun das Kernel Loggin Modul „netconsole“ verwendet, um die Logzeilen direkt vom Kernel via UDP verschicken zu können.
Dafür würde auf Empfänger und Sender Seite folgendes eingerichtet.
Empfänger:
Möchte man das ganze nicht Reboot fest machen und für mehrere Ports/Server einrichten kann man auch einfach den socat Befehl von Hand ausführen. Hier wird nun beschreiben wie wir einen dynamischer Systemd Service verwenden.
/etc/systemd/system/netconsole@.service
[Unit]
Description=netconsole
After=network.target remote-fs.target nss-lookup.target
PartOf=netconsole.service
[Service]
Type=simple
Environment="LANG=C"
ExecStart=/usr/bin/socat OPEN:/var/log/netconsole-%i,append udp4-listen:%i,reuseaddr,fork
Restart=always
[Install]
WantedBy=multi-user.target
/etc/systemd/system/netconsole.service
[Unit]
Description=netconsole
Wants=netconsole@10001.service netconsole@10002.service
[Service]
RemainAfterExit=yes
ExecStart=/bin/true
[Install]
WantedBy=multi-user.target
An dieser Stelle kann das der Punkt „Wants“ beliebig anpassen werden. Der Zahlen wert hinter dem @xxxx ist der übergebene Port.
Abschließend müssen das systemd noch aktiviert werden:
systemctl enable netconsole.service
systemctl start netconsole.service
systemctl status netconsole.service
● netconsole.service - netconsole
Loaded: loaded (/etc/systemd/system/netconsole.service; enabled; vendor preset: enabled)
Active: active (exited) since Mo 2017-05-08 10:54:23 CEST; 4s ago
Process: 11124 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
Main PID: 11124 (code=exited, status=0/SUCCESS)
Mai 08 10:54:23 server systemd[1]: Started netconsole.
Sender:
/etc/modprobe.d/netconsole.conf
options netconsole netconsole=10000@192.168.0.1/br0,10001@192.168.0.9/00:00:00:00:00
Dann kann das Kernel Modul geladen werden:
modprobe netconsole
Möchte man das ganze reboot fest machen, muss das Modul in /etc/modules
eingetragen werden:
echo "netconsole" >> /etc/modules
Zum Testen erzeugt folgender Befehl einen Eintrag im Kernel log, als auch auf dem Empfänger Server:
echo h > /proc/sysrq-trigger
Update 17.05.2017: für die Verwendung von CentOS7 wurde das Script von nc auf socat umgebaut.