Activation des logs
Les logs OpenLDAP sont gérés par syslog. Il faut ajouter une ligne dans /etc/rsyslog.conf , sachant que openldap log sur la facility local4:
# Log Openldap local4.* -/product/openldap/log/slapd.log
Dans notre exemple, les logs seront situés dans le répertoire /product/openldap/log.
Note : l'ajout d'un tiret devant le nom du fichier permet à syslog d'écrire en mode asynchrone, ce qui améliore les performances.
Il faut ensuite redémarrer openldap et syslog :
/etc/init.d/slapd restart /etc/init.d/rsyslog restart
Rotation des logs
Par défaut, le paquet openldap ne prévoit pas la rotation des logs.
Ceci peut être mis en place facilement, en ajoutant un fichier openldap dans le répertoire /etc/logrotate.d.
Par exemple :
cat /etc/logrotate.d/openldap # OpenLDAP /product/openldap/log/slapd.log { missingok notifempty compress weekly rotate 10 size=50M sharedscripts postrotate # OpenLDAP logs via syslog, restart syslog if running /etc/init.d/rsyslog restart endscript }
Il est possible de tester la configuration de la rotation, en lançant lograte en mode debug :
#logrotate -df /etc/logrotate.d/openldap reading config file /etc/logrotate.d/openldap reading config info for /product/openldap/log/slapd.log Handling 1 logs rotating pattern: /product/openldap/log/slapd.log forced from command line (10 rotations) empty log files are not rotated, old logs are removed considering log /product/openldap/log/slapd.log log does not need rotating not running postrotate script, since no logs were rotated
Le fichier sera recyclé toutes les semaines, OU si sa taille dépasse 50Mo. Il est compressé. On garde 10 fichiers en ligne, et on relance rsyslog suite à la rotation du log.
Niveau de logs
Le niveau de logs peut être fixé au niveau de l'instance OpenLDAP, via la variable olcLogLevel (lorsqu'on est en configuration dynamique) ou logLevel si on utilise encore la configuration en mode fichier dans le slapd.conf.
Généralement on utilise le niveau 256 (stats), qui donne les statistiques et permet de faire du déboggage (on récupère toutes les requêtes traitées par l'annuaire).
Les différents niveaux de logs sont donnés dans la documentation OpenLDAP : http://www.openldap.org/doc/admin24/slapdconfig.html
Il s'agit de valeurs puissances de 2 qui peuvent donc se combiner.
Multi-instances
Dans le cas du multi-instances, on peut vouloir séparer les logs de chaque instance dans son propre fichier. Ceci peut être fait via des directives rsyslog, en testant le "logfacility" et le nom du programme.
Par exemple, si on 2 instances qui tournent, avec le nom du programme passé en paramètre de la manière suivante :
/usr/sbin/slapd -h ldap://:2089/ ldaps://:2136/ -g ldap -u ldap -F /srv/conf/openldap/master1.d -n master1 /usr/sbin/slapd -h ldap://:1389/ ldaps://:1636/ -g ldap -u ldap -F /srv/conf/openldap/master2.d -n master2
On peut séparer les logs de chaque instance, en créant un fichier dans /etc/rsyslog.d :
cat /etc/rsyslog.d/10-slapd.conf if $syslogfacility-text == 'local4' and $programname == 'master2' then /var/log/slapd/master2.log if $syslogfacility-text == 'local4' and $programname == 'master1' then /var/log/slapd/master1.log
Il faut ensuite redémarrer le daemon rsyslog :
service rsyslog restart