ログは、Linuxのシステムとアプリケーションに関連する問題の分析とトラブルシューティングに非常に役立ちます。デフォルトでは、すべてのログファイルはLinuxベースのオペレーティングシステムの/ var/logディレクトリ内にあります。ログファイルには、cron、カーネル、ユーザー、セキュリティなどいくつかの種類があり、これらのファイルのほとんどはRsyslogサービスによって制御されます。
Rsyslogは、ログ処理のための強力で安全なシステムです。 Rsyslogサーバーは、複数の物理サーバーまたは仮想サーバーからネットワーク経由でログを受信し、さまざまなサービスの状態を監視します。 Rsyslogサーバーを使用すると、他のサーバー、ネットワークデバイス、およびリモートアプリケーションのログを一元化された場所から監視できます。
このチュートリアルでは、Ubuntu18.04サーバーでRsyslogサーバーを構成する方法を説明します。
- Ubuntu18.04を実行している2台のサーバー。
- 静的IPアドレス192.168.0.101はRsyslogサーバーマシンで構成され、192.168.0.102はRsyslogクライアントマシンで構成されます。
- ルートパスワードは両方のサーバーで構成されています。
Rsyslogをインストール
デフォルトでは、RsyslogはUbuntu18.04サーバーにインストールされます。インストールされていない場合は、次のコマンドを実行してインストールできます。
apt-get install rsyslog -y
Rsyslogをインストールした後、次のコマンドでRsyslogのバージョンを確認できます。
rsyslogd -v
次の出力が得られるはずです:
rsyslogd 8.32.0, compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes systemd support: Yes Number of Bits in RainerScript integers: 64 See http://www.rsyslog.com for more information.
次のコマンドを使用して、Rsyslogのステータスを確認することもできます。
systemctl status rsyslog
次の出力が表示されます。
? rsyslog.service - System Logging Service Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-10-22 04:28:55 UTC; 1min 31s ago Docs: man:rsyslogd(8) http://www.rsyslog.com/doc/ Main PID: 724 (rsyslogd) Tasks: 4 (limit: 1114) CGroup: /system.slice/rsyslog.service ??724 /usr/sbin/rsyslogd -n Oct 22 04:28:53 ubuntu1804 systemd[1]: Starting System Logging Service... Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd. [v8.32.0] Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: rsyslogd's groupid changed to 106 Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: rsyslogd's userid changed to 102 Oct 22 04:28:54 ubuntu1804 rsyslogd[724]: [origin software="rsyslogd" swVersion="8.32.0" x-pid="724" x-info="http://www.rsyslog.com"] start Oct 22 04:28:55 ubuntu1804 systemd[1]: Started System Logging Service.
Rsyslogサーバーの構成
これで、Rsyslogがインストールされ、実行されます。次に、サーバーモードで実行するように構成する必要があります。 /etc/rsyslog.confファイルを編集することでそれを行うことができます。
nano /etc/rsyslog.conf
まず、UDPまたはTCP、あるいはその両方のプロトコルを定義する必要があります。
UDP接続とTCP接続の両方を同時に使用するには、以下の行を検索してコメントを外します。
$ModLoad imudp $UDPServerRun 514 $ModLoad imtcp $InputTCPServerRun 514
次に、以下に示すように、アクセスを制限する特定のサブネット、IP、またはドメインを定義します。
$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.example.com $AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.example.com
次に、受信したsyslogメッセージを保存する方法をRsyslogサーバーに指示するテンプレートを作成する必要があります。 GLOBALDIRECTIVESセクションの直前に次の行を追加します。
$template remote-incoming-logs, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.* ?remote-incoming-logs
終了したら、ファイルを保存して閉じます。次に、次のコマンドを使用して、構文エラーがないかRsyslog構成を確認します。
rsyslogd -f /etc/rsyslog.conf -N1
次の出力が表示されます。
rsyslogd: version 8.32.0, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
最後に、次のコマンドを使用してRsyslogサービスを再起動します。
systemctl restart rsyslog
次に、次のコマンドを使用して、RsyslogがTCP/UDPをリッスンしていることを確認します。
netstat -4altunp | grep 514
次の出力が得られるはずです:
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 1332/rsyslogd udp 0 0 0.0.0.0:514 0.0.0.0:* 1332/rsyslogd
Rsyslogクライアントの構成
Rsyslogサーバーがインストールされ、リモートホストからログを受信するように構成されています。
次に、syslogメッセージをリモートRsyslogサーバーに送信するようにRsyslogクライアントを構成する必要があります。
クライアントマシンにログインし、以下に示すようにRsyslog構成ファイルを開きます。
nano /etc/rsyslog.conf
ファイルの最後に次の行を追加します。
##Enable sending of logs over UDP add the following line: *.* @192.168.0.101:514 ##Enable sending of logs over TCP add the following line: *.* @@192.168.0.101:514 ##Set disk queue when rsyslog server will be down: $ActionQueueFileName queue $ActionQueueMaxDiskSpace 1g $ActionQueueSaveOnShutdown on $ActionQueueType LinkedList $ActionResumeRetryCount -1
ファイルを保存して閉じます。次に、Rsyslogサーバーを再起動して、構成の変更を適用します。
systemtcl restart rsyslog
この時点で、RsyslogクライアントはログをRsyslogサーバーに送信するように構成されています。
ここで、Rsyslogサーバーにログインし、/ var/logディレクトリを確認します。いくつかのログファイルを含むクライアントマシンのホスト名を含むエントリが表示されます。
ls /var/log/rsyslog-client/
出力:
CRON.log kernel.log rsyslogd-2039.log rsyslogd.log sudo.log wpa_supplicant.log
上記の記事では、Ubuntu18.04サーバーにRsyslogサーバーをインストールして構成する方法を学びました。また、Rsyslogサーバーにログを送信するようにRsyslogクライアントを構成する方法も学習しました。ご不明な点がございましたら、お気軽にお問い合わせください。