CentOS / RHEL8でRsyslogを使用して集中ログサーバーをセットアップする


システム管理者がCentOS8またはRHEL8サーバーの問題を認識または分析するには、/varにあるログファイルから、特定の期間にサーバーで発生したイベントを認識して表示することが重要です。/log システム内のディレクトリ。

サーバー上のSyslog(System Logging Protocol)システムは、特定の内部問題にリンクされているか、単なる情報メッセージにリンクされているかに関係なく、ログを作成するすべてのサーバー、ネットワークデバイス、スイッチ、ルーター、および内部サービスが存在するネットワーク上の中央ログ監視ポイントとして機能できます。ログを送信できます。

CentOS/RHEL 8サーバーでは、Rsyslogデーモンがデフォルトでプリインストールされている最も重要なログサーバーであり、Systemd Journal Daemon(journald)がそれに続きます。

Rsyslogは、クライアント/サーバーアーキテクチャサービスとして開発されたオープンソースユーティリティであり、両方の役割を独立して実現できます。サーバーとして実行し、ネットワークを介して他のデバイスから送信されたすべてのログを収集することも、リモートのSyslogサーバーに記録されたすべての内部システムイベントを送信することによってクライアントとして実行することもできます。

  1. Installation of “CentOS 8.0″ with Screenshots
  2. Installation of RHEL 8 with Screenshots

CentOS/RHEL 8サーバーに集中ログサーバーをセットアップするには、/var パーティションに記録されたすべてのログファイルを保存するのに十分なスペース(最小数GB)があることを確認する必要があります。ネットワーク上の他のデバイスによって送信されるシステム上。 /var/log/ディレクトリをマウントするために別のドライブ(LVMまたはRAID)を用意することをお勧めします。

CentOS / RHEL8でRsyslogサーバーを構成する方法

1.前述したように、RsyslogサービスはCentOS/RHEL8サーバーに自動的にインストールされて実行されます。デーモンがシステムで実行されていることを確認するには、次のコマンドを実行します。

# systemctl status rsyslog.service

サービスがデフォルトで実行されていない場合は、次のコマンドを実行してrsyslogデーモンを起動します。

# systemctl start rsyslog.service

2.集中ログサーバーとして使用する予定のシステムにRsyslogユーティリティがデフォルトでインストールされていない場合は、次のdnfコマンドを実行してrsyslogパッケージをインストールし、デーモンを起動します。

# dnf install rsyslog
# systemctl start rsyslog.service

3. Rsyslogユーティリティをインストールしたら、メイン構成ファイル/etc/rsyslog.confを開いて、外部クライアントのログメッセージを受信することにより、rsyslogを集中ログサーバーとして構成できます。

# vi /etc/rsyslog.conf

/etc/rsyslog.conf構成ファイルで、次の行を見つけてコメントを解除し、514ポートを介してRsyslogサーバーにUDPトランスポート受信を許可します。 Rsyslogは、ログ送信に標準のUDPプロトコルを使用します。

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. UDPプロトコルにはTCPオーバーヘッドがなく、TCPプロトコルよりもデータ転送が高速になります。一方、UDPプロトコルは、送信されたデータの信頼性を保証するものではありません。

ただし、ログの受信にTCPプロトコルを使用する場合は、514ポートでTCPソケットをバインドしてリッスンするように、Rsyslogデーモンを構成するために、構成ファイルの/etc/rsyslog.confで次の行を見つけてコメントを解除する必要があります。

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5.リモートメッセージを受信するための新しいテンプレートを作成します。このテンプレートは、Syslogネットワーククライアントによって送信された受信メッセージを保存するローカルRsyslogサーバーをガイドするためです。

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

RemoteLogs ディレクティブは、テンプレート構成に追加されたアウトラインプロパティに基づいてメッセージを作成したクライアント名とリモートクライアントアプリケーションに基づいて、送信されたすべてのログメッセージを収集して個別のファイルに書き込むようにRsyslogデーモンをガイドします。 :%HOSTNAME%および%PROGRAMNAME%

受信したすべてのログファイルは、ローカルファイルシステムに書き込まれ、クライアントマシンのホスト名にちなんで名付けられた割り当て済みファイルに書き込まれ、/ var/log /ディレクトリに保持されます。

&〜リダイレクトルールは、ローカルRsyslogサーバーに、受信したログメッセージの処理をさらに停止し、メッセージを削除するように指示します(内部ログファイルにメッセージを書き込まないでください)。

RemoteLogs は、このテンプレートディレクティブに付けられた任意の名前です。テンプレートに最適な名前を使用できます。

より複雑なRsyslogテンプレートを構成するには、man rsyslog.confコマンドを実行してRsyslog構成ファイルのマニュアルを読むか、Rsyslogのオンラインドキュメントを参照してください。

# man rsyslog.conf

6.上記の構成変更を行った後、次のコマンドを実行して、最近の変更を適用するためにRsyslogデーモンを再起動できます。

# service rsyslog restart

7. Rsyslogサーバーを再起動すると、一元化されたログサーバーとして機能し、Syslogクライアントからのメッセージを記録するようになります。 Rsyslogネットワークソケットを確認するには、netstatコマンドを実行し、grepユーティリティを使用してrsyslog文字列をフィルタリングします。

# netstat -tulpn | grep rsyslog 

NetstatコマンドがCentOS8にインストールされていない場合は、次のコマンドを使用してインストールできます。

# dnf whatprovides netstat
# dnf install net-tools

8. CentOS/RHEL 8でSELinuxをアクティブにしている場合は、次のコマンドを実行して、ネットワークソケットタイプに応じてrsyslogトラフィックを許可します。

# semanage port -a -t syslogd_port_t -p udp 514
# semanage port -a -t syslogd_port_t -p tcp 514

semanageコマンドがCentOS8にインストールされない場合は、次のコマンドを使用してインストールできます。

# dnf whatprovides semanage
# dnf install policycoreutils-python-utils

9.システムでファイアウォールがアクティブになっている場合は、次のコマンドを実行して、Firewalldのポートでrsyslogトラフィックを許可するために必要なルールを追加します。

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd --reload

示されているように、ホワイトリストに登録されたIP範囲からのポート514での着信接続を制限することもできます。

# firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
# firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
# firewall-cmd --reload

それで全部です! Rsyslogは、一元化されたログサーバーとして構成され、リモートクライアントからログを収集できるようになりました。次の記事では、CentOS/RHEL8サーバーでRsyslogクライアントを構成する方法を説明します。