Windows Vista

Nuevas herramientas para la administración de eventos en Windows Vista

Val Menn

 

Resumen:

  • Nueva infraestructura de eventos
  • Tipos de eventos
  • Propiedades de eventos estructurados
  • Uso de expresiones XPath

Muchas personas consideran los eventos y el seguimiento aburridos. Otros se quejan de que, cada vez con más frecuencia, los seguimientos y eventos son simplemente subproductos de actividades secundarias (como las características de depuración y autosupervisión), y que no se da la suficiente importancia a las capacidades de eventos y seguimiento.

Microsoft® Windows Vista™ pretende cambiar estas ideas al ofrecer un gran paso adelante en la administración empresarial. Microsoft ha revisado algunos de los componentes clave y sus interfaces de usuario. El servicio Registro de eventos se ha escrito de nuevo por completo con la empresa en mente, y el seguimiento se ha hecho mucho más rápido y seguro.

Imagínese tener un mejor conjunto de herramientas para detectar y resolver problemas en sistemas con funciones muy importantes. ¿O qué tal características que permitieran a un técnico de soporte recopilar fácilmente eventos y seguimientos reveladores del sistema de un usuario? ¿Y si los desarrolladores pudieran diagnosticar y corregir errores en sistemas implementados mediante seguimientos que los usuarios envían sobre la marcha? Imagínese tener formas más fáciles y eficaces de recopilar información y solucionar problemas rápidamente... ¿A que eso no suena tan aburrido?

¿Qué son los eventos?

Una aplicación informática es como una "caja negra" que realiza una función (o varias). Dentro de la caja ocurren muchas cosas, pero como no se ven, es muy difícil entender el funcionamiento interno. Sin embargo, las aplicaciones aparentemente se comunican: con otros programas y con los usuarios. Estos "eventos" de comunicación le permiten echar un vistazo dentro de la aplicación.

Cuando se trata de software, un evento se define normalmente como una repetición dentro de un sistema de software que se comunica con el exterior (el exterior son los usuarios u otros programas). Dicha repetición suele corresponderse con un cambio de configuración o estado. Puede que comunique la configuración o el estado actual del sistema de software y los motivos del cambio.

En términos generales, evento también se usa para hacer referencia a la forma en que se exponen estas repeticiones. Hay muchos ejemplos de un evento expuesto de este tipo:

  • Un objeto Win32® utilizado para la comunicación entre procesos (IPC)
  • Un evento WMI utilizado para notificaciones transitorias (no persistentes)
  • Un evento del seguimiento de eventos para Windows (ETW) guardado en archivos de seguimiento
  • Un evento del registro de eventos guardado en los registros activos del registro de eventos y posiblemente archivado en los archivos del registro de eventos
  • Un evento guardado en archivos mediante la infraestructura personalizada

Los últimos tres ejemplos mencionados son del tipo que trataremos en este artículo.

Cómo se usan los eventos

Un evento de seguimiento o registrado es un registro de una repetición en un programa o sistema operativo. Estos registros de eventos y seguimientos no son únicamente para los desarrolladores. Ofrecen herramientas indispensables para el personal de TI y de soporte técnico, al proporcionar un vistazo al estado y al funcionamiento interno de las aplicaciones en ejecución.

Puede usar dichos registros para supervisar el estado general del sistema. Mediante el uso del registro de eventos, puede buscar los eventos que indican problemas. Por ejemplo, puede encontrar que el evento de error 6 del registro de la aplicación del origen CertificateServicesClient indica el siguiente mensaje: "Error en la inscripción de certificados automática para el sistema local (0x80070576). Existe una diferencia de hora o fecha entre el cliente y el servidor." Asimismo, puede detectar la transición de componentes del mal estado a la operación normal. Por ejemplo, una vez que se ha corregido la diferencia de hora y fecha, el mismo origen CertificateServiceClient publicaría un evento informativo 19 en el registro de la aplicación que indicaría: "La inscripción de certificados para <nombre de usuario> recibió correctamente un certificado AutoenrolledWindowsSystemComponentVerification de la entidad emisora de certificados <nombre de la entidad>." Esa información es sumamente importante para buscar y resolver conflictos y otros problemas de configuración.

