Gestion des logs...

Vous avez crée un script lua dont vous êtes fier, un .sh génial, un programme python hors du commun, un tuto , c'est ici que vous pouvez les partager.
Soyez précis quant aux prérequis, les manips à faire pour que votre bijou fonctionne (des chmod ?, un apt-get à faire ...)
Décrivez précisément son fonctionnement
Placez votre code entre [Quote] et {/Quote]
chandler45
Messages : 49
Inscription : 09 mars 2015, 15:05

Gestion des logs...

Messagepar chandler45 » 09 mars 2015, 16:06

Salut,

J'ai commencé Domocitz (et la domotique) depuis peu... C'est mon premier sujet... soyez indulgents ! :)

J'ai remarque que les logs de Domoticz peuvent être gourmandes, surtout quand on joue du "print" pour tester les scripts LUA. Comme je n'avais pas envie de saturer mon Rasp juste à cause de ça, j'ai cherché un peu comment fonctionnent les logs Linux (comme le syslog), pour l'adapter à la log Domoticz. Le fonctionnement standard pour le syslog par exemple, c'est qu'à intervalle régulier (tout les jours par exemple) :
  • il renomme le fichier avec un indice (syslog.1)
  • L'indice de la version précédente est augmenté (syslog.1 => syslog.2)
  • La version précédente (donc syslog.2) est compressée
  • il ne garde qu'un nombre défini de fichier en historique

Et le mieux, c'est que c'est très simple :D

Pré requis
Je précise, je suis en Raspbian, et je n'ai rien installé de particulier pour ce sujet... Et vu que le fichier syslog est géré comme ça, je ne pense pas que l'outil ai été installé en même temps qu'autre chose que j'aurais installé sur mon Raspberry

Logrotate
L'outil qui gére les logs s'appelle Logrotate. Il a un fichier de conf (/etc/logrotate.conf) et un dossier dédié (/etc/logrotate.d). Son fonctionnement s'apparente à celui de la crontab. On ajoute un fichier de configuration pour les logs qu'on veut gérér dans le dossier /etc/logrotate et il est pris en compte automatiquement.

Création d'une configuration pour domoticz
1. On crée un fichier "domoticz" (en root)

Code : Tout sélectionner

> sudo nano /etc/logrotate.d/domoticz

2. On ajoute la config. Par exemple, celle que j'ai mis en place

Code : Tout sélectionner

/var/log/domoticz.log
{
     rotate 4
     weekly
     missingok
     notifempty
     delaycompress
     compress
     postrotate
     if [ -f /var/run/domoticz.pid ]; then
          /etc/init.d/domoticz.sh restart > /dev/null
     fi
     endscript
}

3. On sauve (Ctrl+O) et on quitte (Ctrl+X)
4. Et c'est fini ! :)

Explications
Avec quelques explications ce sera peut être mieux :) Je vais parcourir les paramètres les plus importants. Les autres je ne les maitrises pas trop, donc j'ai laissé une config standard. Vous pourrez trouver plus d'infos sur le net, parce que logrotate est standard.
  • /var/log/domoticz.log
    C'est le chemin où se trouve le fichier de log domoticz. Personnellement je l'ai déplacé dans le dossier de log standard
  • rotate 4
    C'est le nombre de rotation du fichier de log qu'il va faire avant de les supprimer. Dans mon cas, j'aurais donc domoticz.log, domoticz.log.1, domoticz.log.2, domoticz.log.3, domoticz.log.4... J'ai un doute sur ce dernier, je ne sais plus si c'est 4 avec ou sans le fichier en cours...
  • weekly
    C'est la fréquence à laquelle il va faire la rotation. Ici je fais une bascule du fichier de log courant de façon hebdo. Donc dans mon fichier de log courant j'aurais 1 semaine de log. Vous pouvez préciser daily ou monthly. Avec mon nombre de fichier à 4 ça me permet d'avoir toujours 1 mois de log.
  • delaycompress et compress
    Permet de dire qu'on veut que les fichiers de log sauvegardés sont compressés (c'est le compress), sauf le tout dernier sauvegardé (delaycompress). Donc le domoticz.log.1 ne sera pas sauvegardé, mais les précédents (à partir du domoticz.log.2) oui. C'est utile parce que lors du renommage de domoticz.log en log.1, domoticz continue d'écrire dans le fichier .log.1. Il vaut donc mieux eviter de le compresser pour ne pas faire planter Domoticz ;)
  • postrotate et endscript (Attention ils vont ensemble comme un if et son end!!)
    Permet de spécifier des actions à réaliser après avoir fait la rotation. Dans mon cas, si Domoticz est en cours d'exécution (fichier /var/run/domoticz.pid présent), je redémarre Domoticz. Pourquoi me direz vous ?? Pour forcer Domoticz à ne plus écrire dans le fichier domoticz.log.1, et à repartir dans le fichier domoticz.log... C'est aussi pour ça que j'ai fait une rotation hebdo, afin de ne pas faire un restart tous les jours.

