知っておくとちょっと便利!rsyslog における各パラメータの意味~モジュール・全体の設定編~

今号では、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 のルールに関する設定についてご説明します。お楽しみに!

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

2人がこの投稿は役に立ったと言っています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です