現在、syslogメッセージのフォーマットは以下の2つの標準があります。
- BSD-syslogメッセージ(または、legacy-syslogメッセージとも呼ばれています。)
- IETF-syslogメッセージ
BSD-syslogメッセージフォーマットについては、「BSD-syslog(RFC 3164)メッセージフォーマット」をご覧ください。
今回は、後者の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(RFC 3164)メッセージフォーマット」をご参照ください。 |
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
各ログサーバーの製品紹介ページはこちらからご覧ください。