Rsyslogは、IPネットワークを使用してすべてのログファイルを一元化されたログサーバーに送信するオープンソースのログプログラムです。これは、Linux上のSyslogの改良版です。これにより、システム管理者は1つの場所からすべてのサーバーを監視できます。
Rsyslogは、ポート514またはTCP/UDPプロトコルを介して構成されたカスタムポートでリモートクライアントからログを受信するクライアント/サーバーモデルで動作します。また、ログの保存に使用されるデータベース(MySQL、PostgreSQL)もサポートしています。
ここLinuxAPTでは、サーバー管理サービスの一環として、お客様がLinuxシステムで関連するRsyslog構成クエリを実行するのを定期的に支援しています。
これに関連して、Debian10/11にRsyslogをインストールして設定する方法を検討します。
DebianLinuxシステムにRsyslogサーバーをインストールして設定する手順
1.Rsyslogサーバーをインストールします
まず、DebianリポジトリからRsyslogパッケージをサーバーマシンにインストールします。以下のコマンドを実行します:
$ sudo apt-get install rsyslog -y
インストールが完了したら、以下に示すようにRsyslogが正しく実行されていることを確認します。
$ sudo systemctl status rsyslog
すべて問題がなければ、Rsyslogサービスがサーバーマシンで稼働しています。
2.Rsyslogサーバーを構成します
実行されたので、Debianシステム上でサーバーとして実行するようにRsyslogを設定します。 /etc/rsyslog.confである構成ファイルを開きます:
$ sudo vim /etc/rsyslog.conf
以下の行を見つけて、リモートクライアントからのUDPおよびTCPログ受信のコメントを解除します。
# provides UDP syslog reception
module(load="imudp")
input(type="imudp" port="514")
# provides TCP syslog reception
module(load="imtcp")
input(type="imtcp" port="514")
次に、Rsyslogデーモンがクライアントシステムからの受信ログを保存するために使用するテンプレートを指定する必要があります。構成ファイルの最後に次の行を追加します。
$template remote-incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?remote-incoming-logs
次に、rsyslogを再起動して、変更を有効にします。
$ sudo systemctl restart rsyslog
Rsyslogはポート514でリッスンします。構成ファイルでデフォルトのポートを変更できます。 rsyslogデーモンがポート514でリッスンしていることを確認するには、次のssコマンドを実行します。
$ sudo ss -tunlp | grep 514
3.rsyslogのファイアウォールを構成します
これで、rsyslogデーモンがサーバー上で構成されました。 UFWファイアウォールの背後にいる場合は、サーバーがクライアントからログメッセージを受信できるように、ポート514を許可します。コマンドを実行します:
$ sudo ufw allow 514/tcp
$ sudo ufw allow 514/udp
新しいルールを適用するためにファイアウォールを再起動します。コマンドを実行します:
$ sudo ufw reload
4.Rsyslogクライアントを構成します
次に、ログメッセージをRsyslogサーバーに送信するようにRsyslogクライアントを構成します。 RSyslogがクライアントマシンに正しくインストールされていることを確認してください。
まず、構成ファイルを開きます:
$ sudo nano /etc/rsyslog.conf
以下の行をコピーしてファイルの最後に貼り付けます:
#Enable sending system logs over UDP to rsyslog server
*.* @rsyslog-server-ip:514
#Enable sending system logs over TCP to rsyslog server
*.* @@rsyslog-server-ip:514
上記の構成は、TCPプロトコルとUDPプロトコルの両方を使用してログファイルをrsyslogサーバーに送信するようにクライアントに指示します。 rsyslog-server-ipをサーバーのIPアドレスに置き換えます。
リモートサーバーがダウンし、ログを保持する必要がある場合は、クライアント構成ファイルに次の行を追加して、ディスクキューバッファーを設定できます。
##Set disk queue when rsyslog server will be down:
$ActionQueueFileName queue
$ActionQueueMaxDiskSpace 1g
$ActionQueueSaveOnShutdown on
$ActionQueueType LinkedList
$ActionResumeRetryCount -1
ファイルを保存して閉じます。適用する変更のためにrsyslogサービスをリロードします:
$ sudo systemctl restart rsyslog
5.クライアントのログファイルを表示する
Rsyslogログファイルは、サーバーの/ var /log/フォルダーに保存されます。クライアントのログを表示するには、次のlsコマンドを使用します。
$ ls /var/log/
デフォルトでは、クライアントのログファイルはクライアントシステムのホスト名にちなんで名付けられたフォルダに保存されます。私の場合、クライアントシステムのホスト名はDebianです。
次に、次のコマンドを実行して、クライアントのディレクトリに含まれるログを表示します。
$ sudo ls -l /var/log/debian/
また、端末でリアルタイムにログを表示することもできます。 rootユーザーからのログを見てみましょう。次のコマンドを実行します:
$ sudo tail -f /var/log/debian/sudo.log