OpenLDAP - Gestion des logs

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

 

Catégorie