第8章 ロギングの設定
Red Hat Enterprise Linux のサービスの大半は、ステータスメッセージ、警告、エラーをログに記録します。rsyslogd
サービスを使用して、これらのエントリーをローカルファイルまたはリモートロギングサーバーに記録できます。
8.1. リモートロギングソリューションの設定
環境内の各種マシンからのログをロギングサーバーに集中的に記録するために、クライアントシステムからサーバーに特定の基準に合致するログを記録するように Rsyslog アプリケーションを設定できます。
8.1.1. Rsyslog ロギングサービス
Rsyslog アプリケーションは、systemd-journald
サービスと組み合わせて、Red Hat Enterprise Linux でローカルおよびリモートのロギングサポートを提供します。rsyslogd
デーモンは、ジャーナルから systemd-journald
サービスが受信した syslog
メッセージを継続的に読み取ります。rsyslogd
は、syslog
イベントをフィルタリングして処理し、rsyslog
ログファイルに記録するか、設定に応じて他のサービスに転送します。
rsyslogd
デーモンは、拡張されたフィルタリング、暗号化で保護されたメッセージのリレー、入出力モジュール、TCP プロトコルおよび UDP プロトコルを使用した転送のサポートも提供します。
rsyslog
の主な設定ファイルである /etc/rsyslog.conf
では、どの rsyslogd
がメッセージを処理するかに応じてルールを指定できます。通常は、ソースおよびトピック (ファシリティー) 別および緊急度 (優先度) 別にメッセージを分類し、メッセージがその基準に合致したときに実行するアクションを割り当てることができます。
/etc/rsyslog.conf
では、rsyslogd
が維持するログファイルのリストも確認できます。ほとんどのログファイルは /var/log/
ディレクトリーにあります。httpd
、samba
などの一部のアプリケーションは、ログファイルを /var/log/
内のサブディレクトリーに保存します。
関連情報
-
システム上の
rsyslog.conf(5)
およびrsyslogd(8)
man ページ -
/usr/share/doc/rsyslog/html/index.html
ファイルにrsyslog-doc
パッケージでインストールされたドキュメント。
8.1.2. Rsyslog ドキュメントのインストール
Rsyslog アプリケーションには、https://www.rsyslog.com/doc/ で利用可能な詳細なオンラインドキュメントがありますが、rsyslog-doc
ドキュメントパッケージをローカルにインストールすることもできます。
前提条件
-
システムで
AppStream
リポジトリーをアクティベートしている。 -
sudo
を使用して新規パッケージをインストールする権限がある。
手順
rsyslog-doc
パッケージをインストールします。# yum install rsyslog-doc
検証
任意のブラウザーで
/usr/share/doc/rsyslog/html/index.html
ファイルを開きます。次に例を示します。$ firefox /usr/share/doc/rsyslog/html/index.html &
8.1.3. TCP でのリモートロギング用のサーバーの設定
Rsyslog アプリケーションを使用すると、ロギングサーバーを実行し、個別のシステムがログファイルをロギングサーバーに送信するように設定できます。TCP 経由でリモートロギングを使用するには、サーバーとクライアントの両方を設定します。サーバーは、クライアントシステムにより送信されたログを収集し、分析します。
Rsyslog アプリケーションを使用すると、ログメッセージがネットワークを介してサーバーに転送される中央ロギングシステムを維持できます。サーバーが利用できない場合にメッセージが失われないようにするには、転送アクションのアクションキューを設定します。これにより、送信に失敗したメッセージは、サーバーが再度到達可能になるまでローカルに保存されます。このようなキューは、UDP プロトコルを使用する接続用に設定できないことに注意してください。
omfwd
プラグインは、UDP または TCP による転送を提供します。デフォルトのプロトコルは UDP です。このプラグインは組み込まれているため、読み込む必要はありません。
デフォルトでは、rsyslog
はポート 514
で TCP を使用します。
前提条件
- rsyslog がサーバーシステムにインストールされている。
-
サーバーに
root
としてログインしている。 -
policycoreutils-python-utils
パッケージは、semanage
コマンドを使用して任意の手順でインストールします。 -
firewalld
サービスが実行している。
手順
必要に応じて、
rsyslog
トラフィックに別のポートを使用するには、SELinux タイプsyslogd_port_t
をポートに追加します。たとえば、ポート30514
を有効にします。# semanage port -a -t syslogd_port_t -p tcp 30514
必要に応じて、
rsyslog
トラフィックに別のポートを使用するには、firewalld
がそのポートでの着信rsyslog
トラフィックを許可するように設定します。たとえば、ポート30514
で TCP トラフィックを許可します。# firewall-cmd --zone=<zone-name> --permanent --add-port=30514/tcp success # firewall-cmd --reload
/etc/rsyslog.d/
ディレクトリーに新規ファイル (例:remotelog.conf
) を作成し、以下のコンテンツを挿入します。# Define templates before the rules that use them # Per-Host templates for remote systems template(name="TmplAuthpriv" type="list") { constant(value="/var/log/remote/auth/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } # Provides TCP syslog reception module(load="imtcp") # Adding this ruleset to process remote messages ruleset(name="remote1"){ authpriv.* action(type="omfile" DynaFile="TmplAuthpriv") *.info;mail.none;authpriv.none;cron.none action(type="omfile" DynaFile="TmplMsg") } input(type="imtcp" port="30514" ruleset="remote1")
-
/etc/rsyslog.d/remotelog.conf
ファイルへの変更を保存します。 /etc/rsyslog.conf
ファイルの構文をテストします。# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run... rsyslogd: End of config validation run. Bye.
Rsyslog
サービスがロギングサーバーで実行中で、有効になっていることを確認します。# systemctl status rsyslog
rsyslog
サービスを再起動します。# systemctl restart rsyslog
必要に応じて、
rsyslog
が有効になっていない場合は、再起動後にrsyslog
サービスが自動的に起動するようにします。# systemctl enable rsyslog
環境内の他のシステムからログファイルを受け取り、保存するように、ログサーバーが設定されています。
関連情報
-
システム上の
rsyslogd (8)
、rsyslog.conf (5)
、semanage (8)
、firewall-cmd (1) の
man ページ -
/usr/share/doc/rsyslog/html/index.html
ファイルにrsyslog-doc
パッケージでインストールされたドキュメント。
8.1.4. TCP 経由のサーバーへのリモートロギングの設定
TCP プロトコル経由でログメッセージをサーバーに転送するようにシステムを設定できます。omfwd
プラグインは、UDP または TCP による転送を提供します。デフォルトのプロトコルは UDP です。プラグインは組み込まれているのでロードする必要はありません。
前提条件
-
rsyslog
パッケージが、サーバーに報告する必要のあるクライアントシステムにインストールされている。 - リモートロギング用にサーバーを設定している。
- 指定したポートが SELinux で許可され、ファイアウォールで開いている。
-
システムには、
policycoreutils-python-utils
パッケージが含まれています。このパッケージは、標準以外のポートを SELinux 設定に追加するためのsemanage
コマンドを提供します。
手順
/etc/rsyslog.d/
ディレクトリーに新規ファイル (例:10-remotelog.conf
) を作成し、以下のコンテンツを挿入します。*.* action(type="omfwd" queue.type="linkedlist" queue.filename="example_fwd" action.resumeRetryCount="-1" queue.saveOnShutdown="on" target="example.com" port="30514" protocol="tcp" )
ここでは、以下のようになります。
-
queue.type="linkedlist"
設定は、LinkedList インメモリーキューを有効にします。 -
queue.filename
設定は、ディスクストレージを定義します。バックアップファイルは、前のグローバルのworkDirectory
ディレクティブで指定された作業ディレクトリーにexample_fwd
接頭辞を付けて作成されます。 -
action.resumeRetryCount -1
設定は、サーバーが応答しない場合に接続を再試行するときにrsyslog
がメッセージを破棄しないようにします。 -
queue.saveOnShutdown="on"
設定は、rsyslog
がシャットダウンした場合にインメモリーデータを保存します。 最後の行は、受信したすべてのメッセージをロギングサーバーに転送します。ポートの指定は任意です。
この設定では、
rsyslog
はメッセージをサーバーに送信しますが、リモートサーバーに到達できない場合には、メッセージをメモリーに保持します。ディスク上にあるファイルは、設定されたメモリーキュー領域がrsyslog
で不足するか、シャットダウンする必要がある場合にのみ作成されます。これにより、システムパフォーマンスが向上します。
注記Rsyslog は設定ファイル
/etc/rsyslog.d/
を字句順に処理します。-
rsyslog
サービスを再起動します。# systemctl restart rsyslog
検証
クライアントシステムがサーバーにメッセージを送信することを確認するには、以下の手順に従います。
クライアントシステムで、テストメッセージを送信します。
# logger test
サーバーシステムで、
/var/log/messages
ログを表示します。以下に例を示します。# cat /var/log/remote/msg/hostname/root.log Feb 25 03:53:17 hostname root[6064]: test
hostname はクライアントシステムのホスト名です。ログには、
logger
コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
システム上の
rsyslog.conf(5)
およびrsyslogd(8)
man ページ -
/usr/share/doc/rsyslog/html/index.html
ファイルにrsyslog-doc
パッケージでインストールされたドキュメント。
8.1.5. TLS 暗号化リモートロギングの設定
デフォルトでは、Rsyslog はプレーンテキスト形式でリモートロギング通信を送信します。シナリオでこの通信チャネルのセキュリティーを確保する必要がある場合は、TLS を使用して暗号化できます。
TLS を介した暗号化されたトランスポートを使用するには、サーバーとクライアントの両方を設定します。サーバーは、クライアントシステムにより送信されたログを収集し、分析します。
ossl
ネットワークストリームドライバー (OpenSSL) または gtls
ストリームドライバー (GnuTLS) のいずれかを使用できます。
ネットワークに接続されていない、厳格な認可を受けているなど、セキュリティーが強化された別のシステムがある場合は、その別のシステムを認証局 (CA) として使用します。
サーバー側では global
、module
、input
レベルで、クライアント側では global
および action
レベルで、ストリームドライバーを使用して接続設定をカスタマイズできます。より具体的な設定は、より一般的な設定よりも優先されます。そのため、たとえば、ほとんどの接続のグローバル設定で ossl
を使用し、特定の接続の入力とアクション設定で gtls
を使用することができます。
前提条件
-
クライアントシステムとサーバーシステムの両方に
root
にアクセスできる。 サーバーおよびクライアントシステムに次のパッケージがインストールされている。
-
rsyslog
パッケージ -
ossl
ネットワークストリームドライバー用のrsyslog-openssl
パッケージ -
gtls
ネットワークストリームドライバー用のrsyslog-gnutls
パッケージ -
certtool
コマンドを使用して証明書を生成するためのgnutls-utils
パッケージ
-
ログサーバーの
/etc/pki/ca-trust/source/anchors/
ディレクトリーには、次の証明書があり、update-ca-trust
コマンドを使用してシステム設定を更新します。-
ca-cert.pem
- ログサーバーとクライアントで鍵と証明書を検証できる CA 証明書。 -
server-cert.pem
- ロギングサーバーの公開鍵。 -
server-key.pem
- ロギングサーバーの秘密鍵。
-
ログクライアントでは、次の証明書が
/etc/pki/ca-trust/source/anchors/
ディレクトリーにあり、update-ca-trust
を使用してシステム設定を更新します。-
ca-cert.pem
- ログサーバーとクライアントで鍵と証明書を検証できる CA 証明書。 -
client-cert.pem
- クライアントの公開鍵。 -
client-key.pem
- クライアントの秘密鍵。
-
手順
クライアントシステムから暗号化したログを受信するようにサーバーを設定します。
-
/etc/rsyslog.d/
ディレクトリーに、新規ファイル (securelogser.conf
など) を作成します。 通信を暗号化するには、設定ファイルに、サーバーの証明書ファイルへのパス、選択した認証方法、および TLS 暗号化に対応するストリームドライバーが含まれている必要があります。
/etc/rsyslog.d/securelogser.conf
に以下の行を追加します。# Set certificate files global( DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem" DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/server-cert.pem" DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/server-key.pem" ) # TCP listener module( load="imtcp" PermittedPeer=["client1.example.com", "client2.example.com"] StreamDriver.AuthMode="x509/name" StreamDriver.Mode="1" StreamDriver.Name="ossl" ) # Start up listener at port 514 input( type="imtcp" port="514" )
注記GnuTLS ドライバーが必要な場合は、
StreamDriver.Name="gtls"
設定オプションを使用します。x509/name
よりも厳密ではない認証モードの詳細は、rsyslog-doc
にインストールされているドキュメントを参照してください。-
変更を
/etc/rsyslog.d/securelogser.conf
ファイルに保存します。 /etc/rsyslog.conf
ファイルの構文と/etc/rsyslog.d/
ディレクトリー内のすべてのファイルを確認します。# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.
Rsyslog
サービスがロギングサーバーで実行中で、有効になっていることを確認します。# systemctl status rsyslog
rsyslog
サービスを再起動します。# systemctl restart rsyslog
オプション: Rsyslog が有効になっていない場合は、再起動後に
rsyslog
サービスが自動的に起動されることを確認してください。# systemctl enable rsyslog
-
暗号化したログをサーバーに送信するようにクライアントを設定するには、以下のコマンドを実行します。
-
クライアントシステムで、
/etc/rsyslog.d/
ディレクトリーに、新規ファイル (securelogcli.conf
など) を作成します。 /etc/rsyslog.d/securelogcli.conf
に以下の行を追加します。# Set certificate files global( DefaultNetstreamDriverCAFile="/etc/pki/ca-trust/source/anchors/ca-cert.pem" DefaultNetstreamDriverCertFile="/etc/pki/ca-trust/source/anchors/client-cert.pem" DefaultNetstreamDriverKeyFile="/etc/pki/ca-trust/source/anchors/client-key.pem" ) # Set up the action for all messages *.* action( type="omfwd" StreamDriver="ossl" StreamDriverMode="1" StreamDriverPermittedPeers="server.example.com" StreamDriverAuthMode="x509/name" target="server.example.com" port="514" protocol="tcp" )
注記GnuTLS ドライバーが必要な場合は、
StreamDriver.Name="gtls"
設定オプションを使用します。-
変更を
/etc/rsyslog.d/securelogcli.conf
ファイルに保存します。 /etc/rsyslog.conf
ファイルの構文と/etc/rsyslog.d/
ディレクトリー内のその他のファイルを確認します。# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run (level 1)... rsyslogd: End of config validation run. Bye.
Rsyslog
サービスがロギングサーバーで実行中で、有効になっていることを確認します。# systemctl status rsyslog
rsyslog
サービスを再起動します。# systemctl restart rsyslog
オプション: Rsyslog が有効になっていない場合は、再起動後に
rsyslog
サービスが自動的に起動されることを確認してください。# systemctl enable rsyslog
-
クライアントシステムで、
検証
クライアントシステムがサーバーにメッセージを送信することを確認するには、以下の手順に従います。
クライアントシステムで、テストメッセージを送信します。
# logger test
サーバーシステムで、
/var/log/messages
ログを表示します。以下に例を示します。# cat /var/log/remote/msg/<hostname>/root.log Feb 25 03:53:17 <hostname> root[6064]: test
<hostname>
はクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
システム上の
certtool (1)
、openssl (1)
、update-ca-trust (8)
、rsyslogd (8)
、およびrsyslog.conf (5)
の man ページ -
/usr/share/doc/rsyslog/html/index.html
にrsyslog-doc
パッケージでインストールされたドキュメント。 - TLS での logging システムロールの使用
8.1.6. UDP でリモートロギング情報を受信するためのサーバー設定
Rsyslog アプリケーションを使用すると、リモートシステムからロギング情報を受信するようにシステムを設定できます。UDP 経由でリモートロギングを使用するには、サーバーとクライアントの両方を設定します。受信サーバーは、クライアントシステムが送信したログの収集および分析を行います。デフォルトでは、rsyslog
はポート 514
で UDP を使用して、リモートシステムからログ情報を受信します。
以下の手順に従って、UDP プロトコルでクライアントシステムが送信したログの収集および分析を行うサーバーを設定します。
前提条件
- rsyslog がサーバーシステムにインストールされている。
-
サーバーに
root
としてログインしている。 -
policycoreutils-python-utils
パッケージは、semanage
コマンドを使用して任意の手順でインストールします。 -
firewalld
サービスが実行している。
手順
必要に応じて、デフォルトのポート
514
以外のrsyslog
トラフィックに別のポートを使用するには、次のコマンドを実行します。SELinux ポリシー設定に
syslogd_port_t
SELinux タイプを追加し、portno
はrsyslog
で使用するポート番号に置き換えます。# semanage port -a -t syslogd_port_t -p udp portno
rsyslog
の受信トラフィックを許可するようにfirewalld
を設定します。portno
はポート番号に、zone
はrsyslog
が使用するゾーンに置き換えます。# firewall-cmd --zone=zone --permanent --add-port=portno/udp success # firewall-cmd --reload
ファイアウォールルールを再読み込みします。
# firewall-cmd --reload
/etc/rsyslog.d/
ディレクトリーに.conf
の新規ファイル (例:remotelogserv.conf
) を作成し、以下のコンテンツを挿入します。# Define templates before the rules that use them # Per-Host templates for remote systems template(name="TmplAuthpriv" type="list") { constant(value="/var/log/remote/auth/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") } # Provides UDP syslog reception module(load="imudp") # This ruleset processes remote messages ruleset(name="remote1"){ authpriv.* action(type="omfile" DynaFile="TmplAuthpriv") *.info;mail.none;authpriv.none;cron.none action(type="omfile" DynaFile="TmplMsg") } input(type="imudp" port="514" ruleset="remote1")
514
は、rsyslog
がデフォルトで使用するポート番号です。代わりに別のポートを指定できます。/etc/rsyslog.conf
ファイルの構文と/etc/rsyslog.d/
ディレクトリー内の全.conf
ファイルを確認します。# rsyslogd -N 1 rsyslogd: version 8.1911.0-2.el8, config validation run...
rsyslog
サービスを再起動します。# systemctl restart rsyslog
必要に応じて、
rsyslog
が有効になっていない場合は、再起動後にrsyslog
サービスが自動的に起動するようにします。# systemctl enable rsyslog
関連情報
-
システム上の
rsyslogd (8)
、rsyslog.conf (5)
、semanage (8)
、firewall-cmd (1) の
man ページ -
/usr/share/doc/rsyslog/html/index.html
ファイルにrsyslog-doc
パッケージでインストールされたドキュメント。
8.1.7. UDP 経由のサーバーへのリモートロギングの設定
UDP プロトコル経由でログメッセージをサーバーに転送するようにシステムを設定できます。omfwd
プラグインは、UDP または TCP による転送を提供します。デフォルトのプロトコルは UDP です。プラグインは組み込まれているのでロードする必要はありません。
前提条件
-
rsyslog
パッケージが、サーバーに報告する必要のあるクライアントシステムにインストールされている。 - UDP でリモートロギング情報を受信するためのサーバー設定 で説明されているように、リモートロギング用にサーバーを設定している。
手順
/etc/rsyslog.d/
ディレクトリーに.conf
の新規ファイル (例:10-remotelogcli.conf
) を作成し、以下のコンテンツを挿入します。*.* action(type="omfwd" queue.type="linkedlist" queue.filename="example_fwd" action.resumeRetryCount="-1" queue.saveOnShutdown="on" target="example.com" port="portno" protocol="udp" )
ここでは、以下のようになります。
-
queue.type="linkedlist"
設定は、LinkedList インメモリーキューを有効にします。 -
queue.filename
設定は、ディスクストレージを定義します。バックアップファイルは、前のグローバルのworkDirectory
ディレクティブで指定された作業ディレクトリーにexample_fwd
接頭辞を付けて作成されます。 -
action.resumeRetryCount -1
設定は、サーバーが応答しない場合に接続を再試行するときにrsyslog
がメッセージを破棄しないようにします。 -
queue.saveOnShutdown="on"
設定を有効にすると、rsyslog
がシャットダウンした場合にインメモリーデータが保存されます。 -
portno
値は、rsyslog
で使用するポート番号です。デフォルト値は514
です。 最後の行は受信メッセージをすべてロギングサーバーに転送します。ポートの指定は任意です。
この設定では、
rsyslog
はメッセージをサーバーに送信しますが、リモートサーバーに到達できない場合には、メッセージをメモリーに保持します。ディスク上にあるファイルは、設定されたメモリーキュー領域がrsyslog
で不足するか、シャットダウンする必要がある場合にのみ作成されます。これにより、システムパフォーマンスが向上します。
注記Rsyslog は設定ファイル
/etc/rsyslog.d/
を字句順に処理します。-
rsyslog
サービスを再起動します。# systemctl restart rsyslog
必要に応じて、
rsyslog
が有効になっていない場合は、再起動後にrsyslog
サービスが自動的に起動するようにします。# systemctl enable rsyslog
検証
クライアントシステムがサーバーにメッセージを送信することを確認するには、以下の手順に従います。
クライアントシステムで、テストメッセージを送信します。
# logger test
サーバーシステムで、
/var/log/remote/msg/hostname/root.log
ログを表示します。以下に例を示します。# cat /var/log/remote/msg/hostname/root.log Feb 25 03:53:17 hostname root[6064]: test
hostname
はクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
システム上の
rsyslog.conf(5)
およびrsyslogd(8)
man ページ -
/usr/share/doc/rsyslog/html/index.html
にrsyslog-doc
パッケージでインストールされたドキュメント。
8.1.8. rsyslog の負荷分散ヘルパー
クラスターで使用する場合、RebindInterval
設定を変更することで Rsyslog の負荷分散を改善できます。
RebindInterval
設定では、現行接続を切断して再確立する間隔を指定します。この設定は、TCP、UDP、および RELP のトラフィックに適用されます。ロードバランサーはこれを新しい接続と認識し、メッセージを別の物理ターゲットシステムに転送します。
RebindInterval は
、ターゲットシステムの IP アドレスが変更された場合に役立ちます。Rsyslog アプリケーションは、接続の確立時に IP アドレスをキャッシュするため、メッセージは同じサーバーに送信されます。IP アドレスが変更すると、Rsyslog サービスが再起動するまで UDP パケットが失われます。接続を再確立すると、IP が DNS によって再度解決されるようになります。
TCP、UDP、および RELP トラフィックに対する RebindInterval の使用例
action(type="omfwd" protocol="tcp" RebindInterval="250" target="example.com" port="514" …) action(type="omfwd" protocol="udp" RebindInterval="250" target="example.com" port="514" …) action(type="omrelp" RebindInterval="250" target="example.com" port="6514" …)
8.1.9. 信頼できるリモートロギングの設定
Reliable Event Logging Protocol (RELP) を使用すると、メッセージ損失のリスクを大幅に軽減して TCP で syslog
メッセージを送受信できます。RELP は、信頼できるイベントメッセージを配信するので、メッセージ損失が許されない環境で有用です。RELP を使用するには、imrelp
の入力モジュール (サーバー上での実行とログの受信) と omrelp
出力モジュール (クライアント上での実行とロギングサーバーへのログの送信) を設定します。
前提条件
-
rsyslog
パッケージ、librelp
パッケージ、およびrsyslog-relp
パッケージをサーバーおよびクライアントシステムにインストールしている。 - 指定したポートが SELinux で許可され、ファイアウォール設定で開放されている。
手順
信頼できるリモートロギング用にクライアントシステムを設定します。
クライアントシステムの
/etc/rsyslog.d/
ディレクトリーに、relpclient.conf
などと名前を指定して新しい.conf
ファイルを作成し、以下のコンテンツを挿入します。module(load="omrelp") *.* action(type="omrelp" target="_target_IP_" port="_target_port_")
ここでは、以下のようになります。
-
target_IP
は、ロギングサーバーの IP アドレスに置き換えます。 -
target_port
はロギングサーバーのポートに置き換えます。
-
-
変更を
/etc/rsyslog.d/relpclient.conf
ファイルに保存します。 rsyslog
サービスを再起動します。# systemctl restart rsyslog
必要に応じて、
rsyslog
が有効になっていない場合は、再起動後にrsyslog
サービスが自動的に起動するようにします。# systemctl enable rsyslog
信頼できるリモートロギング用にサーバーシステムを設定します。
サーバーシステムの
/etc/rsyslog.d/
ディレクトリーに、relpserv.conf
などと名前を指定して新しい.conf
ファイルを作成し、以下のコンテンツを挿入します。ruleset(name="relp"){ *.* action(type="omfile" file="_log_path_") } module(load="imrelp") input(type="imrelp" port="_target_port_" ruleset="relp")
ここでは、以下のようになります。
-
log_path
は、メッセージを保存するパスを指定します。 -
target_port
はロギングサーバーのポートに置き換えます。クライアント設定ファイルと同じ値を使用します。
-
-
/etc/rsyslog.d/relpserv.conf
ファイルへの変更を保存します。 rsyslog
サービスを再起動します。# systemctl restart rsyslog
必要に応じて、
rsyslog
が有効になっていない場合は、再起動後にrsyslog
サービスが自動的に起動するようにします。# systemctl enable rsyslog
検証
クライアントシステムがサーバーにメッセージを送信することを確認するには、以下の手順に従います。
クライアントシステムで、テストメッセージを送信します。
# logger test
サーバーシステムで、指定された
log_path
でログを表示します。以下に例を示します。# cat /var/log/remote/msg/hostname/root.log Feb 25 03:53:17 hostname root[6064]: test
hostname
はクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot
) が含まれていることに注意してください。
関連情報
-
システム上の
rsyslog.conf(5)
およびrsyslogd(8)
man ページ -
/usr/share/doc/rsyslog/html/index.html
ファイルにrsyslog-doc
パッケージでインストールされたドキュメント。
8.1.10. サポート対象の Rsyslog モジュール
Rsyslog アプリケーションの機能を拡張するために、特定のモジュールを使用できます。モジュールは、追加の入力 (入力モジュール)、出力 (出力モジュール)、およびその他の機能を提供します。モジュールは、モジュールの読み込み後に利用可能な設定ディレクティブを追加で提供することも可能です。
以下のコマンドを使用して、システムにインストールされている入出力モジュールをリスト表示できます。
# ls /usr/lib64/rsyslog/{i,o}m*
rsyslog-doc
パッケージをインストールした後、/usr/share/doc/rsyslog/html/configuration/modules/idx_output.html
ファイルで使用可能なすべての rsyslog
モジュールのリストを表示できます。
8.1.11. カーネルメッセージをリモートホストに記録するように netconsole サービスを設定
ディスクへのログインやシリアルコンソールの使用ができない場合は、netconsole
カーネルモジュールおよび同じ名前のサービスを使用して、ネットワーク経由でカーネルメッセージをリモートの rsyslog
サービスに記録できます。
前提条件
-
rsyslog
などのシステムログサービスがリモートホストにインストールされている。 - リモートシステムログサービスは、このホストから受信ログエントリーを受け取るように設定されています。
手順
netconsole-service
パッケージをインストールします。# yum install netconsole-service
/etc/sysconfig/netconsole
ファイルを編集し、SYSLOGADDR
パラメーターをリモートホストの IP アドレスに設定します。# SYSLOGADDR=192.0.2.1
netconsole
サービスを有効にして起動します。# systemctl enable --now netconsole
検証
-
リモートシステムログサーバーの
/var/log/messages
ファイルを表示します。
8.1.12. 関連情報
-
/usr/share/doc/rsyslog/html/index.html
ファイルにrsyslog-doc
パッケージでインストールされたドキュメント。 -
システム上の
rsyslog.conf(5)
およびrsyslogd(8)
man ページ - ナレッジベースの記事 Configuring system logging without journald
- ナレッジベースの記事 Negative effects of the RHEL default logging setup on performance and their mitigations
- logging システムロールの使用 の章