Cuando es necesario depurar errores en una instalación de LDAP existen varias alternativas de nivel de log de acuerdo a las necesidades o a qué parte del protocolo se requiera verificar. Este artículo explica cómo modificar el nivel de log de slapd utilizando la configuración dinámica (OLC) sin necesidad de reiniciar el servicio.



Para saber cuál es el nivel de log actual, buscar el atributo olcLogLevel en la configuración:

root@ldap:/usr/local/etc/openldap# ldapsearch -x -H ldaps://localhost:636 -W -b 'cn=config' -D 'cn=admin,cn=config' -s base -LLL -W olcLoglevel
Enter LDAP Password: 
dn: cn=config
olcLogLevel: 0

Inicialmente el nivel de log está en 0. Para cambiar el nivel de log, simplemente modificar dicho atributo con una consulta de tipo "modify". Para ello crear un archivo LDIF:

root@ldap:/usr/local/etc/openldap# nano ldif/loglevel.ldif

Por ejemplo, para cambiar el nivel de log a 256, utilizar el siguiente contenido:

dn:cn=config
changetype: modify
replace: olcLoglevel
olcLoglevel: 256

Cargar la nueva configuración de olcLogLevel con ldapmodify:

root@ldap:/usr/local/etc/openldap# ldapmodify -f ldif/loglevel.ldif -x -D "cn=admin,cn=config" -W
Enter LDAP Password: 
modifying entry "cn=config"

Por último verificar:

root@ldap:/usr/local/etc/openldap# ldapsearch -x -H ldaps://localhost:636 -W -b 'cn=config' -D 'cn=admin,cn=config' -s base -LLL -W olcLoglevel
Enter LDAP Password: 
dn: cn=config
olcLogLevel: 9

Al aplicar esta configuración utilizando OLC no es necesario reiniciar el servicio. Cabe recordar que por defecto slapd loguea en el syslog del sistema. Basta con acceder al syslog con less o tail:

root@ldap:~# tail -f /var/log/syslog
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 fd=10 ACCEPT from IP=192.168.48.135:59458 (IP=0.0.0.0:389)
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=0 EXT oid=1.3.6.1.4.1.1466.20037
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=0 STARTTLS
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=0 RESULT oid= err=0 text=
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 fd=10 TLS established tls_ssf=256 ssf=256
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=1 BIND dn="cn=root,dc=linuxito,dc=com" method=128
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=1 BIND dn="cn=root,dc=linuxito,dc=com" mech=SIMPLE ssf=0
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=1 RESULT tag=97 err=0 text=
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 op=2 UNBIND
Jul 15 19:26:07 ldap slapd[13028]: conn=1132 fd=10 closed

Los diferentes niveles de log que presenta OpenLDAP están documentados en la tabla 5.1 de la guía de administración de OpenLDAP:

Table 5.1: Debugging Levels
Level Keyword 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

Se observa que slapd es muy versátil a la hora de depurar todo tipo de errores con un nivel de granularidad muy bueno. Algunos ejemplos: nivel 8 para loguear conexiones; 256 para loguear operaciones y resultados (útil para debuggear aplicaciones que hacen cambios en el servidor LDAP); 32 para loguear el procesamiento del filtro de búsqueda; 16384 para loguear replicación; etc.

Cabe destacar que la entrada olcLogLevel admite el uso de las palabras clave asociadas a cada nivel en vez de el valor numérico, por ejemplo "stats" para el nivel 256.

Referencias


Tal vez pueda interesarte


Compartí este artículo