[Tuto] Gestion des logs...
Publié : 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) :
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)
2. On ajoute la config. Par exemple, celle que j'ai mis en place
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.
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 !
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.
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
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/domoticzCode : 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
}4. Et c'est fini !
Explications
Avec quelques explications ce sera peut être mieux
- /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.
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 !
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.