すべての Linux ディストリビューションには、すべてのシステム アクティビティを記録する何らかのログ メカニズムがあります。しばらく前に、/var/log に保存されている 20 個のログ ファイルのリストを提供しました。これは、トラブルシューティングに役立つ可能性があります。これらのログは、システム管理者がトラブルシューティングを行うために非常に重要です。
以下は、メッセージをログに記録するための 3 つの一般的な方法です:
<オール>
Rsyslog は、Debian および Red Hat ベースのシステムを含むいくつかの Linux ディストリビューションのデフォルトのログ プログラムです。 syslog プロトコルの実装とは別に、rsyslog はコンテンツベースのフィルタリングなどの追加機能を追加します。これもトランスポートに TCP を使用し、多くの構成オプションを提供します。
この記事では、上記の方法 2 を実装する方法について説明します。つまり、これは、中央ログ サーバーをセットアップし、個々のサーバーから中央ログ サーバーにログを送信する方法を説明しています。
このセットアップは、中央のログ サーバーからインフラストラクチャ内のすべてのサーバーのログ ファイルを分析するのに役立ちます。
インストール
Rsyslog は、Debian ディストリビューションおよび Red Hat ベースのシステムでデフォルトのロギング プログラムとして提供されます。システムに rsyslog がない場合は、ディストリビューションに応じて以下に示すようにインストールしてください。
apt-get install rsyslog rsyslog-doc (or) yum install rsyslog rsyslog-doc
Rsyslog 構成は、/etc/ryslog.conf ファイルと /etc/rsyslog.d/ ディレクトリの下のファイルに保存されます。
構成構造
中央ログ サーバーのセットアップ方法を理解する前に、rsyslog の構成構造を理解することをお勧めします。
Rsyslog 構成ファイルは次のように構成されています
<オール>モジュール
Rsyslog にはモジュラー アーキテクチャがあります。これらのモジュールを介して機能を動的に追加できます。モジュールは次のように分類されます:
- 入力モジュール – さまざまなソースからメッセージを収集するために使用
- 出力モジュール – メッセージをさまざまな場所 (ファイル、ソケットなど) に書き込むために使用されます。
- パーサー モジュール – メッセージ コンテンツの解析に使用
他のカテゴリのモジュールも利用できることに注意してください。これは、モジュールができることの概要を説明するためのものです.
設定ディレクティブ
すべての構成ディレクティブは、1 行に 1 つずつ指定する必要があり、ドル記号 ($) で開始する必要があります。ルールに影響します。
ルールライン
すべてのルール行は、「セレクタ フィールド」と「アクション フィールド」の 2 つのフィールドで構成されます。セレクターフィールドは、「施設と優先度」の 2 つに分かれています。アクションは、一致したルールに対して実行する必要があるアクションを指定します。
設定例
###################### MODULES ###################### $ModLoad imuxsock $ModLoad imklog ###################### Directives ###################### # Set the default permissions for all log files. $FileOwner root $FileGroup adm $FileCreateMode 0640 $DirCreateMode 0755 ###################### RULES ###################### mail.info /var/log/mail.info mail.warn /var/log/mail.warn mail.err /var/log/mail.err daemon.* /var/log/daemon.log
注:Linux で巨大なログ ファイルを表示するための 10 の例は、ログ ファイルを操作するときに役立つ場合があります。
テンプレート
テンプレートは、rsyslog によって提供される非常に重要な機能です。ユーザーはメッセージを望ましい形式でログに記録できます。メッセージをログに記録する動的ファイル名を作成するためにも使用できます。データベース ログの場合、テンプレートを使用してメッセージを適切な SQL ステートメントに変換します。
サンプル テンプレートは次のようになります:
$template mytemplate “Text-Before %msg% Text-After\n”
上記のテンプレートは、「This is hello from rsyslog」というメッセージを次のようにログに記録します:
Text-Before This is hello from rsyslog Text-After
テンプレートを使用してログ ファイルを動的に生成する方法について説明します。
中央ログ サーバー
上記のセクションでは、rsyslog の概要とその構成方法について説明したはずです。次に、中央ログ システムのセットアップに進みます。
ここでは、クライアントからのすべてのログ メッセージが転送される中央ログ サーバーのサーバー IP を「192.168.1.1」とします。
次の行を中央ログ サーバー サーバーの rsyslog.conf に追加します (この例では、IP アドレス 192.168.1.1 のログ サーバーに次の行が追加されています)。
# provides support for local system logging $ModLoad imuxsock # provides kernel logging support (previously done by rklogd) $ModLoad imklog # provides UDP syslog reception. For TCP, load imtcp. $ModLoad imudp # For TCP, InputServerRun 514 $UDPServerRun 514 # This one is the template to generate the log filename dynamically, depending on the client's IP address. $template FILENAME,"/var/log/%fromhost-ip%/syslog.log" # Log all messages to the dynamically formed file. Now each clients log (192.168.1.2, 192.168.1.3,etc...), will be under a separate directory which is formed by the template FILENAME. *.* ?FILENAME
上記の行を rsyslog.conf に追加した後、rsyslog プロセスを再起動します。これで、rsyslog サーバーはメッセージを受け入れる準備が整いました。
# service rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ]
ログ メッセージを中央サーバーに送信する個々のクライアント マシンの rsyslog.conf に次の行を追加します。
$ModLoad imuxsock $ModLoad imklog # Provides UDP forwarding. The IP is the server's IP address *.* @192.168.1.1:514 # Provides TCP forwarding. But the current server runs on UDP # *.* @@192.168.1.1:514
クライアントで rsyslog プロセスを再起動します。 rsyslog 中央サーバー (この例では 192.168.1.1) は、構成されたクライアントからすべてのログ メッセージを受信し、各クライアントのログは個別のディレクトリに配置されます。