Et voilà, avec tout ça, vous avez une log domoticz gérée de façon propre et qui ne risque pas d'exploser... et aussi plus légère si vous devez aller chercher quelque chose dedans.

En complément, si vous avez des shell pour domoticz qui génèrent d'autres fichiers de log, il suffit de rajouter un bloc comme celui au dessus, dans le même fichier (/etc/logrotate.d/domoticz), ou créer un nouveau fichier. Mais personnellement, je préfére regrouper par sujet. Il faut par contre penser que la rotation sera faite par root : donc le nouveau fichier de log créé sera créé par root. Il faudra donc que votre script ai les droits nécessaires pour écrire dedans.

Voilà, j'espère que ça pourra vous être utile ! :D
N'hésitez pas si vous avec des questions. Je n'aurais peut être pas toutes les réponses, mais on pourra toujours chercher ensemble.
Domoticz (dernière beta)
Raspberry Pi / RFXTrx433e
Sondes : 3 Sonde Oregon THN132N + 1 OWL Micro+ CM180
Interrupteurs : 3 Prises COCO (AWS APA3-1500R) + 3 Micro modules COCO AWS3500

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


vrolland
Messages : 21
Inscription : 25 mars 2015, 16:35

Re: Gestion des logs...

Messagepar vrolland » 25 mars 2015, 16:38

Très intéressant merci, en ce qui me concerne je rajouterai 2 options

create 644 root pi
=> donne les droits au fichier qui va être créé

olddir /var/log/domoticz/archives/
=> indique un chemin ou stocker les logs archivés
Pi2 - Raspbian Jessie 4.1.13-v7+
Domoticz V3.4834

chandler45
Messages : 49
Inscription : 09 mars 2015, 15:05

Re: Gestion des logs...

Messagepar chandler45 » 25 mars 2015, 16:59

Très intéressant aussi ces 2 options... Merci, je vais me les noter de suite :)
Domoticz (dernière beta)
Raspberry Pi / RFXTrx433e
Sondes : 3 Sonde Oregon THN132N + 1 OWL Micro+ CM180
Interrupteurs : 3 Prises COCO (AWS APA3-1500R) + 3 Micro modules COCO AWS3500

thier
Messages : 285
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Gestion des logs...

Messagepar thier » 09 oct. 2016, 23:27

bonsoir,
lorsque j'exécute mon logrotate.d/domoticz qui est le même mais sans la partie qui relance domoticz.sh, plus rien ne s’inscrit dans /var/log/domoticz.log. j'ai essayé d’appliquer create 644 root pi mais ça ne règle pas le problème.
le fichier /var/log/domoticz.log qui est créé au lancement de domoticz.sh a les droits -rw-r--r-- 1 root root. J'ai donc aussi essayé create 644 root root mais ça ne fonctionne pas. Je ne voudrais pas passer par la solution de relancer le service domoticz.sh.
PI2 + Jessie, rfxtrxe, zwave, chauffage piloté par qubino, sondes oregon et Vill1d, boite aux lettres détection passage facteur.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


thier
Messages : 285
Inscription : 26 sept. 2015, 10:32
Localisation : charente

Re: Gestion des logs...

Messagepar thier » 15 oct. 2016, 16:52

Je me réponds si ça peux aider quelqu'un.
J'ai supprimé la partie qui arrête et relance le service domoticz
postrotate
if [ -f /var/run/domoticz.pid ]; then
/etc/init.d/domoticz.sh restart > /dev/null
fi
endscript

j'ai ajouté copytruncate qui vide le fichier domoticz.log
PI2 + Jessie, rfxtrxe, zwave, chauffage piloté par qubino, sondes oregon et Vill1d, boite aux lettres détection passage facteur.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.



Revenir vers « La Bibliothèque Scripts et Tutos »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 4 invités