Meine Lösung für Raspbian 8.0 (Jessie) basiert auf der Protokollierung im RAM
Hierfür gibt es bereits das Ramlog Debian-Paket und Installationsanweisungen . Dies hat jedoch bei mir nicht funktioniert (Starten von ramlog-tmpfs 2.0.0: Fehler: / var / log wird verwendet ... [fehlgeschlagen]).
Mit habe iotop -bktoqqq
ich den häufigsten Schreibzugriff herausgefunden. Es stellt sich heraus, dass auch / var / cache / samba / häufig beschrieben wird. Dies muss also zusätzlich zu / var / tmp /, wo sich die neuen Protokolldateien befinden, auch in den Arbeitsspeicher gehen.
1. Erstellen Sie die Ramdisk
Also müssen zuerst diese beiden Einträge hinzugefügt werden zu
/etc/fstab
:
tmpfs /var/tmp tmpfs size=10M,nodev,nosuid 0 0
tmpfs /var/cache/samba tmpfs size=5M,nodev,nosuid 0 0
2. Das log2disk-Skript
Wir müssen dieses Skript speichern, in /usr/local/bin/log2disk
dem der Inhalt aller Protokolldateien /var/tmp/log/
an die Dateien in angehängt und gelöscht wird /var/log/
.
#!/bin/sh
# Author: Frank Breitling <frank.breitling@gmx.de>
DESC="Moving contents from /var/tmp/log/ to /var/log/"
if [ $(id -u) -ne 0 ]
then echo "Please run as root"
exit
fi
echo $DESC
exec >>/var/log/log2disk.log 2>&1
date
cd /var/tmp/
for i in log/*; do
basename $i
cat $i >>/var/$i
>$i
done
und machen es ausführbar sudo chmod +x /usr/local/bin/log2disk
.
3. Hinzufügen zu crontab
Wir möchten dieses Skript alle 3 Stunden ausführen und diese Zeile dem System hinzufügen /etc/crontab
10 */3 * * * root /usr/local/bin/log2disk
(Vergessen Sie nicht eine letzte Zeile, die von crontab benötigt wird.)
4. Installieren Sie den log2disk.service
Wir müssen einen systemd-Dienst erstellen /lib/systemd/system/log2disk.service
, der dieses Skript vor dem Herunterfahren und Neustarten ausführt, damit der Inhalt der Protokolldatei erhalten bleibt:
[Unit]
Description=Write log files to disk
RequiresMountsFor=/
Before=rsyslog.service
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/bin/true
ExecStop=/usr/local/bin/log2disk
[Install]
WantedBy=multi-user.target
und installieren Sie es mit sudo systemctl enable log2disk
.
5. Auswahl der Protokolldateien für RAM
Jetzt können wir feststellen, /etc/rsyslog.conf
welche Protokolldateien im RAM aufbewahrt werden sollen. Diese Dateien sind auth.log, syslog, daemon.log, user.log and messages
und wir ersetzen für jeden ihrer Einträge den log/
Pfad tmp/log/
wie folgt :
auth,authpriv.* /var/tmp/log/auth.log
Erledigt!
Nach einem Neustart protokolliert das System nun die häufigsten Protokolleinträge bei /var/tmp/log
und synchronisiert sie alle 3 Stunden und vor dem Herunterfahren wieder.
Wir können iotop
wieder verwenden, um eine deutlich reduzierte Schreibaktivität zu finden. Wir sollten uns jedoch keine Sorgen machen, dass die grüne ACT-LED blinkt . Anscheinend ist dies keine gute Anzeige für den Schreibzugriff.