ネットワーク系エンジニアのTips。
便利ツールや検証中の小技を書きます。
最近はXML、SNMP、Syslog、WebService、Perlといろいろ。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
仕事でSyslogのRFCを読まねばならなくなった。
今あるSyslogのRFCは
RFC3164 The BSD syslog Protocol
RFC3195 Reliable Delivery for syslog
の2つだが、とりあえずフォーマットについて勉強したいため、先にRFC3164を読んでみる。
以下、自分の必要なところのみ意訳したもの。ところどころ飛んでるので注意。
ご意見あればコメント下さい。
----------
4. Packet Format and Contens
(中略、というか最後の部分のみ)
Section4.1ではSyslogの、あくまで推奨とするフォーマットについて記述します。Section4.2では、originalのSyslog Messageとして必要な項目、Section4.3ではrelayされるSyslog Messageに必要な点について記述します。
4.1 Syslog Message Parts
Syslog Messageは3つのパートからなります。1番目はPRI、2番目はHEADER、3番目はMSGです。パケット長は1024byte以下とします。最低のパケット長というのは特にありませんが、何も中身のないSyslogは送信すべきではありません。
4.2 PRI Part
PRIは3~5文字で、最初と最後を<>でくくります。ここでは"<"はRFC2234に基づきABNF %d60、">"は%d62とします。<>の中に入っている数字はPriorityを意味し、FacilityおよびSeverityのレベルを表します。
FacilityもSeverityもそれぞれのメッセージは10進数のコードを持っています。以下の表を参照してください。
このPriorityの値は、Facility Numberに8を掛け、Severityの値を足すことによって求められます。例えば、Local use 4(Facility=20)でSeverityがNotice(Severity=5)の場合は、20×8+5で165となります。
(以下略)
4.1.2 HEADER Part of a syslog Packet
HEADER部分はタイムスタンプと(syslogを上げた)host名またはそのIPアドレスが入ります。
(中略)
つまり、HEADER部分はTIMESTAMPフィールドとHOSTNAMEフィールドに分けられます。TIMESTAMPはPRI部分の最後となる">"のすぐ後ろから始まります。TIMESTAMPフィールドとHOSTNAMEフィールドの間は1スペース空けます。HOSTNAMEは、デバイスにHOSTNAMEを振られていなければIPアドレスが入ります。IPアドレスが複数ある場合は、Syslog Messageを送出するInterfaceのアドレスが入れるのがよくあるパターンですが、とはいえ、逆に、どのインターフェースからsyslogが出て行くかとは関係なくSrcアドレスを1つ、別に決めたいという場合もあるでしょう。その時はSrcとして設定したいアドレスをHOSTNAMEフィールドに入れればいいでしょう。
TIMESTAMPフィールドのフォーマットはMmm dd hh:mm:ssとします。
MmmはJan,Feb,Mar....といった感じで、アルファベット3つで月を表し、ddのところは日を入れます。一桁の日にちの場合(1日~9日)の場合は、Aug[space][space]7のように、07とするのではなくて、空いた一桁のところをスペースにします。
hh:mm:ssはLocal timeで24時間制で入れます。
HOSTNAMEの部分は、hostnameか、IPv4アドレス、またはIPv6アドレスのどれかを入れます。Hostname入れるのがいいと思いますが、Hostname使うなら、STD13(RFC1034)に準拠させてください。Spaceはいれないこと。
IPv4アドレスの場合はSTD13(RFC1035)に、IPv6アドレスの場合はRFC2373に従ってください。
HOSTNAMEフィールドの後には、1spaceいれて下さい。
----------
今あるSyslogのRFCは
RFC3164 The BSD syslog Protocol
RFC3195 Reliable Delivery for syslog
の2つだが、とりあえずフォーマットについて勉強したいため、先にRFC3164を読んでみる。
以下、自分の必要なところのみ意訳したもの。ところどころ飛んでるので注意。
ご意見あればコメント下さい。
----------
4. Packet Format and Contens
(中略、というか最後の部分のみ)
Section4.1ではSyslogの、あくまで推奨とするフォーマットについて記述します。Section4.2では、originalのSyslog Messageとして必要な項目、Section4.3ではrelayされるSyslog Messageに必要な点について記述します。
4.1 Syslog Message Parts
Syslog Messageは3つのパートからなります。1番目はPRI、2番目はHEADER、3番目はMSGです。パケット長は1024byte以下とします。最低のパケット長というのは特にありませんが、何も中身のないSyslogは送信すべきではありません。
4.2 PRI Part
PRIは3~5文字で、最初と最後を<>でくくります。ここでは"<"はRFC2234に基づきABNF %d60、">"は%d62とします。<>の中に入っている数字はPriorityを意味し、FacilityおよびSeverityのレベルを表します。
FacilityもSeverityもそれぞれのメッセージは10進数のコードを持っています。以下の表を参照してください。
Numerical Facility Code
0 kernel messages
1 user-level messages
2 mail system
3 system daemons
4 security/authorization messages (note 1)
5 messages generated internally by syslogd
6 line printer subsystem
7 network news subsystem
8 UUCP subsystem
9 clock daemon (note 2)
10 security/authorization messages (note 1)
11 FTP daemon
12 NTP subsystem
13 log audit (note 1)
14 log alert (note 1)
15 clock daemon (note 2)
16 local use 0 (local0)
17 local use 1 (local1)
18 local use 2 (local2)
19 local use 3 (local3)
20 local use 4 (local4)
21 local use 5 (local5)
22 local use 6 (local6)
23 local use 7 (local7)
Numerical Severity Code
0 Emergency: system is unusable
1 Alert: action must be taken immediately
2 Critical: critical conditions
3 Error: error conditions
4 Warning: warning conditions
5 Notice: normal but significant condition
6 Informational: informational messages
7 Debug: debug-level messages
このPriorityの値は、Facility Numberに8を掛け、Severityの値を足すことによって求められます。例えば、Local use 4(Facility=20)でSeverityがNotice(Severity=5)の場合は、20×8+5で165となります。
(以下略)
4.1.2 HEADER Part of a syslog Packet
HEADER部分はタイムスタンプと(syslogを上げた)host名またはそのIPアドレスが入ります。
(中略)
つまり、HEADER部分はTIMESTAMPフィールドとHOSTNAMEフィールドに分けられます。TIMESTAMPはPRI部分の最後となる">"のすぐ後ろから始まります。TIMESTAMPフィールドとHOSTNAMEフィールドの間は1スペース空けます。HOSTNAMEは、デバイスにHOSTNAMEを振られていなければIPアドレスが入ります。IPアドレスが複数ある場合は、Syslog Messageを送出するInterfaceのアドレスが入れるのがよくあるパターンですが、とはいえ、逆に、どのインターフェースからsyslogが出て行くかとは関係なくSrcアドレスを1つ、別に決めたいという場合もあるでしょう。その時はSrcとして設定したいアドレスをHOSTNAMEフィールドに入れればいいでしょう。
TIMESTAMPフィールドのフォーマットはMmm dd hh:mm:ssとします。
MmmはJan,Feb,Mar....といった感じで、アルファベット3つで月を表し、ddのところは日を入れます。一桁の日にちの場合(1日~9日)の場合は、Aug[space][space]7のように、07とするのではなくて、空いた一桁のところをスペースにします。
hh:mm:ssはLocal timeで24時間制で入れます。
HOSTNAMEの部分は、hostnameか、IPv4アドレス、またはIPv6アドレスのどれかを入れます。Hostname入れるのがいいと思いますが、Hostname使うなら、STD13(RFC1034)に準拠させてください。Spaceはいれないこと。
IPv4アドレスの場合はSTD13(RFC1035)に、IPv6アドレスの場合はRFC2373に従ってください。
HOSTNAMEフィールドの後には、1spaceいれて下さい。
----------
PR