Esta información también es útil para el diagnóstico de problemas. Puede buscar acciones del sistema y de programas que lleven a un problema y encontrar detalles que le ayuden a determinar la causa raíz. Del mismo modo, puede usar esta información para evaluar y resolver problemas de rendimiento.

Y los registros de eventos ofrecen información valiosa que puede usar para garantizar un entorno más seguro. Se pueden usar para detectar intentos de intrusión, auditar el historial del sistema, garantizar el no repudio y encontrar recursos configurados incorrectamente.

Eventos en Windows Vista

Las versiones anteriores de Windows® han presentado muchos puntos débiles en cuanto a eventos y seguimiento. Entre ellos se incluyen la escalabilidad limitada del registro de eventos (que limitaba el tamaño total de todos los registros a la cantidad de memoria disponible), el rendimiento de publicación de eventos (que, por ejemplo, limitaba la cantidad de eventos que podían publicarse en un controlador de dominio activo) y la seguridad limitada de los eventos de seguimiento.

Windows Vista hace frente a muchos de estos problemas con una infraestructura nueva para eventos y seguimiento, denominada Windows Eventing 6.0. Se extiende hasta ETW, que ha estado en uso desde Windows 2000, y reemplaza el servicio Registro de eventos y el Visor de eventos. El nuevo Windows Eventing está diseñado para tratar específicamente con eventos que persisten en archivos de registro para análisis futuros. No está destinado a eventos transitorios como IPC y mecanismos de notificación.

Al proporcionar soluciones de seguridad y escalabilidad, las implementaciones personalizadas de eventos y seguimiento deberían cobrar menos importancia. Tenga en cuenta que las mejoras se proporcionan al mismo tiempo que se conserva la plena compatibilidad con el registro de eventos existente y las API de ETW, lo que significa que todas las aplicaciones existentes seguirán funcionando sin cambios.

Nuevas formas de ver eventos

El Visor de eventos existente ya es uno de los programas más populares de Windows entre la comunidad de TI. El nuevo Visor de eventos se ha escrito de nuevo por completo y, como reside en Microsoft Management Console (MMC) 3.0, su aspecto también ha cambiado, pero sigue siendo lo suficientemente familiar como para que la transición sea bastante fácil.

Sigue habiendo un panel de árbol y una lista de eventos. Todavía puede tener acceso a los registros de aplicación, sistema y seguridad en el nodo Registros de Windows. Pero se han agregado algunos nodos nuevos a la raíz, y el nuevo registro ForwardedEvents, del que hablaré en breve, se ha agregado al nodo Registros de Windows.

La característica nueva más evidente es el panel de vista previa, situado en la lista de eventos. Contiene las propiedades del evento en cuestión. Esto significa que ya no tiene que hacer doble clic en un evento para ver las propiedades del mismo, y que no tiene que reorganizar las ventanas para ver la lista y el cuadro de diálogo Propiedades del evento. Sigue siendo posible mostrar propiedades en el cuadro de diálogo al hacer doble clic en un evento. Pero el nuevo cuadro de diálogo no es modal, por lo que puede mostrar varios cuadros de diálogo de propiedades de eventos al mismo tiempo.

Las nuevas vistas le permiten mostrar todos los eventos en los que esté interesado con sólo unos cuantos clics. Se pueden recopilar eventos para uno o varios archivos de registro y centrarse en identificadores, niveles (de gravedad) o márgenes de tiempo específicos.

Observe que, en el nodo Vistas personalizadas, encontrará Eventos administrativos (como se muestra en la figura 1). Esto proporciona una lista de todos los errores y advertencias de distintos archivos de registro que son de interés para los administradores.

Figure 1 Eventos administrativos

Figure 1** Eventos administrativos **(Hacer clic en la imagen para ampliarla)

¿Cómo determinamos exactamente qué registros y eventos son de interés para los administradores? Identificamos cinco tipos de eventos distintos y los usuarios relacionados con cada tipo. Éstos se detallan en la figura 2. Es una división muy general, aunque eficaz, de todos los eventos de seguimiento y del registro de eventos que pueden ser de interés para diversos grupos.

Figure 2 Tipos de eventos y sus usuarios

