12.3 Cómo manejar las zonas horarias

El manejo de las zonas horarias puede llegar a ser muy complejo en un entorno distribuido. Por ejemplo, podría tener un origen de evento en una zona horaria, el gestor de recopiladores en otra zona, el servidor Sentinel posterior en otra y el cliente podría visualizar los datos en otra zona horaria. Si además se añade el componente del horario de verano y los numerosos orígenes de eventos que no informan de la zona horaria en la que están definidos (por ejemplo, los orígenes de syslog), son numerosos los problemas a tener en cuenta. Sentinel es flexible para que pueda representar adecuadamente la hora a la que los eventos ocurren realmente, y comparar esos eventos con eventos de otros orígenes de la misma zona horaria o zonas horarias diferentes.

En general, tres escenarios diferentes representan la forma en que los orígenes de eventos informan de las marcas horarias:

Para el primer escenario, siempre es posible calcular la hora UTC absoluta a la que se produjo un evento (suponiendo que se está utilizando un protocolo de sincronización horaria), de manera que se puede comparar fácilmente la hora del evento con cualquier otro origen de evento en el mundo. Sin embargo, no es posible determinar automáticamente la hora local a la que ocurrió el evento. Por este motivo, Sentinel permite a los clientes definir manualmente la zona horaria de un origen de evento editando el nodo Origen de evento en el Gestor de orígenes de eventos y especificando la zona horaria adecuada. Esta información no afecta al cálculo de la hora del evento del dispositivo (DeviceEventTime) o la hora del evento (EventTime), pero se coloca en el campo de zona horaria de observador (ObserverTZ), y se utiliza para calcular varios campos de zona horaria del observador (ObserverTZ), como hora de la zona horaria del observador (ObserverTZHour). Estos campos siempre se expresan en la hora local.

El segundo escenario es en general el más sencillo. Si se utilizan las IDs de zona horaria de formato largo o diferencias horarias, es posible convertir fácilmente al formato UTC para obtener la hora UTC canónica absoluta (guardada en DeviceEventTime), pero también se pueden calcular fácilmente los campos ObserverTZ de hora local. Si se utiliza la ID de zona horaria de formato corto, existe la posibilidad de que surjan conflictos.

El tercer escenario puede ser el más complicado, porque requiere que el administrador defina manualmente la zona horaria del origen del evento para todos los orígenes afectados de manera que Sentinel pueda calcular correctamente la hora UTC. Si la zona horaria no se especifica correctamente editando el nodo de Origen de eventos en el Gestor de orígenes de eventos, entonces puede que DeviceEventTime (y probablemente EventTime) sea incorrecto; además, el campo ObserverTZ y sus campos asociados podrían ser incorrectos.

En general, el recopilador de un tipo determinado de origen de evento (por ejemplo, Microsoft Windows) sabe cómo un origen de evento presenta las marcas horarias y se ajusta en la forma adecuada. Siempre es una buena directiva definir manualmente la zona horaria para todos los nodos de orígenes de eventos en el gestor de orígenes de eventos, a menos que el origen del evento informe la hora local y siempre incluya la zona horaria en su marca horaria.

El procesamiento de la presentación de la marca horaria en el origen del evento tiene lugar en el recopilador y en el gestor de recopiladores. Los campos DeviceEventTime y EventTime se almacenan como UTC, y los campos de ObserverTZ se almacenan como cadenas definidas en la hora local del origen de evento. Esta información se envía desde el gestor de recopiladores al servidor Sentinel y se guarda en el almacén de eventos. La zona horaria en la que se encuentran el gestor de recopiladores y el servidor Sentinel no debería afectar a este proceso ni a los datos almacenados. Sin embargo, cuando un cliente visualiza el evento en un navegador Web, la hora UTC del evento se convierte a la zona local en función del navegador Web, de manera que todos los eventos se presentan a los clientes en la zona horaria local. Si los usuarios desean ver la hora local del origen, pueden examinar los campos ObserverTZ para obtener más detalles.