Domotic and stupid geek stuff

Fichier de log tournant dans Domoticz

Je souhaitais me laisser la possibilités d’avoir accès aux logs de domoticz jusqu’à une semaine en arrière, et dans le but de réduire au maximum les accès lecture/écriture sur ma carte SD mon fichier de log de domoticz se trouve dans /tmp qui lui même est uniquement stocké en RAM. De ce fait il n’y a pas un accès permanent en écriture sur ma carte SD dû à ce fichier. Pour éviter que mon répertoire /tmp ne grossisse trop, j’ai créé un petit script qui permet de sauvegarder quotidiennement les logs domoticz dans une répertoire de sauvegarde.

Voici comment procéder :

Etape 1 : définir le point de montage /tmp en ram au lieu de disque

Pour éviter de trop solliciter la carte SD et donc à terme la détériorer, nous allons utiliser un « bout » de ram comme espace de stockage temporaire. Attention : cela à comme conséquence de vider le contenu de ce répertoire à chaque redémarrage.

Le fichier /etc/fstab permet de définir les points de montage, dans un premier temps, sauvegardez la configuration actuelle :

sudo cp -p /etc/fstab  /etc/fstab.save

puis éditez le fichier /etc/fstab et ajoutez la ligne suivante :

tmpfs /tmp tmpfs nodev,nosuid,size=20M 0 0

Notez que dans ma config j’utilise 2OM ce qui est tout à fait suffisant. Vous pouvez ajuster en fonction de vos besoin dans la limite de la ram disponible.

Supprimer les éventuels fichiers présents dans le répertoire /tmp (sauvegardez-les si vous pensez en avoir besoin) puis redémarrer le Raspberry.

En faisant un df vous devriez maintenant voir que le répertoire /tmp à un stockage définit de 20M (dernière ligne ):

# df -hP
Filesystem                         Size  Used Avail Use% Mounted on
/dev/root                          5.6G  3.9G  1.5G  73% /
devtmpfs                           214M     0  214M   0% /dev
tmpfs                               44M  260K   44M   1% /run
tmpfs                              5.0M     0  5.0M   0% /run/lock
tmpfs                               87M     0   87M   0% /run/shm
/dev/mmcblk0p5                      60M   20M   40M  33% /boot
tmpfs                               20M  0M   20M   3% /tmp

 Etape 2 : configurer le fichier de log domoticz

pour cela éditez simplement le fichier : « /etc/init.d/domoticz.sh »

en ajoutant l’argument « -log /tmp/domoticz.log »

Pour ma part cela donne la ligne :

DAEMON_ARGS="-daemon -www 8080 -log /tmp/domoticz.log"

Puis redémarrer domoticz.

vous pouvez vérifier que le changement a bien été pris en compte en faisant un tail -f sur le fichier :

root@raspberrypi:~# tail -f  /tmp/domoticz.log
2016-03-07 14:24:39.509  (EDF) P1 Smart Meter (Conso EDF)
2016-03-07 14:24:47.160  (RFXCOM) Temp + Humidity (Cuisine)
2016-03-07 14:24:50.888  (EDF) P1 Smart Meter (Conso EDF)
2016-03-07 14:24:54.907  Hardware Monitor: Fetching data (System sensors)
2016-03-07 14:25:02.268  (EDF) P1 Smart Meter (Conso EDF)

Etape 3 : script de log tournant domoticz

Pour éviter que le répertoire /tmp ne se remplisse trop avec les logs de domoticz on va utiliser un script qui va sauvegarder journellement les fichiers de log de domoticz et remettre la taille a zéro dans le fichier initial /tmp/domoticz.log.

Commencez par créer le répertoire de sauvegarde des logs :

sudo mkdir  /home/pi/domoticz/logs
sudo mkdir  /home/pi/scripts

Le second répertoire « scripts » est le répertoire dans lequel je mets tous mes scripts domoticz, vous pouvez l’appeler comme vous voulez …

mkdir /home/pi/scripts
cd /home/pi/scripts
curl -O https://raw.githubusercontent.com/Sirus10/domoticz/master/clean_logs.sh
chmod +x clean_logs.sh

Pour que tous les fichiers de logs des derniers 7 jours soient disponibles dans le même repertoire, créé un lien pointant ver le fichier dans tmp :

ln -s  /tmp/domoticz.log /home/pi/domoticz/logs/domoticz.log

Cela permet par exemple de faire une recherche dans l’ensemble des fichier des 7 derniers jours. Ensuite vous pouvez manuellement tester le script :

/home/pi/scripts/clean_logs.sh
############### Start Script ############### Mon 7 Mar 14:35:11 CET 2016
cp /home/pi/domoticz/logs/domoticz.log /home/pi/domoticz/logs/domoticz.log.1
cleanup log /home/pi/domoticz/logs/domoticz.log
############### Ends Script  ############### Mon 7 Mar 14:35:12 CET 2016

Puis une fois que vous avez vus que tout est ok le planifier en cron tous les jours à minuit :

# cleanup domoticz logs
0 0 * * * /home/pi/scripts/clean_logs.sh > /tmp/clean_logs.log

Au bous de quelques jour vous aurez 7 fichiers de log en plus de votre log actuels (qui elle reste dans /tmp)

1 = Lundi, 2 = Mardi …

ls -l /home/pi/domoticz/logs
domoticz.log.1  
domoticz.log.2  
domoticz.log.3  
domoticz.log.4  
domoticz.log.5  
domoticz.log.6  
domoticz.log.7

Voila c’est fini ! Pour ma part ce script fonctionne depuis au plus d’un an sans problème….

Quitter la version mobile