ウェブサイト検索

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


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

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

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

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

要件

  1. 「CentOS 8.0」のインストール(スクリーンショット付き)
  2. RHEL 8 のインストール (スクリーンショット付き)

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

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

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

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 ポート経由での UDP トランスポート受信を Rsyslog サーバーに許可します。 。 Rsyslog は、ログ送信に標準のUDP プロトコルを使用します。

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

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

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

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

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


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

$template 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 コマンドCentOS 8にインストールされていない場合は、次のコマンドを使用してインストールできます。


dnf whatprovides netstat
dnf install net-tools

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

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

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


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/RHEL 8 サーバー上で Rsyslog クライアントを構成する方法を説明します。