Activer et modifier la verbosité des logs
En cas de problème et donc lors de recherche de pannes, il peut s’avérer utile d’activer la journalisation des événements (on parle plus généralement de niveau de verbosité des logs) du processus "slapd" et de lui spécifier des évènements spécifiques à rechercher.
Ceci peut être réalisé dynamiquement grâce au mécanisme de configuration dynamique (OLC), en accédant à la branche dn : cn=config du DIT de configuration de l’annuaire OpenLDAP.
dn: cn=config 
objectClass: olcGlobal 
cn: config 
olcAllows: bind_v2 
olcArgsFile: /var/run/openldap/slapd.args 
olcAttributeOptions: lang- 
olcAuthzPolicy: none 
olcConcurrency: 0 
olcLocalSSF: 71 
olcLogLevel: 0 
... 
... 
olcToolThreads: 1 
olcWriteTimeout: 0
Ensuite, il faudra utiliser l’attribut olcLogLevel afin d’activer le mode "debug" et de lui spécifier les événements prédéterminés à journaliser (ou logguer) ainsi référencés dans le tableau ci-dessous :
Niveau	Mots-clés	Description	
-1	any	enable all debugging	
0	no debugging		
1	(0x1 trace)	trace function calls	
2	(0x2 packets)	debug packet handling	
4	(0x4 args)	heavy trace debugging	
8	(0x8 conns)	connection management	
16	(0x10 BER)	print out packets sent and received	
32	(0x20 filter)	search filter processing	
64	(0x40 config)	configuration processing	
128	(0x80 ACL)	access control list processing	
256	(0x100 stats)	stats log connections/operations/results	
512	(0x200 stats2)	stats log entries sent	
1024	(0x400 shell)	print communication with shell backends	
2048	(0x800 parse)	print entry parsing debugging	
16384	(0x4000 sync)	syncrepl consumer processing	
32768	(0x8000 none)	only messages that get logged whatever log level is set	
On peut donc configurer l’attribut olcLogLevel en stipulant un mot-clé parmi ceux du tableau ci-dessus.
Par exemple :
olcLogLevel : conns
Mais, il est aussi possible de spécifier plusieurs types d’événements en utilisant les valeurs de la colonne "Niveau".
Ainsi, une valeur de 296 à l’attribut olcLogLevel permettra d’activer la journalisation des évènements suivants :
296 = 256 + 32 + 8  correspondant  donc à ’stats’,’filter’ et ’conns’.
L’application OpenLDAP sur les systèmes Unix/Linux transmet par défaut ses événements vers le service "rsyslog" avec le label "local4".
Il va donc falloir maintenant configurer ce service en créant par exemple le fichier "slapd" dans l’arborescence /etc/rsyslog.d et ajouter les lignes suivantes :
# Enregistre les évènements LDAP 
Local4.*            -/var/log/slapd.log
Ainsi, le service "rsyslog" va placer tous les évènements marqués LOCAL4 dans le fichier /var/log/slapd.log.
¬
Pour information, l’ajout d’un tiret devant le nom du fichier permet à "rsyslog" d’écrire en mode asynchrone, ce qui améliore les performances.
Redémarrer ensuite le service "rsyslogd" pour la prise en compte de ce nouveau fichier :
Service rsyslogd restart
Et voici les évènements reportés dans le fichier /var/log/slapd.log avec le mode débogage olcLogLevel : stats :
May 10 10:57:03 ldap01 slapd[3405]: conn=1007 op=319661 SRCH 
base="dc=exemple,dc=com" scope=2 deref=0  
filter="(&(uid=nrpe)(objectClass=posixAccount))" 
May 10 10:57:03 ldap01 slapd[3405]: conn=1007 op=319661 SRCH 
attr=objectClass uid userPassword uidNumber gidNumber gecos  
homeDirectory loginShell krbPrincipalName cn modifyTimestamp  
modifyTimestamp shadowLastChange shadowMin shadowMax  
shadowWarning shadowInactive shadowExpire shadowFlag  
krbLastPwdChange krbPasswordExpiration pwdAttribute  
authorizedService accountExpires userAccountControl nsAccountLock 
May 10 10:57:03 ldap01 slapd[3405]: conn=1007 op=319661 SEARCH  
RESULT tag=101 err=0 nentries=0 text= 
May 10 10:57:05 ldap01 slapd[3405]: conn=1007 op=319662 SRCH 
base="dc=exemple,dc=com" scope=2 deref=0  
filter="(&(uid=ss7)(objectClass=posixAccount))" 
May 10 10:57:05 ldap01 slapd[3405]: conn=1007 op=319662 SRCH  
attr=objectClass uid userPassword uidNumber gidNumber gecos  
homeDirectory loginShell krbPrincipalName cn modifyTimestamp  
modifyTimestamp shadowLastChange shadowMin shadowMax  
shadowWarning shadowInactive shadowExpire shadowFlag  
krbLastPwdChange krbPasswordExpiration pwdAttribute  
authorizedService accountExpires userAccountControl nsAccountLock 
May 10 10:57:05 ldap01 slapd[3405]: conn=1007 op=319662 SEARCH  
RESULT tag=101 err=0 nentries=0 text= 
May 10 10:57:25 ldap01 slapd[3405]: conn=1007 op=319663 SRCH 
base="dc=exemple,dc=com" scope=2 deref=0  
filter="(&(uid=ss7)(objectClass=posixAccount))" 
May 10 10:57:25 ldap01 slapd[3405]: conn=1007 op=319663 SRCH 
attr=objectClass uid userPassword uidNumber gidNumber gecos  
homeDirectory loginShell krbPrincipalName cn modifyTimestamp  
modifyTimestamp shadowLastChange shadowMin shadowMax  
shadowWarning shadowInactive shadowExpire shadowFlag  
krbLastPwdChange krbPasswordExpiration pwdAttribute  
authorizedService accountExpires userAccountControl nsAccountLock 
May 10 10:57:25 ldap01 slapd[3405]: conn=1007 op=319663 SEARCH  
RESULT tag=101 err=0 nentries=0 text= 
May 10 10:57:25 ldap01 slapd[3405]: conn=1007 op=319664 SRCH 
base="dc=exemple,dc=com" scope=2 deref=0  
filter="(&(uid=ss7)(objectClass=posixAccount))" 
May 10 10:57:25 ldap01 slapd[3405]: conn=1007 op=319664 SRCH 
attr=objectClass uid userPassword uidNumber gidNumber gecos  
homeDirectory loginShell krbPrincipalName cn modifyTimestamp  
modifyTimestamp shadowLastChange shadowMin shadowMax  
shadowWarning shadowInactive shadowExpire shadowFlag  
krbLastPwdChange krbPasswordExpiration pwdAttribute  
authorizedService accountExpires userAccountControl nsAccountLock 
May 10 10:57:25 ldap01 slapd[3405]: conn=1007 op=319664 SEARCH  
RESULT tag=101 err=0 nentries=0 text= 
[root@ldap01 log]#