Tipo de evento Descripción Usado por
Admin El tipo Admin basta para la mayoría de los administradores del sistema. Estos eventos son de muy alto nivel y suelen proporcionar suficiente información para identificar problemas y determinar su solución. Como mínimo, los eventos Admin deberían identificar cuándo se produce un problema, o bien indicar cuándo una aplicación, un componente o el sistema en su totalidad se encuentran en mal estado o se han recuperado del mismo. La mayoría de los eventos Admin son errores o advertencias y, normalmente, existen determinadas vías de acción que se pueden tomar al respecto. Administradores, personal de soporte técnico y programas de análisis y supervisión
Operational Al igual que los eventos Admin, los eventos Operational permiten el diagnóstico de problemas. Los eventos Operational constan de más que simplemente errores y advertencias. También informan a los usuarios acerca de la operación normal de una aplicación o componente del SO. El volumen de estos eventos se mantiene bastante bajo para que los eventos Operational se puedan activar sin afectar al rendimiento del sistema. Los eventos Operational, junto con los eventos Admin, resultan de utilidad para el personal de soporte técnico, las utilidades de supervisión y algunos administradores sofisticados. Administradores avanzados, personal de soporte técnico, y programas de análisis y supervisión
Audit Los eventos Audit proporcionan un registro histórico de todos los accesos a los recursos o acciones que llevan a cabo los usuarios. Estos eventos no representan por sí mismos el éxito o el fracaso del programa, pero indican el éxito o el fracaso de la acción. Los eventos Audit se pueden desactivar por completo o activar parcialmente con diversos niveles de granularidad. Se admite la auditoría de seguridad a nivel del SO (los eventos se pueden encontrar en el registro de seguridad del registro de eventos). Administradores avanzados, auditores de seguridad y especialistas forenses
Analytic Los eventos Analytic, que no son muy distintos de los eventos Operational, se registran durante el funcionamiento normal de las aplicaciones y los componentes. Pero el volumen y detalle de los eventos Analytic es mucho mayor que el de los eventos Operational y, por tanto, cabe la posibilidad de que tengan un efecto negativo en el rendimiento del sistema. Así, los eventos Analytic normalmente están desactivados. Para usar eventos Analytic, actívelos antes de una sesión de diagnóstico y desactívelos antes de examinar el seguimiento. Personal de soporte técnico, programas de análisis y supervisión
Debug Los eventos Debug también son eventos de gran volumen que normalmente están desactivados. Suelen usarlos los desarrolladores y, rara vez, los profesionales de TI. Desarrolladores

Cada registro de Windows Eventing tiene designado un tipo. Todos los eventos de este registro comparten el tipo de dicho registro. La vista de la figura 1 se definió con este tipo de información: extrae todos los eventos de errores y advertencias de los registros del tipo Admin.

La arquitectura de Windows Eventing

La infraestructura de Windows Eventing consta de componentes de software que permiten que los programas publiquen objetos de eventos y los entreguen a archivos de registro. ETW proporciona el medio que se usa para transferir todos los tipos de eventos de sus publicadores de eventos a sus destinos. ETW también se ha revisado en Windows Vista, y ahora proporciona un rendimiento y seguridad mejorados. La publicación de eventos a través de ETW es asíncrona y, por tanto, no afecta al rendimiento del programa de publicación. Cuando el sistema recibe un nuevo evento, se recopila la información sobre el proceso de publicación y el contexto del usuario actual, y se anexa al evento.

Una vez publicados los eventos, los distintos tipos se administran de distintas maneras. Dado que los eventos Analytic y Debug suelen tener un gran volumen, tienen que guardarse en un archivo con procesamiento mínimo para evitar impactos en el rendimiento del sistema. Por tanto, estos eventos se guardan inmediatamente en un archivo de seguimiento.

Los eventos Admin y Operational son poco frecuentes y permiten un procesamiento adicional sin influir en el rendimiento del sistema. Estos eventos se entregan al servicio Registro de eventos, que los guarda en los registros de eventos activos y puede entregarlos de forma opcional a suscriptores en tiempo real. Los suscriptores pueden recopilar los eventos que se les entregan mediante un lenguaje de consulta del que hablaré en breves instantes.

