16.3 タイムゾーンの処理

分散環境では、タイムゾーンの処理が複雑になる場合があります。たとえば、あるタイムゾーンにイベントソースがあり、別のタイムゾーンにコレクタマネージャがあり、また別のタイムゾーンにバックエンドのSentinelサーバがあり、さらに別のタイムゾーンでクライアントがデータを表示している場合などです。さらに夏時間や、設定されているタイムゾーンをレポートしないイベントソース(すべてのSyslogソースなど)を考慮すると、処理を必要とする問題は多くあります。Sentinelは、イベントが実際に発生した時刻を正しく示し、これらのイベントを同じタイムゾーンまたは別のタイムゾーンの他のイベントと比較することを可能にする柔軟性を備えています。

一般的に、イベントソースがタイムスタンプをレポートする方法は3通りあります。

最初の方法では、イベントが発生した絶対UTC時刻を計算できるため(時刻同期プロトコルが使用されていると想定)、そのイベントの時刻を他の世界中のイベントソースと容易に比較できます。ただし、イベントが発生したときのローカル時刻は自動的には判断できません。このため、Sentinelでは、イベントソースのタイムゾーンを手動で設定できるようになっています。これは、イベントソースマネージャでイベントソースノードを編集して、適切なタイムゾーンを指定することにより可能です。この情報は[DeviceEventTime]や[EventTime]の計算には影響しませんが、[ObserverTZ]フィールドに取り込まれ、[ObserverTZHour]などの多様な[ObserverTZ]フィールドの計算に使用されます。これらのフィールドは、常にローカル時刻で示されます。

2つめの方法では、長い形式のタイムゾーンIDまたはオフセットが使用されている場合、UTCに変換して絶対的な標準UTC時刻([DeviceEventTime]に格納される)を取得できますが、ローカル時刻の[ObserverTZ]フィールドも計算できます。短い形式のタイムゾーンIDが使用されている場合、不一致が発生する可能性があります。

3つめの方法では、SentinelがUTC時刻を正しく計算できるよう、影響を受けるすべてのソースのイベントソースタイムゾーンを管理者が手動で設定する必要があります。イベントソースマネージャでイベントソースノードを編集してタイムゾーンを正しく指定していない場合、[DeviceEventTime](および、多くの場合は[EventTime])が正しくない可能性があり、[ObserverTZ]および関連するフィールドも正しくない場合があります。

一般的に、特定のイベントソース(たとえば、Microsoft Windowsなど)用のコレクタは、イベントソースからのタイムスタンプの形式が判明しているため、それに応じて調整を行います。イベントソースがローカル時刻でレポートし、タイムスタンプに常にタイムゾーンが含まれているのでない限り、イベントソースマネージャでイベントソースノードすべてに対して手動でタイムゾーンを設定することをお勧めします。

イベントソースからのタイムスタンプ情報は、コレクタおよびコレクタマネージャ上で処理されます。[DeviceEventTime]および[EventTime]はUTCとして格納され、[ObserverTZ]フィールドはイベントソースのローカル時刻の文字列として格納されます。この情報はコレクタマネージャからSentinelサーバに送信され、イベントストア内に格納されます。コレクタマネージャおよびSentinelサーバが配置されたタイムゾーンは、このプロセスにも格納されるデータにも影響しません。ただし、クライアントがWebブラウザでイベントを確認する場合、UTCの[EventTime]はWebブラウザによってローカル時刻に変換されます。そのため、クライアントには、すべてのイベントがローカルのタイムゾーンで示されます。ユーザがソースのローカル時刻を知りたい場合は、[ObserverTZ]フィールドで詳細を確認できます。