2019年3月28日木曜日

IETF-syslog(RFC 5424)メッセージフォーマット


現在、syslogメッセージのフォーマットは以下の2つの標準があります。

  • BSD-syslogメッセージ(または、legacy-syslogメッセージとも呼ばれています。)
  • IETF-syslogメッセージ

BSD-syslogメッセージフォーマットについては、過去記事「BSD-syslogメッセージフォーマット」で紹介しています。合わせてご覧ください。

今回は、IETF-syslogメッセージフォーマットについてご紹介します。

IETF-syslogメッセージフォーマット(RFC 5424)

IETF-syslogメッセージフォーマットはRFC 5424で提唱されており、以下の3つの要素で構成されます。

  • HEADER
  • STRUCTURED-DATA
  • MSG

※参考: https://tools.ietf.org/html/rfc5424

HEADER

HEADER要素は、さらに以下の要素で構成されます。

LEN
メッセージサイズを表す数値です。syslog送信アプリケーションにより含まれない場合があります。改行などを含むマルチラインメッセージの場合、メッセージサイズが使用されます。
PRI
メッセージのファシリティとセベリティを表す数値です。数値は[ファシリティ * 8 + セベリティ]で計算され、'<'と'>'で囲まれています。詳細については、過去記事「BSD-syslogメッセージフォーマット」をご参照ください。
VERSION
syslogプロトコルのバージョン番号です。現在、バージョンは1のみです。
ISOTIMESTAMP
メッセージが生成された時間です。ISO 8601フォーマット(yyyy-mm-ddThh:mm:ss+-ZONE)で表されます。
HOSTNAME
メッセージの送信元のマシンです。
APPLICATION
メッセージを生成したデバイス、またはアプリケーションです。
PID
メッセージを送信したアプリケーションのプロセス名、またはプロセスIDです。
MESSAGEID
メッセージのID番号です。

STRUCTURED-DATA

STRUCTURED-DATA要素は、syslogメッセージに関するメタ情報、あるいはトラフィックカウンターやIPアドレスのようなアプリケーション固有の情報が含まれます。STRUCTURED-DATAは角かっこ([])で囲まれたデータブロックで構成されます。すべてのブロックにはブロックIDが含まれ、1つ以上の"名前=値"ペアが存在します。

STRUCTURED-DATA例:
[exampleSDID@0 iut="3" eventSource="Application" eventID="1011"][examplePriority@0 class="high"]

MSG

MSG要素は、メッセージ自身のテキストが含まれます。MSGで使用される文字コードは、UTF-8を使用してエンコードされたユニコードである必要があります。syslogアプリケーションがMSGをUTF-8でエンコードする場合、文字列はUnicodeのバイトオーダーマーク(BOM)で始まる必要があります。

IETF-syslogメッセージは以下のフォーマットになります。
PRIVERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID [STRUCTURED-DATA] MSG

または、メッセージサイズが含まれる場合、以下のフォーマットになります。
LEN PRIVERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID [STRUCTURED-DATA] MSG

IETF-syslogメッセージ例:
<34>1 2003-10-11T22:14:15.003Z mymachine myapplication 1234 ID47 [example@0 class="high"] BOMmyapplication is started
※APPLICATION、PID、MESSAGEID、およびSTRUCTURED-DATAはNULLにすることができます。この場合、ハイフン(-)文字によって置き換えます。
※MSG要素は完全に空欄にすることができます。例えば、MSGのテキストを付けずに、STRUCTURED-DATAのみ送信できます。

メッセージサイズを含む例:
115 <34>1 2003-10-11T22:14:15.003Z mymachine myapplication 1234 ID47 [example@0 class="high"] BOMmyapplication is started

NULLメッセージ例:
<34>1 2003-10-11T22:14:15.003Z mymachine myapplication - - - BOMmyapplication is started

https://www.jtc-i.co.jp/contact/scontact.php

各ログサーバーの製品紹介ページはこちらからご覧ください。