En concreto, hay dos suscriptores que son de especial interés para la comunidad de TI. Se trata del reenviador de eventos y del programador de tareas de Windows Vista, que se han mejorado y se pueden usar para enviar eventos a un recopilador de eventos remoto.

Un vistazo a los eventos estructurados

Una queja común sobre los registros de eventos es que contienen muchos elementos no utilizados. Es decir, están llenos de eventos que tienen poca o ninguna importancia, y éstos tienden a ocultar los eventos importantes. Mientras que algunos eventos proporcionan poca información, lo que a un usuario le parece un elemento no utilizado suele ser un tesoro para otro.

Windows Vista ofrece una forma de filtrar los eventos sin interés para que pueda centrarse únicamente en los eventos que le importan. Se basa en un lenguaje de consultas interregistro admitido por el servicio Registro de eventos. Para que funcione, todos los eventos deben seguir una estructura bien definida.

Las versiones anteriores del registro de eventos proporcionaban alguna estructura a los eventos, pero la estructura no estaba bien definida y sólo era visible para la API Win32. En Windows Vista, los eventos cuentan con una estructura bien definida. De hecho, los eventos se representan externamente mediante el uso de XML con un esquema publicado. Esto posibilita la creación de consultas que recopilan los eventos de interés, al mismo tiempo que se filtran los eventos superfluos. Ya que se usa XML, se eligió XPath como base del lenguaje de consulta de eventos. Por supuesto, el uso de eventos estructurados abre nuevas puertas para la automatización, como se puede ver con la nueva integración del programador de tareas.

El panel de vista previa de eventos ahora incluye una ficha Detalles. La misma ficha está disponible en el cuadro de diálogo Propiedades del evento. Si selecciona la ficha Detalles en el cuadro de diálogo Propiedades del evento, se muestra la representación XML del evento. El ejemplo que se muestra en la figura 3 es un evento Operational del programador de tareas. Contiene dos partes. La parte System consta de la información general de eventos común a todas las instancias de eventos de este evento, así como algunos parámetros del sistema recopilados cuando se publicó la instancia. La sección EventData, que es ampliable, contiene información estructurada de la aplicación.

Figure 3 Representación XML de un evento.

Figure 3** Representación XML de un evento. **(Hacer clic en la imagen para ampliarla)

Cada archivo del registro de eventos se trata como una secuencia de dichos elementos de eventos estructurados. Esto presenta una vista lógica y legible de los archivos de almacenamiento de eventos y del registro de eventos. Internamente, los eventos se guardan en un formato binario que está diseñado para proporcionar un equilibrio de concisión, confiabilidad y rendimiento de búsqueda.

Atributos de eventos

La sección System de los datos XML proporciona la hora en la que se produjo el evento, el identificador del proceso, el identificador del subproceso, el nombre del equipo y el identificador de seguridad (SID) del usuario. En versiones anteriores de Windows, los eventos sólo tenían dos atributos: EventID y Category. XML proporciona otros detalles, incluidas las propiedades EventID, Level, Task, Opcode y Keywords. Echémosles un vistazo más detenido.

EventID y Version Un evento tiene una identificación exclusiva por la combinación de sus propiedades EventID (que es un número de dos bytes) y Version (que es un número de un byte). Todos los eventos del mismo proveedor de eventos que comparten EventID y Version comparten una estructura idéntica.

Level Este valor representa el nivel de gravedad o contenido de un evento. Se suelen usar los valores predefinidos de 1 (Crítico), 2 (Error), 3 (Advertencia), 4 (Información) y 5 (Detallado), pero un proveedor puede definir sus propios valores hasta un valor máximo de 255. Los números superiores se corresponden con eventos más detallados.

Task La propiedad Task suele identificar un área general de la funcionalidad del proveedor de eventos (como impresión, redes o IU). También puede referirse a un subcomponente de un programa. Los eventos Security Audit hacen un uso frecuente de esta propiedad. Cada publicador de eventos puede definir su propio conjunto de valores para este número de dos bytes. Observe que el significado del atributo Task suele coincidir semánticamente con el atributo Category, y es un supraconjunto del mismo en versiones anteriores de Windows. Por este motivo, el Visor de eventos muestra este valor en una columna llamada Categoría de tareas.

Opcode Éste es un valor de un byte que se usa normalmente para representar una acción específica o parte de una acción realizada por el software. Este valor se suele usar en procesos basados en actividades de seguimiento (como servicios web en los que la actividad es una solicitud específica recibida por el servicio web). Hay algunos valores predefinidos, pero los más comunes son 1 (Start) y 2 (Stop).

Keywords Es una máscara con 56 indicadores que se pueden establecer mediante el programa para habilitar el agrupamiento fácil de eventos similares. Cada evento puede tener más de un conjunto de indicadores, que señalan que el evento pertenece a varios grupos.

Publicadores y eventos

Es difícil ser proactivo cuando no se conocen de antemano todos los tipos de información que se pueden encontrar en los archivos de seguimiento y registros de eventos. Por tanto, una de nuestras metas principales en relación con la nueva infraestructura de eventos fue proporcionar documentación para cada publicador de eventos, incluida la información sobre el conjunto de eventos y sus destinos.

Para ello, cada publicador debe enumerar todos los eventos que publicará junto con la estructura de dichos eventos. Esta información se compila, cifra y guarda con el binario (un programa o una DLL) del publicador.

Ahora es posible detectar todos los publicadores registrados con el sistema de eventos, así como la configuración de cada uno de los publicadores. Esto incluye la visualización de una lista completa de todos los eventos potenciales que un publicador podría registrar, las estructuras de dichos eventos y sus mensajes asociados: todo antes de que se produzcan los eventos. En la figura 4 se muestra cómo se puede usar una utilidad de línea de comandos, wevtutil, para mostrar la configuración del proveedor. El comando que aparece muestra toda la información que el sistema conoce acerca del publicador de eventos llamado Microsoft-Windows-Video For Windows.

Figure 4 Uso de wevtutil para mostrar la configuración del proveedor

Figure 4** Uso de wevtutil para mostrar la configuración del proveedor **(Hacer clic en la imagen para ampliarla)

Funcionamiento del lenguaje de consulta

Como se mencionó anteriormente, la naturaleza estructurada de los eventos en la infraestructura nueva nos ha permitido incluir compatibilidad para un lenguaje de consulta, que se basa en expresiones XPath estándar. En general, si existe una ubicación de inicio (un elemento XML), una expresión XPath puede hacer referencia a cualquier lugar dentro del elemento. Para obtener una descripción completa del lenguaje XPath, consulte la referencia oficial en w3.org/TR/xpath. Más comúnmente, una expresión XPath hace referencia a otro elemento o atributo contenido dentro del elemento de inicio. Dado que el registro de eventos es básicamente una secuencia de elementos Event, puede asumir que cada registro tiene un aspecto similar a éste:

<root>
<Event>... </Event>
...
<Event>... </Event>
</root>

El elemento raíz no tiene nombre: simplemente se usa como contexto para todas las expresiones XPath. Sólo se definen los ejes hacia delante, lo que significa que una expresión XPath puede hacer referencia a elementos Event, a sus subelementos y a sus atributos. Y si una expresión XPath selecciona un elemento existente, el resultado de la evaluación es true. Tomemos una expresión XPath muy sencilla basada en el evento mostrado en la figura 3:

*/System[Provider/@Name='Microsoft-Windows-TaskScheduler' and Level <= 2]

Esta expresión selecciona todos los elementos Event ("todo" viene representado por el asterisco) del proveedor de eventos Microsoft-Windows-TaskScheduler con nivel 2 o inferior (es decir, todos los eventos de error y críticos).

Mientras que una simple expresión XPath se puede usar para seleccionar eventos de un único registro, un lenguaje de consulta basado en XML simple pero eficaz permite la selección y supresión de eventos de cualquier registro o archivo de eventos externo. De hecho, el lenguaje de consulta es dominante en los eventos de Windows Vista. Las vistas personalizadas, por ejemplo, se basan en las consultas. Y puede usar el lenguaje de consulta para especificar qué eventos de registros específicos deben mostrarse en el panel de lista de eventos del Visor de eventos. Puede usar el lenguaje para suscribirse a eventos, archivar los eventos seleccionados y desencadenar acciones en el nuevo programador de tareas.

Las expresiones XML o XPath de consultas reales se deben proporcionar en la utilidad de línea de comandos del registro de eventos. La definición de este tipo de consultas no es apta para cualquiera, por lo que el Visor de eventos proporciona una IU sencilla para la creación de consultas comunes. El cuadro de diálogo Crear vista personalizada que se muestra en la figura 5, por ejemplo, se puede usar para crear una vista de todos los eventos del programador de tareas. Observe que cada cuadro de diálogo de creación de consulta tiene una ficha titulada XML, que muestra el texto de la consulta y permite editar la consulta directamente.

Figure 5 IU para la creación de consultas comunes

Figure 5** IU para la creación de consultas comunes **(Hacer clic en la imagen para ampliarla)

Usos comunes para las consultas

Las consultas se pueden utilizar de distintas formas, pero algunos usos son, lógicamente, más comunes que otros. Por ejemplo, las consultas se suelen utilizar para ver eventos seleccionados en el Visor de eventos o incluso en la utilidad de línea de comandos del registro de eventos.

Puede anexar una tarea a una consulta mediante el programador de tareas de Windows. Siempre que se publica un evento que coincide con la consulta, el programador de tareas iniciará la tarea designada. Tenga en cuenta que esta característica usa suscripciones y reacciona ante cualquier evento nuevo. Sólo puede suscribirse a eventos Admin y Operational; los eventos Debug y Analytic se escriben directamente en los archivos de seguimiento y el sistema no puede examinarlos cuando se producen.

Se pueden usar consultas para archivar eventos exclusivos. Puede seleccionar eventos de registros activos de cualquier tipo, archivos de eventos de nivel inferior (archivos EVT), archivos de seguimiento externo o archivos de almacenamiento de eventos de Windows Vista. Un archivo de almacenamiento se puede abrir en el Visor de eventos, se puede hacer una copia de seguridad en un almacenamiento secundario, o bien se puede enviar al personal de soporte técnico para obtener ayuda con el diagnóstico de un problema. Todas las descripciones de eventos y otras cadenas asociadas a eventos se pueden anexar al archivo en un idioma seleccionado durante la operación de archivo. En este caso, los eventos estarán disponibles con descripciones completas en el idioma seleccionado en cualquier equipo.

Por último, las consultas se pueden usar para reenviar eventos a un sistema dedicado a recopilar eventos. Esta característica utiliza el nuevo servicio de recopilación de eventos, que permite a un administrador crear suscripciones de eventos en equipos remotos. Estas suscripciones persisten en el equipo recopilador y se pueden volver a intentar mediante una programación configurable. El recopilador de eventos emplea el protocolo WS-Management estándar del sector para crear suscripciones en los equipos remotos y el protocolo WS-Eventing para transferir eventos. Ambos protocolos son seguros y se pueden usar con el servidor de seguridad. Los eventos recibidos por el recopilador de eventos se guardan en el registro de eventos local.

Conclusión

Los cambios de Windows Eventing son drásticos y de gran alcance: en este artículo se mencionan sin entrar en detalles. Podríamos dedicar un artículo entero sólo a la característica de reenvío de eventos.

El sistema de eventos cuenta con mejoras en el rendimiento, la escalabilidad, la confiabilidad y la seguridad. No debe olvidarse que el objetivo principal era mejorar la capacidad de administración de Windows. El lenguaje de consulta, junto con las vistas del Visor de eventos, permite detectar problemas con más facilidad. La completa integración con el programador de tareas abre las puertas a la supervisión sencilla, la resolución automática de problemas y la rápida notificación del desarrollo de los mismos. Y el reenvío de eventos permite el archivo de eventos y la supervisión sin agente de servidores y equipos de escritorio.

Todas estas características se implementan sin renunciar a la compatibilidad con versiones anteriores, lo que significa que las soluciones existentes seguirán funcionando. Por último, las mejoras de los eventos deberían ayudar a las organizaciones a administrar sus sistemas de una forma más eficaz.

Val Menn pertenece al grupo de infraestructuras de administración de Microsoft, donde es administrador de programas para el registro de eventos. Anteriormente trabajó como ingeniero de software y administrador de sistemas para una serie de empresas emergentes.

© 2008 Microsoft Corporation and CMP Media, LLC. Reservados todos los derechos; queda prohibida la reproducción parcial o total sin previa autorización.