Fichier de log tournant dans Domoticz

log_file_domoticzJe 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 :

  • modifier le point de montage /tmp pour qu’il soit uniquement géré en RAM
  • spécifier à domoticz que l’on veux que les logs s’écrivent dans /tmp
  • ajouter un script qui quotidiennement va sauvegarder le fichier de log.

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 /mome/pi/scripts
cd /mome/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….

 

 

 

4 réflexions au sujet de « Fichier de log tournant dans Domoticz »

  1. Ping : [RPi] Comment ajouter un RAMDisk

  2. faipassa

    Hello,

    Merci pour ces explications très instructives. Cependant, il me semble qu’il y a une légère erreur dans le script « clean_logs.sh » car au lieu de prendre le fichier log courant depuis /tmp (comme configuré dans l’étape 2) il le prend depuis /domoticz/log, là où ils devrait plutot stocker les copies de sauvegarde.

    non ?

    Répondre
    1. Manu Auteur de l’article

      Bonjour faipassa,

      exact ! j’ai oublié de précisé qu’il faut faire un lien dans le répertoire logs pointant vers le fichier que se trouve dans tmp:
      ln -s /tmp/domoticz.log /home/pi/domoticz/logs/domoticz.log
      Cela permet par exemple de faire des recherche dans tous les fichier en une seule commande.

      J’ai ajusté le tutoriel pour ajouter cette information.

      Merci encore !

      Répondre
  3. dudune

    Bonjour, et merci ca marche impec, il y a une coquille cependant dans le code ci-dessus
    (dans l’etape 3)

    mkdir /mome/pi/scripts
    cd /mome/pi/scripts

    au lieu de

    mkdir /home/pi/scripts
    cd /home/pi/scripts

    de plus le « mkdir /home/pi/scripts » est deja créé via la commande precedente.

    Répondre

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *