ITの教科書検索
入門・発展ページ読了 約10分

Syslogとは ― 重大度レベルとファシリティ

Syslogとは、機器のログを決まったサーバへ送り続ける仕組みです。重大度レベル0〜7とファシリティの読み方、UDP514番とTLSでの送り方、NTPで時刻をそろえる理由を解説します。

目次
  1. Syslogとは、ログをサーバへ送り続ける仕組み
  2. 重大度レベル(Severity)0〜7
  3. 動かして確かめる:重大度でログを絞り込む
  4. ファシリティとPRI値
  5. Syslogのポート番号:UDP514番とTCP・TLS
  6. 時刻をそろえるNTPの役割
  7. SNMPとの違い
  8. 練習問題

Syslogとは、ログを決まったサーバへ送り続ける仕組み

Syslogとは、機器やソフトウェアが生成したログメッセージを、決まった宛先へ送り続ける仕組みです。ログを送る側をsyslogクライアント、受け取る側をsyslogサーバと呼び、規格はRFC 5424です。

ログを1台のサーバに集めておくと、障害のときに複数の機器のログを並べて調べられます。ログの重大度の読み方、送り方、時刻をそろえる理由を順に説明します。

重大度レベル(Severity):0〜7の8段階

Syslogのメッセージには、重大度を表す数字が付いています。これを重大度レベル(Severity)と呼び、0から7までの8段階があります。

数字が小さいほど深刻な状態を表します。0のEmergencyはシステムが使用できない状態で、7のDebugはデバッグ用の詳細情報です。深刻さの順に並べると、次の表になります。

番号名前意味(RFC 5424 Table 2)
0Emergencyシステムが使用できない状態
1Alertただちに対処が必要な状態
2Critical重大な状態
3Errorエラーが起きている状態
4Warning警告すべき状態
5Notice平常だが注目に値する状態
6Informational参考情報としてのメッセージ
7Debugデバッグ用の詳細情報

動かして確かめる:重大度でログを絞り込む

実際の運用では、重大度の低いログまですべて送ると、サーバの負荷と保存量が増えます。そこで、しきい値を決め、数字がそのしきい値以下のログだけを送る設定がよく使われます。数字が小さいほど深刻なので、選んだ重大度と、それより深刻なログだけが送られます。次の図でしきい値を押すと、8件のサンプルログのうちどれが送られるかが変わります。

重大度の数字が4以下のログだけを、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種類のファシリティが載っています。主なものは、次の表のとおりです。

番号ファシリティ
0kernel messages(カーネル)
1user-level messages(ユーザーレベル)
2mail system(メールシステム)
3system daemons(システムデーモン)
4security/authorization messages(セキュリティ・認可)
9clock daemon(時刻デーモン)
11FTP daemon(FTPデーモン)
12NTP subsystem(NTPサブシステム)
16〜23local use 0〜7(local0〜local7。各組織が自由に使える)

ファシリティとSeverityを組み合わせた数値を、PRI(Priority値)と呼びます。PRIは、ファシリティの番号を8倍して、Severityの番号を足して求めます。

ファシリティlocal4(20番)Severity(重大度)Notice(5)×8+PRI(Priority値)20 × 8 + 5 = 165メッセージの先頭に書く<165>
ファシリティの番号(20)を8倍し、Severityの番号(5)を足すと、165になります。この165を<165>のように山括弧で囲んだものが、メッセージの先頭に書かれるPRIです(RFC 5424の例)。

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への対応は推奨にとどめています。

ルータsyslogクライアントUDP 514番(既定)スイッチsyslogクライアントUDP 514番(既定)WebサーバsyslogクライアントTCP + TLS 6514番(暗号化)syslogサーバログを集約する側3台分のログが1か所にそろう
ルータとスイッチは、UDPの514番でログをsyslogサーバへ送ります。これが既定の送信方法です。Webサーバは、TCPの上でTLSを使い、6514番に暗号化して送ります。3台のログは、すべて1台のsyslogサーバに集まります。

TCPの上で暗号化せずに送る方法も、広く使われてきました。RFC 6587は、この方法を標準としてではなく、実態の記録(Historic)としてまとめたものです。安全性に欠けるので、IETFはこの方法ではなく、TLSを使う方法を勧めています。ポート番号も標準化されていません。514番を使う実装もありますが、514番は本来、Shellプロトコルに割り当てられた番号です。

時刻をそろえるNTPの役割

複数の機器から集まったログを調べるときは、どのログが先に起きたかを知る必要があります。各機器の時計がずれていると、ログの前後関係を正しく判断できません。

NTPは、機器の時計をネットワークの先にある正しい時計に合わせるプロトコルです。syslogサーバに集めたログを調べるには、各機器の時計がNTPでそろっている必要があります。集めたログを組み合わせて攻撃の兆候を探す仕組みを、SIEMと呼びます。

SNMPとの違い

SNMPは、マネージャ(監視サーバ)がエージェントに問い合わせて値を取得する仕組みです。一方、Syslogは、機器の側からログを送り続ける仕組みです。

SNMPにも、エージェントが自発的に通知するTrapがあります。ただし、Trapは異常などのイベントを決まった形式の値で知らせる通知で、日々の出来事を文字列のログとして送り続ける用途には向きません。

SNMPは、CPU使用率や通信量といった数値を取得するのに向いています。Syslogは、何が起きたかを文字列のメッセージとして記録に残すのに向いています。数値とログを組み合わせてアプリの障害の原因を調べる方法は、オブザーバビリティの記事で説明しています。

練習問題(全5問)

Q1Syslogの説明として正しいものは?
Q2重大度レベル(Severity)の説明として正しいものは?
Q3ファシリティが4番(security/authorization messages)、Severityが2(Critical)のとき、PRIの値はどれ?
Q4Syslogの送信方法として正しいものは?
Q5SNMPとSyslogの違いとして正しいものは?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

おすすめの本 PR

ネットワークを初めて学ぶ人向けの入門書です。

目的別の本の選び方を見る

ネットワークの記事を探す