Seguimiento de eventos en ADSI
Windows Server 2008 y Windows Vista presentan el seguimiento de eventos en las interfaces de servicio de Active Directory (ADSI). Algunas áreas del proveedor LDAP adsi tienen una implementación subyacente compleja o que implica una secuencia de pasos que dificulta el diagnóstico de problemas. Para ayudar a los desarrolladores de aplicaciones a solucionar problemas, se ha agregado seguimiento de eventos a las siguientes áreas:
Análisis y descarga de esquemas
La interfaz de LOS IAD en ADSI requiere que el esquema LDAP se almacene en caché en el cliente para que los atributos se puedan serializar correctamente (como se describe en el modelo de esquema ADSI). Para ello, ADSI carga el esquema para cada proceso (y para cada servidor o dominio LDAP) en la memoria desde un archivo de esquema (.sch) que se guarda en el disco local o lo descarga desde el servidor LDAP. Los distintos procesos de la misma máquina cliente usan el esquema almacenado en caché en el disco si está disponible y aplicable.
Si el esquema no se puede obtener del disco o del servidor, ADSI usa un esquema predeterminado codificado de forma predeterminada. Cuando esto ocurre, los atributos que no forman parte de este esquema predeterminado no se pueden serializar y ADSI devuelve un error al recuperar estos atributos. Varios factores podrían hacer que esto suceda, incluidos problemas al analizar el esquema y privilegios insuficientes para descargar el esquema. A menudo es difícil determinar por qué se usa un determinado esquema predeterminado. El uso del seguimiento de eventos en esta área le ayudará a diagnosticar más rápidamente el problema y corregirlo.
Cambiar y establecer la contraseña
ChangePassword y SetPassword emplean más de un mecanismo para realizar la operación solicitada en función de la configuración disponible (como se describe en Establecer y cambiar contraseñas de usuario con el proveedor LDAP). Cuando se produce un error en ChangePassword y SetPassword , puede ser difícil determinar exactamente por qué y el seguimiento de eventos le ayudará a solucionar problemas con estos métodos.
Caché de enlace adsi
ADSI intenta reutilizar internamente las conexiones LDAP siempre que sea posible (consulte Almacenamiento en caché de conexiones). Al solucionar problemas, resulta útil realizar un seguimiento de si se abrió una nueva conexión para la comunicación con el servidor o si se usó una conexión existente. También puede ser útil realizar un seguimiento del ciclo de vida de la memoria caché de conexión (a veces denominada caché de enlace) y su creación o cierre, y si se realizó una referencia de conexión. En el caso de un enlace sin servidor, ADSI llama al localizador de dc para seleccionar un servidor para el dominio del contexto del usuario. A continuación, ADSI mantiene una memoria caché de la asignación de servidor de dominio para las conexiones posteriores. Seguimiento de eventos ayuda a realizar un seguimiento de la selección del controlador de dominio y, por tanto, resulta útil para solucionar problemas relacionados con la conexión.
Habilitación del seguimiento e inicio de una sesión de seguimiento
Para activar el seguimiento adsi, cree la siguiente clave del Registro:
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servicios\Adsi\Rastreo\ProcessName
ProcessName es el nombre completo del proceso que desea rastrear, incluida su extensión (por ejemplo, "Svchost.exe"). Además, puede colocar un valor opcional de tipo DWORD denominado PID en esta clave. Se recomienda encarecidamente establecer este valor y, por tanto, realizar un seguimiento solo de un proceso determinado. De lo contrario, se realizará un seguimiento de todas las instancias de la aplicación especificada por ProcessName .
A continuación, ejecute el siguiente comando:
tracelog.exe -startsessionname **-guid #**provider_guid-ffilename-flagtraceFlags-leveltraceLevel
sessionname es simplemente un identificador arbitrario que se usa para etiquetar la sesión de seguimiento (tendrá que hacer referencia a este nombre de sesión más adelante cuando detenga la sesión de seguimiento). El GUID del proveedor de seguimiento ADSI es "7288c9f8-d63c-4932-a345-89d6b060174d". filename especifica el archivo de registro en el que se escribirán los eventos. traceFlags debe ser uno de los siguientes valores:
Marca | Value |
---|---|
DEBUG_SCHEMA |
0x00000001 |
DEBUG_CHANGEPWD |
0x00000002 |
DEBUG_SETPWD |
0x00000004 |
DEBUG_BINDCACHE |
0x00000008 |
Estas marcas determinan qué métodos ADSI se rastrearán, según la tabla siguiente:
Marca | Método |
---|---|
DEBUG_SCHEMA |
|
DEBUG_CHANGEPWD |
|
DEBUG_SETPWD |
|
DEBUG_BINDCACHE |
|
Puede combinar marcas combinando los bits adecuados en el argumento traceFlags . Por ejemplo, para especificar las marcas DEBUG_SCHEMA y DEBUG_BINDCACHE , el valor traceFlags adecuado sería 0x00000009.
Por último, la marca traceLevel debe ser uno de los siguientes valores:
Marca | Value |
---|---|
TRACE_LEVEL_ERROR |
0x00000002 |
TRACE_LEVEL_INFORMATION |
0x00000004 |
TRACE_LEVEL_INFORMATION hace que el proceso de seguimiento registre todos los eventos, mientras que TRACE_LEVEL_ERROR hace que el proceso de seguimiento registre solo eventos de error.
Para finalizar el seguimiento, ejecute el siguiente comando:
tracelog.exe -stopsessionname
En el ejemplo anterior, sessionname es el mismo nombre que el que se proporcionó con el comando que inició la sección de seguimiento.
Comentarios
Es más eficaz realizar un seguimiento de solo procesos específicos especificando un PID determinado que realizar un seguimiento de todos los procesos de un equipo. Si necesita realizar un seguimiento de varias aplicaciones en la misma máquina, podría haber un impacto en el rendimiento; hay una salida de depuración sustancial en secciones orientadas al rendimiento del código. Además, los administradores deben tener cuidado de establecer correctamente los permisos de los archivos de registro al realizar el seguimiento de varios procesos; de lo contrario, es posible que cualquier usuario pueda leer los registros de seguimiento y otros usuarios podrán realizar un seguimiento de los procesos que contienen información segura.
Por ejemplo, suponga que el administrador configura el seguimiento de una aplicación "Test.exe" y no especifica un PID en el registro para realizar un seguimiento de varias instancias del proceso. Ahora otro usuario quiere realizar un seguimiento de la aplicación "Secure.exe". Si los archivos de registro de seguimiento no están restringidos correctamente, todo lo que el usuario debe hacer es cambiar el nombre de "Secure.exe" a "Test.exe" y se realizará un seguimiento. En general, es mejor realizar un seguimiento de solo procesos específicos durante la solución de problemas y quitar la clave del Registro de seguimiento en cuanto se realice la solución de problemas.
Dado que habilitar el seguimiento de eventos producirá archivos de registro adicionales, los administradores deben supervisar cuidadosamente los tamaños de los archivos de registro; La falta de espacio en disco en el equipo local puede provocar una denegación de servicio.
Escenarios de ejemplo
Escenario 1: el administrador ve un error inesperado en una aplicación que establece contraseñas para cuentas de usuario, por lo que seguiría los pasos siguientes para corregir el problema mediante el seguimiento de eventos.
Escriba un script que reproduzca el problema y cree la clave del Registro.
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servicios\Adsi\Rastreo\cscript.exe
Inicie una sesión de seguimiento, establezca traceFlags en 0x2 (DEBUG_CHANGEPASSWD) y traceLevel en 0x4 (TRACE_LEVEL_INFORMATION), con el siguiente comando:
tracelog.exe -start scripttrace -guid #7288c9f8-d63c-4932-a345-89d6b060174d -f .\adsi.etl -flag 0x2 -level 0x4
Ejecute cscript.exe con su script de prueba para reproducir el problema y, a continuación, finalice la sesión de seguimiento:
tracelog.exe -stop scripttrace
Eliminación de la clave del Registro
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servicios\Adsi\Rastreo\cscript.exe
Ejecute la herramienta ETW Tracerpt.exe para analizar la información de seguimiento del registro:
tracelog.exe -start scripttrace -guid #7288c9f8-d63c-4932-a345-89d6b060174d -f .\adsi.etl -flag 0x2 -level 0x4
Escenario 2: el administrador quiere realizar un seguimiento de las operaciones de análisis y descarga de esquemas en una aplicación ASP denominada w3wp.exe que ya se está ejecutando. Para ello, el administrador realizaría los pasos siguientes:
Creación de la clave del Registro
HKEY_LOCAL_MACHINE\Sistema\Currentcontrolset\Servicios\Adsi\Rastreo\w3wp.exe
y dentro de esa clave, cree un valor de tipo DWORD denominado PID y establézcalo en el identificador de proceso de la instancia de w3wp.exe que se ejecuta actualmente en el equipo local.
A continuación, crean una sesión de seguimiento y establecen traceFlags en 0x1 (DEBUG_SCHEMA) y traceLevel en 0x4 (TRACE_LEVEL_INFORMATION):
tracelog.exe -start w3wptrace -guid #7288c9f8-d63c-4932-a345-89d6b060174d -f .\w3wp.etl -flag 0x1 -level 0x4
Reproduzca la operación que necesita solucionar problemas.
Finalice la sesión de seguimiento:
tracelog.exe -stop w3wptrace
Elimine la clave del Registro HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\adsi\Tracing\w3wp.exe.
Ejecute la herramienta ETW tracerpt.exe para analizar la información de seguimiento del registro:
tracerpt.exe .\w3wp.etl -o -report
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de