Syslog (System Logging Protocol) は、ネットワークデバイスが標準のメッセージ形式を使用してロギングサーバーと通信する方法で、ネットワークデバイスの監視に利用できます。デバイスは、Syslog エージェントを使用して、様々な条件で通知メッセージを送信できます。
ログメッセージには、タイムスタンプ、重大度、デバイス ID(IPアドレスを含む)、およびイベント固有の情報が含まれます。問題点がないわけではないのですが、Syslog プロトコルは実装が簡単で、広い範囲で採用されており、ほとんどすべての接続デバイスを監視できます。また、かなりオープンエンドであり、異なった独自の実装も実現可能です。
Syslog は、MacOS、Unix、Linux、その他の *nix で動作します。Windows ベースのサーバーは Syslog をネイティブにサポートしていませんが、サードパーティーが提供する様々なツールを利用すれば、Windows デバイスも Syslog サーバーと通信できます。
注:「Syslog」という用語を使って、実際のサーバープロセスや「デーモン」(正確を期したい人は、Syslog デーモンを syslogd と呼びます)、メッセージ形式、プロトコルなど、様々なものが参照され得ます。こういった現象は、長い間、広く使用されている、複数の用途があるシステムに関しては起こりがちです。
Syslog サーバー
ルーター、スイッチ、ファイアウォール、サーバー、プリンター、その他の様々なデバイスがログメッセージを生成し、Syslog サーバーは、ログファイルを介して膨大な数の syslog イベントを監視できます。
Syslog サーバーは、分析のためにログメッセージを受信、分類、保存し、ネットワーク上のあらゆる場所で何が起こっているかを把握できる包括的なビューを保持します。この包括的なビューなしでは、デバイスの誤動作を見逃す可能性があり、停止が発生したときに何が原因かを追跡することも困難です。
Syslog メッセージ
Syslog メッセージは、User Datagram Protocol(UDP)、ポート514を介して送信されます。UDP はコネクションレスプロトコルと呼ばれるもので、メッセージの受信確認や受信の保証はありません。この点が問題になる可能性がありますが、システムはシンプルで管理しやすくなります。
必ずしもそうする必要はないのですが、多くの場合、Syslog メッセージは人間が読める形式になっています。ヘッダーには、各メッセージの優先度レベルがあります。これは、メッセージを作成するデバイスのプロセスのコードと重大度レベルの組み合わせです。”facility” と呼ばれるプロセスコードは、UNIXから派生しています。重大度レベルの範囲は、緊急の場合は0、即座に対応が必要な場合は1、情報の場合は6、デバッグメッセージの場合は7です。
このヘッダーの内容を利用して、Syslog メッセージを簡単に分類することができます。
データの収集と管理
Syslog サーバーは、上述のように各デバイスからのすべてのメッセージを Syslog データとして保持します。そのため、極めて大量の Syslog データが生成されることになり、大規模なデータベースが必要になります。
また、サーバーがアラート、アラーム、および通知を自動的に生成できるようにする管理とフィルタリングのソフトウェアも必要です。フィルタリングは、例えばファイアウォールなど、特定のソースからの任意の期間のデータをチェックしたいといった場合に有用です。
システム管理者は、リモートテキストメッセージや画面上のポップアップメッセージで、通常の動きと異なる状況を認知できます。特定のデバイスに何らかの懸念がある場合は、しきい値を低く設定して、たとえ重大度が低いメッセージであっても、厳重な監視を行うようにすることが可能です。
Syslog データは、詳細なレポートやネットワークの構造をわかりやすく表示するダイヤグラムの生成など、さまざまな方法で使用できます。
セキュリティ情報およびイベント管理(Security Information and Event Management、SIEM)ソフトウェアは、Syslog が収集する大量のログデータを追跡、統合、および分析する方法を提供します。SIEM は、当初はコンプライアンスレポートに重点を置いていましたが、現在では Syslog と整合性の良いツールとしてより広く使用されています。
Syslog と SNMP との違い
簡易ネットワーク管理プロトコル(Simple Network Management Protocol、SNMP)は、ネットワーク監視のためのもう1つのプロトコルです。SNMP の動作は Syslog とは異なり、デバイスにポーリングすることで情報を取得します。多くの場合、Syslog サーバーは、SNMP データ、特に SNMP トラップを受信でき、SNMP 対応デバイスならポーリングしなくてもある程度の状況が把握できます。
Syslog は規模が広く、形式の制約が少なく、多くの異なる種類のイベントをカバーしますが、SNMP は予測可能で制約された状況に最適です。
Syslog の異種
Syslog に加えて、その異種として Rsyslog と Syslog-ngがあります。Syslog は1980年代初期にさかのぼるオリジナルですが、他の2つはそれ以降に少し違った形で出てきました。
Syslog-ngは1988年から、新しいフィルタリングや暗号化機能が追加された形で、出てきました。シンタックスは Syslog から直接派生するものではないので、Syslog-ng サーバーと Syslog-ng の設定は Syslog のものとは多少異なります。こちらをクリックすると、Syslog-ng の詳細にアクセスできます。
Rsyslog は2004年に出てきましたが、Syslog から直接派生したものであり、rsyslog.conf として syslog.conf を使用できます。そのため、Syslog の代わりとして簡単に使用できます。Rsyslog も、Syslog-ng のように、非構造化データを解析して様々な宛先に送信するといったような機能改善が加えられています。
Syslog-ng も Rsyslog も、UDP に加えて、TCP、TLS、RELP が使用できます。