# glogger_logdata

## Name

glogger_logdata -- GLogger 出力データ形式

## DESCRIPTION

GLogger が出力するファイルのデータ構造です。

ファイルのデータ構造

  GLoggerの観測ログデータファイルは、メタデータブロックと データブロックグループの連続で構成されます。

  メタデータブロックは、ファイルの先頭に 1つ存在します。

  データブロックグループは、複数のデータブロックで構成されます。

  データブロックは、時刻とその時刻の観測データ値の列です。

  データブロックの出現順序と、観測事象の種類との関係は、 メタデータブロック内で対応を定義します。

  データブロックグループのサイズは、固定長であり、 メタデータブロックで定義します。

  たとえば 1時間単位でファイルを切り替えなければならないといった 制約はなく、最大サイズはファイルシステムに依存します。 (GLogger では、指定ファイルサイズで新しいファイルへ出力するように 切り替えることが可能です)

  このデータ構造のログファイルに追記はできません。

メタデータブロック

  固定長部分と可変長部分に分けています。

  1: メタデータブロック 1 [24bytes]
  2: メタデータブロック 2 [ 可変長]

メタデータブロック 1

  1: メタデータブロック 1 のサイズ(以下何bytes続くか) [ 2bytes]
  2: バージョン番号 [ 2bytes]
  3: データブロックグループのサイズ [ 4bytes]
  4: このファイルの計測開始日時(UNIX time 秒) [ 4bytes]
  5: このファイルの計測開始日時(UNIX time マイクロ秒) [ 4bytes]
  6: データブロックグループひとつの時間間隔(秒) [ 4bytes]
  7: データブロックグループひとつの時間間隔(マイクロ秒) [ 4bytes]
  8: 予約領域

メタデータブロック 2

  1: メタデータブロック 2 のサイズ(以下何bytes続くか) [ 4bytes]
  2: 観測対象ホスト定義部分
  計測対象ホストの IP アドレスリストと
  ホスト名 (FQDN)と略称のリストとコミュニティストリング
  →並び順にインデックス番号(1,2,...) [ 可変長]
  3: OID 定義部分
  OID と OID 名と OID 略称と
  →並び順に OID インデックス番号(1,2,...) [ 可変長]
  4: 測定インターバル表
  上で定義したホストインデックス番号と
  OID インデックス番号の組合せごとの
  測定インターバル(秒+マイクロ秒) [ 可変長]
  5: データブロックグループ対応表 [ 可変長]
  6: 予約領域 [ 可変長]

  [可変長]は、サイズを2bytesで表して先頭に付加し、以降任意データが続きます。 この2bytes自身のサイズは含まれません。

  ホスト定義部分: {IPアドレス(文字列)}{NULL}{FQDN}{NULL}{略称}{NULL}{community string}{NULL} の繰り返しです。IPアドレス部分は 192.168.0.1 のような表記です。

  OID定義部分: {OID名(設定ファイルで指定した文字列)}{NULL}{略称}{NULL} の繰り返しです。

  測定インターバル表: {ホストインデックス番号}{OIDインデックス番号}{時間(8bytes)} の繰り返しです。 時間は秒が 4bytes, マイクロ秒が 4bytesの順で合計 8bytes です。

  データブロックグループ対応表: {個数(n個) 2bytes}{(ホストインデックス番号 + OIDインデックス番号) * n} の繰り返しです。 1つのデータブロックグループ内のデータブロックの出現順序を 定義した表になっています。 個数は、対応するデータブロック内のデータの個数(ホストインデックス番号と OIDインデックス番号の組あわせの個数)を示します。 個数が 0の場合、そのタイミングではデータブロックが出現しない (時刻データすら出現しない)ことを示し、対応するデータブロックは存在しません。

  インデックス番号は、2bytes = 0〜65535 です。

データブロックグループ

  データブロックグループ対応表の順番に、データブロックが続きます。 すべてのデータブロックの種類の出現パターン 1周期を示します。 (データブロックには、同時刻の計測データがまとめられています。) この論理的にまとめた 1周期をデータブロックグループとしています。 よってデータブロックグループと次のデータブロックグループの間には、 区切りのためのデータは存在しません。

  1: データブロック
  2: 以下、データブロックの繰り返し

データブロック

  同時刻の各測定値が一つにまとまったデータの組になっています。 計測データの無い時刻には、データブロックは出現しません (時刻データも出現しません)。

  ひとつのデータブロックは可変長ですが、データブロックグループ対応表から、 サイズが決定できます。 ひとつのデータブロックサイズ = 時刻データ 8bytes + 計測データの個数(n個) * 5bytes となっています。 計測データが無い時刻のデータブロックは存在しません。

  1: このデータブロックの計測時刻(UNIX time 秒) [ 4bytes]
  2: このデータブロックの計測時刻(UNIX time マイクロ秒) [ 4bytes]
  3: 1番目の計測データフラグ [ 1bytes]
  4: 1番目の計測データ [ 4bytes]
  5: 以下同一時刻の計測データフラグ、データの繰り返し
  n: 予約領域

  ※ 例: 256 ノードの場合、合計 1288 バイト

  データフラグの各ビットの意味(下位ビットから順に)
  データ有効 1 無効 0 (タイムアウトの場合も有効)
  測定成功 1 失敗 0 (タイムアウトは失敗)

## SEE ALSO

glogger(8)