目次
はじめに
システム運用を主たる生業にし、RFCを読み漁っていた頃から15年が経過しました。忘れかけていたのと、今回プロダクトマネージャーとしてログ設計があったので、改めてSyslogに立ち返り、自分の理解も含めてブログにまとめて残すことにしました。
Syslog
BSD SyslogはRFC3164で定義され、その後RFC5424での拡張及びリリースとともにRFC3164は廃止となりました。
とはいえど、規格化されたログとして今日も残る形式、コンセプトです。RFCとしては廃止されましたが、実際には現在も利用されている場面が多いという認識です。
以下にRFCベースでの、説明・補足を残します。英語しかなかった頃に比べれば、日本語の訳をご丁寧につけてくれているgithubまで存在します。インターネットとはなんと便利なツールなのでしょう。
RFC3164
ドキュメント
英語
RFC 3164: The BSD Syslog Protocol
This document describes the observed behavior of the syslog protocol. This memo provides information for the Internet community.
英語 + 日本語
RFC 3164 – The BSD Syslog Protocol 日本語訳
RFC 3164は、BSD Syslogプロトコルに関する仕様を定めたものであり、システムログの収集と転送を目的としています。このRFCは、ログメッセージのフォーマットやプロトコル…
形式
RFC3164で定義されているSyslog形式は以下の並びになります。
<PRI> TIMESTAMP HOST TAG MSG
項目 | 詳細 | |
---|---|---|
PRI (Priority) | Facility と Severity の情報が含まれる | |
HEADER | タイムスタンプやホスト名等が含まれる | |
MSG | 自由記述 |
ログサンプル
<34> Aug 16 22:10:01 mymachine myapplication has started
ここで、Priorityって何?っていつもなってしまうので、以下表を残すことにしました。
Priority
- Priorityは以下表のうち、Facilityの数値コードを8倍し、Severityの数値コードを足し合わせた数値を「<」「>」で囲んだもの、になります。
Facility
数値表記 | RFC3164 | syslog.conf上表記 | 対応する送信元サービス・デーモン |
---|---|---|---|
0 | kernel messages | kern | カーネルから受け取ったメッセージ |
1 | user-level messages | user | ユーザーに関連するメッセージ |
2 | mail system | メールに関連するメッセージ | |
3 | system daemons | daemon | 特に分類されていないデーモンから受け取ったメッセージ |
4 | security / authorization messages | auth / security | 認証に関連するメッセージ |
5 | messages generated internally by syslogd | syslog | slogd サーバー (自分) から受け取ったメッセージ |
6 | line printer subsystem | lpr | 印刷サブシステムから受け取ったメッセージ |
7 | network news subsystem | news | Usenet サブシステム (特にニュースグループを管理する NNTP (Network News Transfer Protocol) サーバ) から受け取ったメッセージ |
8 | UUCP subsystem | uucp | UUCP (Unix to Unix Copy Program:電子メールメッセージの配送に使われていた古いプロトコル) サーバーから受け取ったメッセージ |
9 | clock daemon | cron | タスクスケジューリングサービス( cron や at )から受け取ったメッセージ |
10 | security/authorization messages | authpriv | 認証に関連するメッセージ |
11 | FTP daemon | ftp | FTP サーバーから受け取ったメッセージ |
12 | NTP subsystem | NTP | NTPに関連するメッセージ |
13 | log audit | ログ監査に関連するメッセージ | |
14 | log alert | ログ警告に関連するメッセージ | |
15 | clock daemon (note 2) | タスクスケジューリングサービス( cron や at )から受け取ったメッセージ | |
16 | local use 0 (local0) | local0 | その他 |
17 | local use 1 (local1) | local1 | その他 |
18 | local use 2 (local2) | local2 | その他 |
19 | local use 3 (local3) | local3 | その他 |
20 | local use 4 (local4) | local4 | その他 |
21 | local use 5 (local5) | local5 | その他 |
22 | local use 6 (local6) | local6 | その他 |
23 | local use 7 (local7) | local7 | その他 |
Severity
数値表記 | syslog.conf上表記 | 状態 |
---|---|---|
0 | emerg | システム利用不可 |
1 | alert | 即時対応が必要 |
2 | crit | 致命的な状態 |
3 | err | エラー |
4 | warn | 警告 |
5 | notice | 重要な情報 |
6 | info | 通常の情報 |
7 | debug | デバッグ情報 |
ここまでRFC3164で定義された、元祖です。
その後、RFC5424での拡張及びリリースに繋がります。
RFC5424
ドキュメント
英語
RFC 5424: The Syslog Protocol
This document describes the syslog protocol, which is used to convey event notification messages. This protocol utilizes a layered architecture, which allows th…
英語 + 日本語
RFC 5424 – The Syslog Protocol 日本語訳
RFC 5424は、シスログプロトコルに関する標準仕様であり、ログメッセージの受け渡しと管理を目的としています。このRFCは、システム管理者や開発者にとって重要な情報源と…
形式
PRIVERSION ISOTIMESTAMP HOSTNAME APPLICATION PID MESSAGEID [STRUCTURED-DATA] MSG
- PRI
- Priorityは後述のFacilityの数値コードを8倍、さらに後述Severityの数値コードを足した数値を「<」「>」で囲んだもの
- VERSION
- RFC5424リリース時にはVersion.1しかなかったため、必然的に1になる
- STRUCTURED-DATA
- 簡単に解析および解釈可能なデータ形式で、情報を表現するための構造化されたデータ。(syslogメッセージに関するメタ情報や、トラフィックカウンターやIPアドレスなどのアプリケーション固有の情報を表す場合がある)
サンプルログ(構造化データあり)
<34>1 2021-08-16T22:10:01.000Z mymachine myapplication 2017 ID10 [example@0 class="high"] BOMmyapplication has started
サンプルログ(構造化データなし)
<34>1 2021-08-16T22:10:01.000Z mymachine myapplication 2017 ID11 BOMmyapplication has started
さいごに
Syslogはインターネット黎明期に策定された、知の結晶だと思います。RFC3164ベースでも十分ですし、RFC5424の理解があるとアプリケーション開発のみならず、ログへの理解や知見を深めるのにとても役立ちます。
いつもPriorityをググってしまう自戒を込めて編集したブログですが、これをご覧になった方の役に立ちますように。
コメント