今号では、rsyslog の設定で、各パラメータの意味をちょっと詳しくご紹介します!
rsyslog とは
rsyslog とは、Linux でログ管理を行うためのソフトウェアです。
システムやアプリケーションからログを収集し、ログファイルとして保存したり、ログの内容を
別のサーバへ転送する機能があります。
デフォルトの設定でも、ローカル環境の情報であればある程度詳細に収集してくれますが、
各パラメータの意味について知っておくと「なぜ今動作しているのか?」が、よく分かりますよ。
今回は、rsyslog の設定ファイル (rsyslog.conf) のうち、モジュールに関する
設定と、rsyslog 全体の設定に関わるパラメータについてご説明します。
パラメータの使い方~モジュール編~
rsyslog の設定ファイルは上から読み込まれます。
デフォルトでは最初にモジュールの設定が記載されています。このデフォルトの設定を元に、
各パラメータの意味や使い方などをご紹介していきます。
/etc/rsyslog.conf のデフォルトの設定 (RHEL8) より、モジュールに関する記載箇所を抜粋
#### MODULES #### module(load="imuxsock" # provides support for local system logging (e.g. via logger command) SysSock.Use="off") # Turn off message reception via local log socket; # local messages are retrieved through imjournal now. module(load="imjournal" # provides access to the systemd journal StateFile="imjournal.state") # File to store the position in the journal #module(load="imklog") # reads kernel messages (the same are read from journald) #module(load="immark") # provides --MARK-- message capability # Provides UDP syslog reception # for parameters see http://www.rsyslog.com/doc/imudp.html #module(load="imudp") # needs to be done just once #input(type="imudp" port="514") # Provides TCP syslog reception # for parameters see http://www.rsyslog.com/doc/imtcp.html #module(load="imtcp") # needs to be done just once #input(type="imtcp" port="514")
-
module(load=”imuxsock”
SysSock.Use=”off”)imuxsock モジュールをロードします。その際 SysSock.Use パラメータを off にしています。
imuxsock は UNIX ドメインソケット (ローカル環境でデータを送受信する際に使用する)
を通じてログを受信するためのモジュールです。また SysSock.Use は UNIX ドメインソケットの使用有無を設定します。
デフォルトでは off となっており、imuxsock モジュールをロードするものの、
UNIX ドメインソケットは使用しないようになっています。 -
module(load=”imjournal”
StateFile=”imjournal.state”)imjournal モジュールをロードします。その際 StateFile パラメータでステートファイル
(システム再起動等で rsyslog がシャットダウンされる際、その時の状態を保存するファイル)
の名前を指定します。imjournal は journald 経由でログを受信するためのモジュールです。
また StateFile=”imjournal.state” で imjournal.state という名前のファイルを
指定します。このファイルがあることで、rsyslog がシャットダウン、再起動した後もログの読み取りを
途中から再開できるようになります。なお、デフォルトの設定では imjournal.state は /var/lib/rsyslog 配下に配置されています。
先に説明した imuxsock の設定内容も踏まえると、デフォルトの設定では journald 経由でのみ
ログを収集するような設定になっています。 -
#module(load=”imklog”)
imklog モジュールをロードします。デフォルトでは無効化されています。
imklog は、ファシリティが kern (カーネルに関連する情報) のログを受信します。
しかし、カーネルログは journald によっても収集されるので、基本的にはこの設定は
不要と考えてよいです。 -
#module(load=”immark”)
immark モジュールをロードします。デフォルトでは無効化されています。
immark は、特定の間隔 (デフォルトでは 20分) ごとに rsyslogd:– MARK — という文字列を
ログに記録します。
これは rsyslog が動作していることを示すための仕組みです。 -
#module(load=”imudp”) # needs to be done just once
UDP 経由でログを受信します。デフォルトでは無効化されています。
リモートサーバのログを UDP 経由で受信したい場合、このパラメータを有効化します。 -
#input(type=”imudp” port=”514″)
UDP 経由でログを受信する際のポート番号を指定します。デフォルトでは無効化されています。
UDP 経由でログを受信する場合、module(load=”imudp”) も合わせて有効化する必要が
あります。 -
#module(load=”imtcp”) # needs to be done just once
TCP 経由でログを受信します。デフォルトでは無効化されています。
リモートサーバのログを TCP 経由で受信したい場合、このパラメータを有効化します。 -
#input(type=”imtcp” port=”514″)
TCP 経由でログを受信する際のポート番号を指定します。デフォルトでは無効化されています。
TCP 経由でログを受信する場合、module(load=”imtcp”) も合わせて有効化する必要が
あります。
上記以外にも、非常に多くのモジュールが用意されています。詳細は、下記のドキュメントを
参照してみてください。
Modules
https://www.rsyslog.com/doc/configuration/modules/
パラメータの使い方~全体の設定編~
続いては、rsyslog 全体の動作に関わる設定です。こちらもデフォルトの設定を元に、
各パラメータの意味や使い方などをご紹介していきます。
#### GLOBAL DIRECTIVES #### # Where to place auxiliary files global(workDirectory="/var/lib/rsyslog") # Use default timestamp format module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat") # Include all config files in /etc/rsyslog.d/ include(file="/etc/rsyslog.d/*.conf" mode="optional")
-
global(workDirectory=”/var/lib/rsyslog”)
rsyslog の作業ディレクトリのパスを指定します。
作業ディレクトリには、rsyslog のキューなどが一時的に保存されます。 -
module(load=”builtin:omfile” Template=”RSYSLOG_TraditionalFileFormat”)
builtin:omfile モジュールをロードします。
builtin:omfile は、ログをファイルに書き込む機能を提供します。
また、その際 RSYSLOG_TraditionalFileFormat というテンプレートの形式に沿って
文字列を出力します。テンプレートは、上記以外にもたくさんありますので、下記のドキュメントを参照してみてください。
Templates – Reserved Template Names
https://www.rsyslog.com/doc/configuration/templates.html#reserved-template-names -
include(file=”/etc/rsyslog.d/*.conf” mode=”optional”)
rsyslog の設定ファイルのパスを指定します。
ファイル名にはワイルドカードを使用することができるので、デフォルトの設定では
/etc/rsyslog.d 配下のすべての conf ファイルが対象となっています。mode は、ファイルが存在しない場合の動作について定義します。
デフォルトの設定では optional が設定されており、エラーは出力されずに処理を続行します。optional の他には、abort-if-missing ()、required があります。
各オプションの意味については、下記のドキュメントを参照してみてください。
The rsyslog include() object – mode
https://www.rsyslog.com/doc/rainerscript/include.html#mode
次回は、rsyslog のルールに関する設定についてご説明します。お楽しみに!