RFC3164 / RFC5424ベース:Syslogのまとめ

目次

はじめに

システム運用を主たる生業にし、RFCを読み漁っていた頃から15年が経過しました。忘れかけていたのと、今回プロダクトマネージャーとしてログ設計があったので、改めてSyslogに立ち返り、自分の理解も含めてブログにまとめて残すことにしました。

Syslog

BSD SyslogはRFC3164で定義され、その後RFC5424での拡張及びリリースとともにRFC3164は廃止となりました。

とはいえど、規格化されたログとして今日も残る形式、コンセプトです。RFCとしては廃止されましたが、実際には現在も利用されている場面が多いという認識です。

以下にRFCベースでの、説明・補足を残します。英語しかなかった頃に比べれば、日本語の訳をご丁寧につけてくれているgithubまで存在します。インターネットとはなんと便利なツールなのでしょう。

RFC3164

ドキュメント

英語

英語 + 日本語

形式

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

数値表記RFC3164syslog.conf上表記対応する送信元サービス・デーモン
0kernel messageskernカーネルから受け取ったメッセージ
1user-level messagesuserユーザーに関連するメッセージ
2mail systemmailメールに関連するメッセージ
3system daemonsdaemon特に分類されていないデーモンから受け取ったメッセージ
4security / authorization messagesauth / security認証に関連するメッセージ
5messages generated internally by syslogdsyslogslogd サーバー (自分) から受け取ったメッセージ
6line printer subsystemlpr印刷サブシステムから受け取ったメッセージ
7network news subsystemnewsUsenet サブシステム (特にニュースグループを管理する NNTP (Network News Transfer Protocol) サーバ) から受け取ったメッセージ
8UUCP subsystemuucpUUCP (Unix to Unix Copy Program:電子メールメッセージの配送に使われていた古いプロトコル) サーバーから受け取ったメッセージ
9clock daemoncronタスクスケジューリングサービス( cron や at )から受け取ったメッセージ
10security/authorization messagesauthpriv認証に関連するメッセージ
11FTP daemonftpFTP サーバーから受け取ったメッセージ
12NTP subsystemNTPNTPに関連するメッセージ
13log auditログ監査に関連するメッセージ
14log alertログ警告に関連するメッセージ
15clock daemon (note 2)タスクスケジューリングサービス( cron や at )から受け取ったメッセージ
16local use 0 (local0)local0その他
17local use 1 (local1)local1その他
18local use 2 (local2)local2その他
19local use 3 (local3)local3その他
20local use 4 (local4)local4その他
21local use 5 (local5)local5その他
22local use 6 (local6)local6その他
23local use 7 (local7)local7その他

Severity

数値表記syslog.conf上表記状態
0emergシステム利用不可
1alert即時対応が必要
2crit致命的な状態
3errエラー
4warn警告
5notice重要な情報
6info通常の情報
7debugデバッグ情報

ここまでRFC3164で定義された、元祖です。

その後、RFC5424での拡張及びリリースに繋がります。

RFC5424

ドキュメント

英語

英語 + 日本語

形式

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をググってしまう自戒を込めて編集したブログですが、これをご覧になった方の役に立ちますように。

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次