CentOS 7でRsyslogサーバーにログを送信するようにRsyslogクライアントを設定する方法


ログ管理は、ネットワークインフラストラクチャで最も重要なコンポーネントの1つです。ログメッセージは、ユーティリティ、アプリケーション、デーモン、ネットワーク関連サービス、カーネル、物理デバイスなど、多数のシステムソフトウェアによって常に生成されます。

ログファイルは、Linuxシステムの問題のトラブルシューティング、システムの監視、およびシステムセキュリティの強さと問題の確認に役立ちます。

Rsyslog は、オープンソースのログ記録プログラムです。これは、多数のLinuxディストリビューションで最も人気のあるログ記録メカニズムです。 CentOS 7 または RHEL 7 のデフォルトのログサービスでもあります。

CentOSの Rsyslog デーモンは、複数のネットワークデバイスからログメッセージを収集するためにサーバーとして動作するように設定できます。これらのデバイスはクライアントとして機能し、ログをrsyslogサーバーに送信するように構成されています。

ただし、 Rsyslog サービスを設定してクライアントモードで起動することもできます。このセットアップは、TCPまたはUDPトランスポートプロトコルを使用してログメッセージをリモートのRsyslogサーバーに転送するようにrsyslogデーモンに指示します。 Rsyslogサービスは、クライアントとしてもサーバーとしても同時に実行するように構成することもできます。

このチュートリアルでは、リモートのRsyslogサーバーにログメッセージを送信するように CentOS/RHEL 7 Rsyslogデーモンを設定する方法について説明します。この設定により、他のデータを保存するためにマシンのディスクスペースを確実に確保できます。

CentOS のデフォルトでほとんどすべてのログファイルがデフォルトで書き込まれる場所は/var システムパスです。 /(root)パーティションを使い果たさないように、常に/var ディレクトリ用に別のパーティションを作成して動的に大きくすることをお勧めします。

特に指定しない限り、 Rsyslog クライアントは常にログメッセージをプレーンテキストで送信します。あなたがインターネットやあなたの完全な管理下にないネットワークを介してログメッセージを送信するようにRsyslogクライアントを設定しないでください。

  1. CentOS 7.3 Installation Procedure
  2. RHEL 7.3 Installation Procedure
  3. Configure a Rsyslog Server in CentOS/RHEL 7

ステップ1:Rsyslogのインストールを確認する

1. デフォルトでは、RsyslogデーモンはすでにCentOS 7システムにインストールされ、実行されています。 rsyslogサービスがシステムにあるかどうか確認するためには、次のコマンドを発行して下さい。

# rpm -q | grep rsyslog
# rsyslogd -v

2. RsyslogパッケージがCentOSにインストールされていない場合は、以下のコマンドを実行してサービスをインストールしてください。

# yum install rsyslog

ステップ2:Rsyslogサービスをクライアントとして設定

3. CentOS 7 システムにインストールされたRsyslogデーモンをログクライアントとして機能させ、ローカルで生成されたすべてのログメッセージをリモートのRsyslogサーバーにルーティングするには、次のように変更します。次のようにrsyslog構成ファイルを作成します。

最初にメイン設定ファイルを編集用に開きます。

# vi /etc/rsyslog.conf

次に、下の抜粋に示すように、ファイルの末尾に下の行を追加します。

*. *  @192.168.10.254:514

上記の行で、リモートのrsyslogサーバーのFQDNのIPアドレスを適切に置き換えてください。上記の行は、ファシリティや重大度に関係なく、 514/UDP ポート経由で IP 192.168.10.254 のホストにすべてのログメッセージを送信するようにRsyslogデーモンに指示します。

4. リモートログサーバーがTCP接続でのみ待機するように設定されている場合、またはTCPなどの信頼性の高いトランスポートネットワークプロトコルを使用する場合は、前に別の @ 文字を追加します。次の例に示すように、リモートホストの

*. *  @@logs.domain.lan:514

Linuxのrsyslogでは、 = など、「この優先度のみ」という優先順位を付けることができる特殊文字も使用できます。等号と「この優先度ではない、またはこれより高い」を示します。

CentOS 7のRsyslog優先順位修飾子の例をいくつか示します。

  • kern.info = kernel logs with info priority and higher.
  • kern.=info = only kernel messages with info priority.
  • kern.info;kern.!err = only kernel messages with info, notice, and warning priorities.
  • kern.debug;kern.!=warning = all kernel priorities except warning.
  • kern.* = all kernel priorities messages.
  • kern.none = don’t log any related kernel facility messages regardless of the priority.

たとえば、優先順位に関係なくすべての関連メールメッセージなど、特定のファシリティメッセージのみをリモートログサーバに送信する場合は、rsyslog設定ファイルに次の行を追加します。

mail.* @192.168.10.254:514 

5。

# systemctl restart rsyslog.service

6. 何らかの理由で起動時にRsyslogデーモンが有効にならない場合は、以下のコマンドを発行してシステム全体でサービスを有効にします。

# systemctl enable rsyslog.service

ステップ3:ApacheとNginxのログをリモートログサーバーに送信する

7. Apache HTTPサーバーは、次の例に示すようにメインの設定ファイルに次の行を追加することで、リモートのsyslogサーバーにログメッセージを送信するように設定できます。

# vi /etc/httpd/conf/httpd.conf

Apacheのメイン設定ファイルに以下の行を追加します。

CustomLog "| /bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-access.log | /usr/bin/logger -thttpd -plocal1.notice'" combined

この行はHTTPデーモンがファイルシステムのログファイルにログメッセージを内部的に書き込むように強制するだけでなく、メッセージをlocal1から来るものとしてマークすることによってそれらを遠くのsyslogサーバーに送るパイプロガーユーティリティを通してさらに処理します。施設。

8. リモートのsyslogサーバーに Apache エラーログメッセージも送信する場合は、上記の例のように新しいルールを追加します。ただし、必ず置き換えてください。次の例に示すように、httpdログファイルの名前とエラー優先度に一致するログファイルの重大度

ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"

9. 上記の行を追加したら、次のコマンドを発行して変更を適用するためにApacheデーモンを再起動する必要があります。

# systemctl restart httpd.service                 

10. バージョン 1.7.1 の時点で、Nginxウェブサーバーには次の行を追加することでメッセージをリモートsyslogサーバーに直接記録する機能が組み込まれています。 nginx設定ファイルへのコード。

error_log syslog:server=192.168.1.10:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.10.254:514,facility=local7,tag=nginx,severity=info main;

IPv6 サーバーの場合は、次の構文形式を使用してIPv6アドレスを囲みます。

access_log syslog:server=[7101:dc7::9]:514,facility=local7,tag=nginx,severity=info;

11. リモートのRsyslogサーバーでは、Apache Webサーバーから送信されたログを受信するために、rsyslog設定ファイルに次の変更を加える必要があります。

local1.* @Apache_IP_address:514

それで全部です!クライアントモードで実行するように Rsyslog デーモンを設定しました。また、 Apache HTTP サーバーまたは Nginx にログメッセージを転送するように指示しました。リモートのsyslogサーバへ。

システムがクラッシュした場合は、リモートsyslogサーバーに保存されているログファイルの内容を調べることで問題を調査できるはずです。