18.4 Gestion des fuseaux horaires

La gestion des fuseaux horaires peut s'avérer très complexe dans un environnement distribué. Par exemple, une source d'événements peut se trouver dans un premier fuseau horaire, Collector Manager dans un deuxième, le serveur Sentinel de l'interface dorsale dans un troisième et le client qui consulte les données dans un quatrième. Si vous ajoutez les difficultés liées à l'heure d'été et également au fait que de nombreuses sources d'événements n'indiquent pas le fuseau horaire dans lequel elles sont définies (c'est le cas notamment de toutes les sources syslog), vous pouvez vous trouver devant un grand nombre de problèmes à résoudre. Sentinel est adaptable : vous pouvez représenter correctement l'heure exacte à laquelle les événements se produisent, puis comparer ces événements à ceux d'autres sources du même fuseau horaire ou d'un autre.

En général, les sources d'événements signalent les tampons horaires de trois manières :

  • La source d'événements signale l'heure en temps UTC. Par exemple, tous les événements standard du journal des événements Windows sont signalés en temps UTC.

  • La source d'événements signale l'heure dans l'heure locale, mais indique toujours le fuseau horaire dans le tampon horaire. Par exemple, certaines sources d'événements qui suivent la norme RFC3339 dans la structuration des tampons horaires indiquent le fuseau horaire sous forme de décalage ; d'autres sources signalent les fuseaux horaires sous forme d'identifiants longs (Amériques//New York par exemple) ou d'identifiants courts (EST par exemple), ce qui peut provoquer des conflits et des résolutions inadéquates.

  • La source d'événements indique l'heure locale, mais pas le fuseau horaire. Malheureusement, le format syslog, extrêmement courant, suit ce modèle.

Pour ce premier scénario, vous pouvez toujours calculer en temps UTC absolu l'heure à laquelle l'événement est survenu (dans la mesure où un protocole de synchronisation est utilisé), ce qui vous permet de comparer facilement l'heure de cet événement à celle de toute autre source d'événements dans le monde. En revanche, vous ne pouvez pas déterminer automatiquement l'heure locale à laquelle l'événement s'est produit. C'est pour cette raison que Sentinel permet aux clients de définir manuellement le fuseau horaire d'une source d'événements : il suffit de modifier le noeud de la source d'événements dans le gestionnaire des sources d'événements et d'indiquer le fuseau horaire adéquat. Cette information n'a aucune incidence sur le calcul des heures DeviceEventTime ou EventTime, mais elle est placée dans le champ ObserverTZ et sert au calcul de différents champs ObserverTZ, ObserverTZHour par exemple. Ces champs sont toujours exprimés dans l'heure locale.

Dans le second scénario, si les identifiants de fuseau horaire ou des décalages sont utilisés au format long, vous pouvez convertir facilement l'heure en temps UTC, ce qui vous permet d'obtenir l'heure UTC canonique absolue (stockée dans le champ DeviceEventTime) et également de calculer les champs ObserverTZ en heure locale. En cas d'utilisation d'identifiants de fuseau horaire courts, des conflits risquent de survenir.

Le troisième scénario implique que l'administrateur définisse manuellement le fuseau horaire de toutes les sources concernées de manière à ce que Sentinel puisse calculer correctement le temps UTC. Si la modification du noeud de la source d'événements dans le gestionnaire des sources d'événements n'indique pas le fuseau horaire correctement, le champ DeviceEventTime (et probablement le champ EventTime également) peuvent être incorrects, de même que le champ ObserverTZ et les champs associés.

En général, le collecteur d'un type de source d'événements donné (Microsoft Windows par exemple) connaît la méthode de présentation des tampons horaires qu'utilise cette source et s'ajuste en conséquence. Les bonnes pratiques consistent à définir manuellement le fuseau horaire de tous les noeuds de source d'événements dans le gestionnaire des sources d'événements, sauf si vous savez que la source d'événements signale les heures dans l'heure locale et indique toujours le fuseau horaire dans le tampon horaire.

La présentation de la source d'événements pour le tampon horaire est traitée au niveau du collecteur et de Collector Manager. Les champs DeviceEventTime et EventTime sont stockés en temps UTC, tandis que les champs ObserverTZ sont stockés sous la forme de chaînes définies dans l'heure locale de la source d'événements. Ces informations sont envoyées par Collector Manager au serveur Sentinel et sont stockées dans la banque d'événements. Le fuseau horaire de Collector Manager et du serveur Sentinel ne devrait pas avoir d'incidence sur ce processus ni sur les données stockées. Toutefois, si un client affiche l'événement dans un navigateur Web, l'heure de l'événement au format UTC est convertie au format d'heure locale du navigateur Web, afin que tous les événements soient présentés aux clients en utilisant le fuseau horaire local. Si les utilisateurs souhaitent connaître l'heure locale de la source, ils peuvent consulter les champs ObserverTZ.