この投稿では、Centos8でRsyslogを使用してサーバーログをエクスポートする方法を学習します
この記事では、CentOS / RHEL8RsyslogデーモンをセットアップしてログメッセージをリモートRsyslogサーバーに配信する方法について説明します。この構成により、マシンのディスクスペースを他の目的に使用できるようになります。
CentOS 8では、Rsyslogデーモンがすでにインストールされており、デフォルトで動作しています。次のコマンドを発行して、rsyslogサービスがシステムでアクティブになっているかどうかを確認します。
# grep rsyslog | rpm –q
# rsyslogd –v
RsyslogパッケージがCentOSシステムにインストールされていない場合は、以下のコマンドを実行してインストールしてください。
# yum install rsyslog
Rsyslogを使用してサーバーログをエクスポートする
次のようにrsyslog構成ファイルを変更して、CentOS 8システムにインストールされているRsyslogデーモンをログクライアントとして機能させ、ローカルで生成されたすべてのログメッセージを離れたRsyslogサーバーに送信します。
変更を開始するには、メインの構成ファイルを開きます。
# vim /etc/rsyslog.conf
次に、以下の抜粋に示すように、ファイルの最後に次の行を追加します。
# *. * @192.168.1.59:514
上記の行で、リモートrsyslogサーバーのIPアドレスとFQDNが適切に置き換えられていることを確認してください。前の行は、ファシリティや重大度に関係なく、すべてのログメッセージを514/UDPポート経由でIP192.168.1.59に送信するようにRsyslogデーモンに指示しています。
次の例に示すように、リモートログサーバーがTCP接続のみを受け入れるように構成されている場合、またはTCPなどの信頼できるトランスポートネットワークプロトコルを利用する場合は、リモートホストの前に別の@文字を追加します。
# *. * @@logs.domain.lan:514
Linux rsyslogの優先度レベルの前に=や!などの特殊文字を付けて、等号の場合は「この優先度のみ」、!の場合は「この優先度以上ではない」ことを示すことができます。
以下は、Rsyslog優先度レベル修飾子の例です。
kern.info =情報の優先度以上のカーネルログ。
kern。=info =情報の優先度を持つカーネルメッセージのみが許可されます。
kern.info; kern。!err =優先度情報、通知、および警告を含むカーネルメッセージのみが許可されます。
kern.debug; kern。!=警告 =警告を除いて、すべてのカーネル優先度は同じです。
カーン。* =カーネルで優先度のあるすべてのメッセージ
kern.none =優先度に関係なく、関連するカーネル機能メッセージをログに記録しないでください。
たとえば、優先度に関係なく、関連するすべてのメールメッセージなど、ファシリティメッセージのサブセットをリモートログサーバーに送信するだけの場合は、rsyslog構成ファイルに次の行を追加します。
# mail.* @192.168.1.59:514
最後に、更新された設定を有効にするには、次のコマンドを使用してRsyslogサービスを再起動する必要があります。
# systemctl restart rsyslog.service
何らかの理由で起動時にRsyslogデーモンがアクティブ化されない場合は、次のコマンドを実行して、システム全体でサービスを有効にします。
# systemctl enable rsyslog.service
Webサーバーログをリモートログサーバーに送信する
以下に示すように、Apacheのメイン構成ファイルに次の行を追加することで、リモートのsyslogサーバーにログメッセージを送信するようにHTTPサーバーを構成できます。
# vim /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デーモンにログメッセージをファイルシステムログファイルに書き込むように指示しますが、local1ファシリティからのものとして指定することにより、遠方のsyslogサーバーに送信するようにも指示します。
Apacheエラーログメッセージをリモートsyslogサーバーにも送信する場合は、上記のような新しいルールを作成しますが、エラーの優先度に一致するようにhttpdログファイルの名前とログファイルの重大度レベルを変更します。 、次の例に示すように:
ErrorLog "|/bin/sh -c '/usr/bin/tee -a /var/log/httpd/httpd-error.log | /usr/bin/logger -thttpd -plocal1.err'"
上記の行を変更した後、変更が有効になることを確認するには、Apacheデーモンを再起動する必要があります。
# systemctl restart httpd.service
次のコード行をnginx構成ファイルに追加することにより、Nginx Webサーバーには、バージョン1.7.1以降のリモートsyslogサーバーにメッセージを直接記録する機能が組み込まれています。
error_log syslog:server=192.168.1.59:514,facility=local7,tag=nginx,severity=error;
access_log syslog:server=192.168.1.59:514,facility=local7,tag=nginx,severity=info main;/code>
Apache Webサーバーから送信されたログを受信するには、リモートRsyslogサーバーのrsyslog構成ファイルに次の変更を加えます。
local1.* @Apache_IP_address:514
これで議論は終わりです。クライアントモードで実行するようにRsyslogデーモンを正常にセットアップし、ApacheまたはNginxにログメッセージをリモートsyslogサーバーにルーティングするように指示しました。
システムが故障した場合は、リモートのsyslogサーバーに保存されているログファイルの内容を確認することで、何が問題になったかを把握できるはずです。
これで、Rsyslogを使用してサーバーログをエクスポートする方法がわかりました。
その他のガイドについては、当社のホームページをご覧ください