Syslogとは ― 重大度レベルとファシリティ
Syslogとは、
Syslogとは、ログを決まったサーバへ送り続ける仕組み
Syslogとは、機器やソフトウェアが生成したログメッセージを、決まった宛先へ送り続ける仕組みです。ログを送る側をsyslogクライアント、受け取る側をsyslogサーバと呼び、規格はRFC 5424です。
ログを1台のサーバに集めておくと、障害のときに複数の機器のログを並べて調べられます。ログの重大度の読み方、送り方、時刻をそろえる理由を順に説明します。
重大度レベル(Severity):0〜7の8段階
Syslogのメッセージには、重大度を表す数字が付いています。これを重大度レベル(Severity)と呼び、0から7までの8段階があります。
数字が小さいほど深刻な状態を表します。0のEmergencyはシステムが使用できない状態で、7のDebugはデバッグ用の詳細情報です。深刻さの順に並べると、次の表になります。
| 番号 | 名前 | 意味 |
|---|---|---|
| 0 | Emergency | システムが使用できない状態 |
| 1 | Alert | ただちに対処が必要な状態 |
| 2 | Critical | 重大な状態 |
| 3 | Error | エラーが起きている状態 |
| 4 | Warning | 警告すべき状態 |
| 5 | Notice | 平常だが注目に値する状態 |
| 6 | Informational | 参考情報としてのメッセージ |
| 7 | Debug | デバッグ用の詳細情報 |
動かして確かめる:重大度でログを絞り込む
実際の運用では、重大度の低いログまですべて送ると、サーバの負荷と保存量が増えます。そこで、しきい値を決め、数字がそのしきい値以下のログだけを送る設定がよく使われます。数字が小さいほど深刻なので、選んだ重大度と、それより深刻なログだけが送られます。次の図でしきい値を押すと、8件のサンプルログのうちどれが送られるかが変わります。
重大度の数字が0以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信されない
- 2Critical電源の二重化の片方が停止した送信されない
- 3Error設定ファイルの読み込みに失敗した送信されない
- 4Warningディスク使用率が90%を超えた送信されない
- 5Notice管理者がログインした送信されない
- 6Informational定期バックアップが正常に終わった送信されない
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が1以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信されない
- 3Error設定ファイルの読み込みに失敗した送信されない
- 4Warningディスク使用率が90%を超えた送信されない
- 5Notice管理者がログインした送信されない
- 6Informational定期バックアップが正常に終わった送信されない
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が2以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信される
- 3Error設定ファイルの読み込みに失敗した送信されない
- 4Warningディスク使用率が90%を超えた送信されない
- 5Notice管理者がログインした送信されない
- 6Informational定期バックアップが正常に終わった送信されない
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が3以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信される
- 3Error設定ファイルの読み込みに失敗した送信される
- 4Warningディスク使用率が90%を超えた送信されない
- 5Notice管理者がログインした送信されない
- 6Informational定期バックアップが正常に終わった送信されない
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が4以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信される
- 3Error設定ファイルの読み込みに失敗した送信される
- 4Warningディスク使用率が90%を超えた送信される
- 5Notice管理者がログインした送信されない
- 6Informational定期バックアップが正常に終わった送信されない
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が5以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信される
- 3Error設定ファイルの読み込みに失敗した送信される
- 4Warningディスク使用率が90%を超えた送信される
- 5Notice管理者がログインした送信される
- 6Informational定期バックアップが正常に終わった送信されない
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が6以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信される
- 3Error設定ファイルの読み込みに失敗した送信される
- 4Warningディスク使用率が90%を超えた送信される
- 5Notice管理者がログインした送信される
- 6Informational定期バックアップが正常に終わった送信される
- 7Debugルーティングテーブルの再計算を開始した送信されない
重大度の数字が7以下のログだけを、syslogサーバへ送る設定です。
- 0Emergencyファイルシステムが壊れ、システムが使用できない送信される
- 1Alertディスクの空き容量が0になった送信される
- 2Critical電源の二重化の片方が停止した送信される
- 3Error設定ファイルの読み込みに失敗した送信される
- 4Warningディスク使用率が90%を超えた送信される
- 5Notice管理者がログインした送信される
- 6Informational定期バックアップが正常に終わった送信される
- 7Debugルーティングテーブルの再計算を開始した送信される
しきい値を4(Warning)にすると、0から4までの5段階が送られ、5から7までの情報寄りのログは送られません。しきい値を7にすると、Debugまで含めたすべてのログが送られます。
ファシリティとPRI値:ログの発生元を表す区分
重大度のほかに、ファシリティという区分もあります。ファシリティは、ログを出した機能の種類を表す番号で、深刻さとは関係ありません。
RFC 5424には、0番のkernel messagesから23番のlocal use 7まで、24種類のファシリティが載っています。主なものは、次の表のとおりです。
| 番号 | ファシリティ |
|---|---|
| 0 | kernel messages(カーネル) |
| 1 | user-level messages(ユーザーレベル) |
| 2 | mail system(メールシステム) |
| 3 | system daemons(システムデーモン) |
| 4 | security/authorization messages(セキュリティ・認可) |
| 9 | clock daemon(時刻デーモン) |
| 11 | FTP daemon(FTPデーモン) |
| 12 | NTP subsystem(NTPサブシステム) |
| 16〜23 | local use 0〜7(local0〜local7。各組織が自由に使える) |
ファシリティとSeverityを組み合わせた数値を、PRI(Priority値)と呼びます。PRIは、ファシリティの番号を8倍して、Severityの番号を足して求めます。
PRIは、山括弧で囲んでメッセージの先頭に書きます。受け取ったsyslogサーバは、この値からファシリティと重大度の両方を読み取れます。
Syslogのポート番号:UDP514番とTCP・TLSでの送信方法
Syslogメッセージの送信方法は、RFC 5424ではなく、別のRFCで定義されています。
最も古くから使われてきた送信方法はUDPです。RFC 5426は、syslogサーバがUDPの514番でメッセージを受信することを定めています。UDPは届いたかどうかを確認しないので、途中でメッセージが失われても気づけません。暗号化もされません。
この弱点に対応するのが、TLSで暗号化して送る方法です。RFC 5425は、TCPの上でTLSを使う送信方法を定めていて、待ち受けるポート番号は6514番です。RFC 5424自身も、実装がTLSによる送信に対応することを必須とし、UDPへの対応は推奨にとどめています。
TCPの上で暗号化せずに送る方法も、広く使われてきました。RFC 6587は、この方法を標準としてではなく、実態の記録(Historic)としてまとめたものです。安全性に欠けるので、IETFはこの方法ではなく、TLSを使う方法を勧めています。ポート番号も標準化されていません。514番を使う実装もありますが、514番は本来、Shellプロトコルに割り当てられた番号です。
時刻をそろえるNTPの役割
複数の機器から集まったログを調べるときは、どのログが先に起きたかを知る必要があります。各機器の時計がずれていると、ログの前後関係を正しく判断できません。
NTPは、機器の時計をネットワークの先にある正しい時計に合わせるプロトコルです。syslogサーバに集めたログを調べるには、各機器の時計がNTPでそろっている必要があります。集めたログを組み合わせて攻撃の兆候を探す仕組みを、SIEMと呼びます。
SNMPとの違い
SNMPは、マネージャ(監視サーバ)がエージェントに問い合わせて値を取得する仕組みです。一方、Syslogは、機器の側からログを送り続ける仕組みです。
SNMPにも、エージェントが自発的に通知するTrapがあります。ただし、Trapは異常などのイベントを決まった形式の値で知らせる通知で、日々の出来事を文字列のログとして送り続ける用途には向きません。
SNMPは、CPU使用率や通信量といった数値を取得するのに向いています。Syslogは、何が起きたかを文字列のメッセージとして記録に残すのに向いています。数値とログを組み合わせてアプリの障害の原因を調べる方法は、オブザーバビリティの記事で説明しています。
練習問題(全5問)
正解:機器や
Syslogは、
正解:0から
RFC 5424では、
正解:34
PRIは、
正解:UDPの
RFC 5426は
正解:SNMPは
SNMPは、
選んでから「採点する」を押すと、解説つきで答え合わせができます。
関連記事
おすすめの本 PR
ネットワークを初めて学ぶ人向けの入門書です。
![『[改訂新版]3分間ネットワーク基礎講座』の表紙](https://m.media-amazon.com/images/P/4774143731.09.MZZZZZZZ.jpg)
