大量のサーバーやネットワーク機器などの稼働状況を把握するためには、syslogの利用が便利です。
本記事では、syslogに焦点を当て、用途やログの見方のほか、syslogサーバーの構築方法についても紹介します。
VPSならミライサーバー
\2週間無料・全プランSSD搭載/
ミライサーバーを無料で試す
目次
syslogの概要
syslogの仕組み、用途、syslogとrsyslogの違いについて解説します。
syslog とは
syslogとは、サーバーやルーター、プリンターなどの機器の稼働状況を把握するための仕組みです。
例えばLinuxでは、稼働しているプログラムのログをシステムログとして記録する「syslogd」というプログラムが動いています。
これはデーモンとして常に稼働し続け、プログラムが出力するメッセージを記録します。
Linuxの稼働状況を示すログは「/var/log」ディレクトリ配下に格納され、プログラムごとに分かれてファイルに保存されます。
ログファイルの例としては、以下のようなものがあります。
- messages:システムログ
- cron:スケジューリングされたタイミングでプログラムを実行するcronのログ
- secure:ユーザーのログイン情報などセキュリティに関するログ
このほか、ネットワーク上のメッセージを転送するプロトコルも「syslog」(System Logging Protocol)です。
このプロトコルを利用して、ネットワーク上にあるシステムログを集約して管理するサーバーを「syslogサーバー」と呼びます。
syslogは、サーバーやネットワーク機器で稼働するプログラムのメッセージを保存する仕組みと、ネットワーク上のシステムログを転送するプロトコルという2つの意味を持ちます。
syslogの用途
syslogが最もよく活用される用途は、「システムの監視」です。
システムに何らかの異常が起こった場合、そのタイミングに手動でシステムログを確認するのは困難です。
そのため、syslogを利用して常時出力されるメッセージをファイルに保存し、その内容を監視ツールによって監視します。
例えば、システムログ(messages)には、CPUやメモリなどのハードウェアの異常やOSの異常を検知した場合にメッセージが出力されます。
そこで監視ツールに対して『システムログで「ERROR」または「Failed」の単語が出力されたら、アラートを通知する』という設定を行います。
これにより、メッセージが出力されたタイミングで監視ツールによって通知が行われ、異常に対してすぐに気づくことができます。
syslogと監視ツールで監視できるのはハードウェアやOSの異常だけではありません。
OS上で稼働しているアプリケーションやデータベースなどのプログラムのログも、同様に監視できます。
プログラムが停止やエラー、パフォーマンスの停止などの異常が発生した場合も、ログに出力されます。
このようなプログラムの稼働状況以外にも、ユーザーのログイン状況(ログイン成功・失敗)もログが出力されます。
これを監視すればセキュリティ監視も可能です。
このように、syslogは主に監視のために利用されます。
syslogとrsyslog
Unix/Linux系OSにおいて、システムログを出力するプログラムは「syslog」のほかに「rsyslog」があります。
rsyslogは、syslogを改良・機能追加したものであり、多くのLinuxディストリビューションに採用されています。
syslogとrsyslogは、以下のような違いがあります。
syslog | rsyslog | |
---|---|---|
通信プロトコル | UDP | TCP |
ログのフィルタリング | 不可 | 可能 |
圧縮機能 | なし | あり |
暗号化機能 | なし | あり |
syslogは通信プロトコルとしてUDPを使用しています。
UDPでは通信途中でデータが欠落する可能性があるため、信頼性の高いTCPを使用したrsyslogが開発されました。
rsyslogはフィルタリング機能や暗号化機能も追加され、より使いやすいものになっています。
TCPやUDPについてもっと知りたい方は、「TCP/IPとは」の記事をご覧ください。
>TCP/IPとは。プロトコルの特徴やOSI参照モデルとの違いを解説
syslogの基本設定
syslogでは、さまざまな設定が行えます。
特にrsyslogでは、フィルタリングや振り分けなどの設定も行えます。
今回はrsyslogでの設定例を紹介します。
設定ファイルは「/etc/rsyslog.conf」です。
ファシリティ
ファシリティはメッセージの出力元を指し、どのようなメッセージを記録するか選択できます。
主に以下のようなものがあります。
キーワード | 送信元 |
---|---|
kern | カーネル関連のメッセージ |
auth(または authpriv) | 認証関連のメッセージ |
システムが送信するメール関連のメッセージ | |
daemon | daemon関連のメッセージ |
cron | cron関連のメッセージ |
syslog | syslog関連のメッセージ |
local0~7 | その他(独自設定) |
プライオリティ(優先度)
プライオリティは、メッセージを記録する優先度です。
プライオリティが低いものまで収集するとログが増大してしまうため、必要なもののみにとどめることが大切です。
優先度が高い順に以下のように定められています。
キーワード | 優先度 |
---|---|
emerg | 緊急 |
alert | 早急な対処が必要 |
crit | 致命的 |
err | エラー |
warning | 警告 |
notice | 注意 |
info | 情報 |
debug | デバッグ |
none | 無効、ログを出力しない |
このファシリティとプライオリティを組み合わせて、フィルタリングを設定することができます。
例えば、以下の設定では「cron関連のinfo以上のログを/var/log/cronに出力する」という内容になります。
syslogサーバーの構築
syslogサーバーを構築すると、ネットワーク上の各機器から出力されるメッセージを収集し、一元管理できます。
本章では、syslogサーバーの構築方法について解説します。
※OSは、RHEL 7を想定
コマンドを使用するため、苦手な方はこちらの「基本のLinuxコマンド集」を見ながら作業してくださいね。
2022.12.01
基本のLinuxコマンド集。目的別に紹介します【初心者必見】
GUI(グラフィカルユーザーインタフェース)で直感的に操作できるWindowsに比べ、Linuxはコマンドを使用するCUI(キャラクタユーザ...
rsyslogのインストール
前提として、サーバーおよびクライアント双方にrsyslogをインストールします。
RHEL 7は、rsyslogがインストール済みです。
以下のコマンドでインストールされているか確認できます。
サーバー側の設定
syslogサーバー側で、クライアントからsyslogを受け付けるための設定を行います。
設定ファイルである /etc/rsyslog.conf を編集します。
最初に、クライアントからの通信を受け付けるための設定を行います。
次の行のコメントを(行頭の#)を削除します。
これは、514/UDPおよび514/TCP両方の通信を受け付けることを意味します。
$ModLoad imudp
$UDPServerRun 514
$ModLoad imtcp
$InputTCPServerRun 514
次に、受信したメッセージに使用するテンプレートを作成します。
これは、受信したメッセージをローカルに保存する場所を指示する役割を持ちます。
「GLOBAL DIRECTIVES」ブロックの前に記述する必要があります。
$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log”
. ?RemoteLogs & ~
この例では、/var/log ディレクトリの配下にホスト名ごとのディレクトリがつくられ、その中にプログラム名ごとのログファイルが保存されます。
これで、サーバー側の設定は完了です。
rsyslogを再起動すれば、設定が反映されます。
なお、サーバー側でSELinuxやファイアウォールなどにより通信制限がされている場合は、通信ポートを開くように設定を行ってください。
クライアント側の設定
syslogサーバーに対して、syslogを送信するための設定を行います。
/etc/rsyslog.conf を編集します。
ファイルの末尾に、以下の行を追記します。
これは「syslogで生成されたすべてのログを192.168.1.254のポート514/TCPに対して送信する」という意味です。
「*. *」は送信するファシリティを指します。
例えば、メール関連のメッセージのみ送信したい場合は、「mail.*」と記載します。
「192.168.1.254」は、syslogサーバーのIPアドレスに置き換えてください。
「@@」だと信頼性が高いTCP、「@」だと高速に処理されるUDPで通信します。
サーバー側で設定した内容と同じ設定を行います。
これで、クライアント側の設定は完了です。
rsyslogを再起動すれば、設定が反映されます。
まとめ
今回はsyslogの用途やログの見方のほか、syslogサーバーの構築方法について解説しました。
サーバーやネットワーク機器の稼働状況を監視するために、syslogは欠かせないものです。
多くの機器でシステムが構成されていたり、長期間システムが稼働したりすると、ログも大量に出力され、管理が難しくなります。
そのため、syslogを上手に設定し、一元管理することが大切です。
ぜひ今回の記事の内容を参考に、syslogを上手に活用してください。
UnixやLinuxのVPSならミライサーバー
ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。
ミライサーバーのVPSでは、高速処理が可能なSSDを全プランに搭載しています。
OSは、UbuntuやDebian、AlmaLinuxなどの豊富なラインアップから選択できます。
2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。