Rsyslogは、IPネットワークを使用してすべてのログファイルを一元化されたログサーバーに送信するオープンソースのログプログラムです。これは、Linux上のSyslogの改良版です。これにより、システム管理者は1つの場所からすべてのサーバーを監視できます。
Rsyslogは、ポート514またはTCP/UDPプロトコルを介して構成されたカスタムポートでリモートクライアントからログを受信するクライアント/サーバーモデルで動作します。また、ログの保存に使用されるデータベース(MySQL、PostgreSQL)もサポートしています。
このガイドでは、Debian10/11に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
結論
rsyslogサーバーがDebian11で設定されるようになりました。集中サーバーにログメッセージを送信するように複数のクライアントを設定できるようになりました。