ウェブサイト検索

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


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

ログ ファイルは、Linux システムの問題のトラブルシューティング、システムの監視、システムのセキュリティの強度と問題の確認に役立つことがわかります。

Rsyslog はオープン ソースのログ プログラムであり、膨大な数の Linux ディストリビューションで最も一般的なログ メカニズムです。これは、CentOS 7 または RHEL 7 のデフォルトのログ サービスでもあります。

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

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

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

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

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

要件

  1. CentOS 7.3 のインストール手順
  2. RHEL 7.3 のインストール手順
  3. CentOS/RHEL 7 で Rsyslog サーバーを構成する

ステップ 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=情報優先度以上のカーネル ログ。
  • kern.=info=情報優先のカーネル メッセージのみ。
  • kern.info;kern.!err=情報、通知、警告の優先順位を持つカーネル メッセージのみ
  • kern.debug;kern.!=warning=警告を除くすべてのカーネル優先度。
  • kern.*=すべてのカーネル優先度メッセージ。
  • kern.none=優先度に関係なく、関連するカーネル機能メッセージをログに記録しません。

たとえば、優先度レベルに関係なく、関連するすべてのメール メッセージなど、特定の機能メッセージのみをリモート ログ サーバーに送信すると仮定すると、rsyslog 構成ファイルに次の行を追加します。

mail.* @192.168.10.254:514 

5. 最後に、新しい構成を適用するには、以下のコマンドを実行して、デーモンが変更を取得できるように Rsyslog サービスを再起動する必要があります。

# systemctl restart rsyslog.service

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

# systemctl enable rsyslog.service

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

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

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

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

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

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

8.Apache エラー ログ メッセージもリモート syslog サーバーに送信する場合は、上記の例に示されているように新しいルールを追加しますが、必ず置き換えてください。次のサンプルに示すように、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 Web サーバーには、次の行を追加することでメッセージをリモート 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. Apache Web サーバーから送信されたログを受信するには、リモート Rsyslog サーバーで rsyslog 構成ファイルに次の変更を加える必要があります。

local1.* @Apache_IP_address:514

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

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