ログ

第5回 マクロとテンプレートによるrsyslog活用法


Shin.鶴長
2008/12/5


テンプレートでログファイルを日付ごとに管理

 rsyslogでは、ログのファイル名や保存先ディレクトリの指定に、日付やホスト名といったマクロを用いることができます。そうすることで、別途「logrotate」のようなツールを組み合わせなくても、ログファイルを日付ごとに整理できます。

 次の例では「/var/log/messages_20081110」のようなログファイルが日次で生成されます。さらに、テンプレートに従って動的にファイルを生成するには、ログ出力先の指定で「?テンプレート名」のように「?」を付加します。

$template DynamicFileName1,"/var/log/messages_%$year%%$month%%$day%"
*.* ?DynamicFileName1(※注2
リスト6 ログファイルの名前に日付を付加するためのrsyslog.confの記述例

注2:本稿ではrsyslog.confの設定で、ログをより分けるために頻繁に「*.*」を指定しています。「*.*」は全ファシリティの全プライオリティのログが対象になります。特定のファシリティ、例えばauthprivファシリティに関するログだけを対象にするには、「authpriv.*」のような指定を用います。詳細は第1回を参考にしてください。

 次の設定では、ディレクトリ名を指定するのに日付マクロを使用しています。年月日ごとにディレクトリを作成し、その中にログファイルを作成する仕組みです。

$template DynamicFileName2,"/var/log/syslog/%$year%/%$month%/%day%/message.log"
*.* ?DynamicFileName2
リスト7 日付ごとに整理されたディレクトリにログファイルを保存するためのrsyslog.confの記述例

 ログを集中して管理するサーバでは、さまざまなネットワーク機器やリモートホストからのログを受け取ることになります。そのようなサーバでは、次のように「%hostname%」を使って、機器ごとにログファイルを整理するようにすると便利です。その際「%programname%」を使えば、機器名だけでなく、ログを出力しているプログラム名を付加することができます。使用可能なマクロは、前述の表1のとおりです。

$template DynamicFileName3,"/var/log/syslog/%hostname%/%$year%/%$month%/%day%/%programname%.log"
*.* ?DynamicFileName3

(「/var/log/syslog/ホスト名/年/月/日」でディレクトリを作成し、
「プログラム名-日.log」をファイル名に持ったログを生成します)
リスト8 ホストや日付ごとに整理されたディレクトリにログファイルを保存するためのrsyslog.confの記述例

 このようにテンプレートを活用すれば、日付やホスト名に基づいてログファイルを整理できます。しかし、7日前のログファイルを順次削除するような世代管理や、古いファイルの圧縮保存といった処理までは、rsyslog単体ではできません。そうしたアーカイブ管理まで実行するには、logrotateのようなツールを使用する必要があります。

拡張モジュールの利用

 rsyslogはモジュールの追加によっても機能を拡張できます。外部プログラムに頼ることなく、バリエーションに富んだ出力方法や入力方法を備えています。

■モジュールの追加方法(カーネルログの取り込み)

 モジュールを追加するには、設定ファイルのrsyslof.confで「$ModLoad」に続けてモジュール名を指定します。例えばカーネルログを取り込むには、次のようにモジュール「imklog」を有効にします。

$ModLoad imklog
リスト9 カーネルログを取り込むためのrsyslog.confの記述例

 ローカルホストから排出されるログは、通常、UNIXソケットを通して受け取ります。rsyslogでUNIXソケットからログを受け取るには、imuxsockモジュールが必要ですが、バージョン2互換モード(注3)でrsyslogを起動している場合、特に設定を加えることなくデフォルトで使用することができます。リモートホストのログをUDPで受け付けるにはimudpモジュールを、TCPで受け付けるにはimtcpモジュールを使用します。

注3:rsyslogをバージョン3互換モードで動作させた場合、imuxsockモジュールは有効になりません。「$ModLoad imuxsock」とrsyslog.confに記述し、imuxsockモジュールを有効にする必要があります。rsyslogのバージョン3互換モードについては、冒頭の「rsyslogをバージョン3互換モードで動作させる」を参照してください。

 このように入力系モジュールには、接頭文字として「im……」が使用されています。なおリモートサーバにログを送信する方法や、リモートクライアントからログを受け取る方法については、次回、解説を加えます。

#UDPを使用する場合
$ModLoad imudp
$UDPServerRun 514 #ポート番号の指定

#TCPを利用する場合
$ModLoad imtcp
$InputTCPServerRun 514 #ポート番号の指定
リスト10 リモートホストのログを取り込むためのrsyslog.confの記述例

 出力系モジュールには、メールでログを送信するための「ommail」や、MySQLサーバにログを格納するための「ommysql」のようなモジュールがあり、接頭文字に「om……」が使用されています。

 モジュールのいくつかはデフォルトで使用できますが、ommailやommysqlはrsyslogインストール時にビルドしておく必要があります。モジュールをビルドするには、configure実行時に、次のようなオプションを追加します。

 なおommysqlモジュールをビルドする場合、MySQLのクライアントライブラリやヘッダファイルが必要になります。

 例えばCentOSやFedoraでMySQLのクライアントライブラリやヘッダファイルをインストールするには、yumコマンドを使って、「# yum install mysql mysql-devel」のようにオンラインでインストールを実行します。ちなみにMySQLのインストール方法は、「今から始める MySQL入門」などが参考になります。

# ./configure --enable-mysql --enable-mail
--enable-mysql:ログをメールで送信するためのモジュールをビルドします。
--enable-mail:ログをMySQLサーバに格納するためのモジュールをビルドします
(configure以外のrsyslogのインストール方法は、第4回を参照)
リスト11 rsyslogインストール時に拡張モジュールを有効にする

 ディストリビューションのパッケージを使ってrsyslogをインストールした場合は、インストール時点ですでに多くの拡張モジュールが付属しています。ビルドされた拡張モジュールの保存先は、第4回に記したとおりです。

# ls /usr/local/lib/rsyslog/
imklog.la imtcp.la imuxsock.la lmregexp.la lmtcpsrv.la omtesting.la
imklog.so imtcp.so imuxsock.so lmregexp.so lmtcpsrv.so omtesting.so
immark.la imudp.la lmnet.la lmtcpclt.la ommysql.la
immark.so imudp.so lmnet.so lmtcpclt.so ommysql.so

(rsyslogをソースファイルを使ってインストールした場合、デフォルトでは/usr/local/lib/rsyslog/にビルド済みモジュールを見つけることができます)
リスト12 rsyslogのビルド済みモジュール一覧

 モジュールはビルドしただけでは使用できません。rsyslog.confで「$ModLoad」を使って組み込む必要があります。

 最終回となる次回は、こうした機能活用の具体例として、「ommailモジュールを使ってメールでログを送信する方法」と「ommysqlモジュールを使ってMySQLサーバにログを格納する方法」を解説します。

2/2

Index
新世代syslogデーモン徹底活用
 第5回 マクロとテンプレートによるrsyslog活用法
  Page 1
rsyslogをバージョン3互換モードで動作させる
テンプレートとマクロの活用
  Page 2
テンプレートでログファイルを日付ごとに管理
拡張モジュールの利用

Linux Square全記事インデックス


 Linux Squareフォーラム サーバ構築・運用関連記事
連載:Heartbeatでかんたんクラスタリング(連載中)
オープンソースソフトウェアの「Heartbeat」を使ってHAクラスタを実現し、サービスを「落とさない」仕組みを実現します
特集:Apache 2.2でWebサイトをパフォーマンスアップ!
最新安定版Apache 2.2は、何が変わったのか? 最新のApacheを新機能の使い方とともに解説する
連載:実用 Apache 2.0運用・管理術(全8回)
本連載では、Apache 2.0の運用や管理方法を解説する。まず必須設定と基本的なセキュリティ対策を行い今後の運用に備える
連載:実用 BIND 9で作るDNSサーバ(全15回)
本連載では、BIND 9の構築/運用方法を解説していく。実際に役立つことを目的に、セキュリティや大規模運用などのテーマを取り上げていく
連載:実用qmailサーバ運用・管理術(全14回)
本連載を通して、qmailによるメールサーバの高度な構築・運用・管理術を紹介。SPAM対策やML管理からサーバでのウイルスチェックなどまで
特集:Samba 3.0の全貌 改訂版
Samba 3.0リリースから8カ月。ここであらためて、Samba 3.0系列の新機能、インストール方法、国際化の現状を解説する

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します

TechTargetジャパン

Linux Square フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

キャリアアップ



- PR -
@IT Sepcial

イベントカレンダー

PickUpイベント

- PR -
もっと見る
- PR -

お勧め求人情報

ホワイトペーパーTechTargetジャパン

@IT Sepcial
ソリューションFLASH