連載
» 2009年01月09日 00時00分 公開

新世代syslogデーモン徹底活用(最終回):マクロを生かしたrsyslogの活用例 (2/2)

[Shin.鶴長,@IT]
前のページへ 1|2       

Ubuntuの場合の注意

 UbuntuではSynapticを使って、rsyslogパッケージとともに、MySQLにログを格納するためのrsyslog-mysqlパッケージをインストールすることができます(画面1)。

画面1 Synapticでrsyslog関連パッケージをインストールする(デスクトップメニューの「システム→システム管理→Synaptic パッケージマネージャ」で起動できます) 画面1 Synapticでrsyslog関連パッケージをインストールする(デスクトップメニューの「システム→システム管理→Synaptic パッケージマネージャ」で起動できます)

 rsyslog-mysqlパッケージのインストールで、MySQLを設定するためのウィザードが自動的に開始されます。ウィザード(画面2)でMySQLを準備するには、リスト9のとおり、事前にMySQL側でデータベースの作成とユーザー権限の追加を行っておく必要がります。

# mysql -u root -p         ←MySQLのクエリモードを開始します。
Enter password:            ←MySQLの管理用パスワードを入力
※「mysql>」プロンプトに続けて、次のようなSQLクエリを入力します
 
(データベース「Syslog」の作成)
CREATE Database Syslog;
 
(権限の設定 ユーザー:rsyslog、パスワード:password)
GRANT ALL PRIVILEGES ON Syslog.* TO rsyslog@localhost IDENTIFIED BY 'password';
リスト9 Ubuntuでrsyslog-mysqlパッケージを導入する前に必要なMySQLの準備
画面2 rsyslog-mysqlパッケージをインストールした際に起動する設定ウィザード画面(MySQL管理用パスワードの入力、rsyslogユーザーのパスワード入力の順で行います) 画面2 rsyslog-mysqlパッケージをインストールした際に起動する設定ウィザード画面(MySQL管理用パスワードの入力、rsyslogユーザーのパスワード入力の順で行います)

 設定ウィザード終了後、テーブルが作成されているか確認します。なおUbuntuのrsyslog-mysqlパッケージでは、rsyslogのMySQLに関わる追加設定は「/etc/rsyslog.d/mysql.conf」で行います。設定方法は前述の「rsyslogの準備」と同様です。

# mysql -u rsyslog -p         ←MySQLのクエリモードを開始します。
Enter password:               ←「password」を入力
mysql> show tables;
+------------------------+
| Tables_in_Syslog       |
+------------------------+
| SystemEvents           | 
| SystemEventsProperties | 
+------------------------+
2 rows in set (0.00 sec)
リスト10 自動生成されたテーブルを確認する

ログの転送

 続いて、ログをリモートサーバに転送する方法や、リモートからログを受け付ける方法を解説しましょう。rsyslogでは、シスログ転送で一般的に利用されるUDPに加え、信頼性の高いTCPを使ってログを送受信することができます。

ログを受け取る(サーバ)側の設定

 リモートクライアントからのログをUDPで受信する場合は「imudpモジュール」を、TCPで受信する場合は「imtcpモジュール」を組み込みます。それぞれデフォルトで514番ポートが使用されますが、ほかのサービスポートを使用する場合は、「$UDPServerRun」や「$InputTCPServerRun」でポート番号を指定します。

 この際、不特定ホストのログを受信しないよう「$AllowedSender」でクライアントを制限することができます。クライアントの指定には、IPアドレスやネットワークアドレス、ドメイン名、ホスト名などを用いることができます。ただし、ホスト名をFQDNで指定する際は、DNSでIPアドレスが引けるよう事前に登録しておく必要があります。rsyslog起動時にIPアドレスが引けないホスト名は、$AllowedSenderの対象から除外されるようになっています(リスト11)。

##UDPを使用する場合
$ModLoad imudp
#ポート番号の指定
$UDPServerRun 514
#アクセス制限
$AllowedSender UDP, 127.0.0.1, 192.168.0.0/24, *.example.jp, host.example.jp
 
##TCPを利用する場合
$ModLoad imtcp
#ポート番号の指定
$InputTCPServerRun 514
#アクセス制限
$AllowedSender TCP, 127.0.0.1, 192.168.0.0/24, *.example.jp, host.example.jp
リスト11 ログを受け取る(サーバ)側のrsyslog.confの記述例

ログを送信する(クライアント)側の設定

 ログを送信するリモートクライアントの設定はリスト12のとおりです。UDPで転送するには「@」を、TCPで転送するには「@@」を、リモートサーバのアドレスの前にそれぞれ付けます。

#UDPで送信する場合
*.*               @192.168.1.10
*.*               @192.168.2.20:1514         #ポート番号を指定する場合
 
#TCPで送信する場合
*.*               @@192.168.1.10
*.*               @@192.168.2.20:1514        #ポート番号を指定する場合
リスト12 ログを送信する(クライアント)側のrsyslog.confの記述例

 リモートサーバにログを送信する際、転送パフォーマンスの悪化によってログの送信漏れが発生しないよう、スプールを使用することも可能です。スプールを使用することで、サーバにログを送信する前に一時的にログを蓄えることができます。

 スプールを使用する場合は、リスト13のように「$WorkDirectory」でスプールディレクトリを指定します。ここで指定するディレクトリは事前に作成しておきます。

 スプールをメモリに持たずにディスクに書き出すよう設定するには、「$ActionQueueType」で「Disk」を指定します。リモートサーバとの通信が切断した場合など、ログ送信の再試行回数は「$ActionResumeRetryCount」で指定できます。デフォルトは「0」で、再試行は行いません。また「-1」を指定した場合、再試行を永久に繰り返します。

#スプールディレクトリの指定
$WorkDirectory /var/spool/rsyslog
 
#スプール方式の指定
$ActionQueueType Disk
 
#ログ送信の再試行回数(-1で無限に再試行を実行)
$ActionResumeRetryCount 5
 
#スプールディレクトリに作られるキューのファイル名「例:queue.00000001」
$ActionQueueFileName queue
 
#シャットダウン時にメモリ上のキューを保存
$ActionQueueSaveOnShutdown on
リスト13 スプールを使用する場合のrsyslog.confの記述例
# mkdir /var/spool/rsyslog
リスト14 スプールディレクトリの作成

 ここで紹介した以外にも、オフピーク時にだけログを送信したり、送信サーバのダウンを検知して2番目のサーバに切り替えるといったことも可能です。そうした、より細かな設定方法については、付属ドキュメント「rsyslog_reliable_forwarding.html」や、rsyslog配布元の「Reliable Forwarding of syslog Messages with Rsyslog」に記されていますので、そちらを参考にしてください。

それぞれの長所を生かした活用を

 以上、rsyslogの活用方法をいくつか紹介しました。

 ディスクへの書き出しタイミングやディスクのチューニングに関しては、第3回で紹介したsyslog-ngの方が細かな設定が可能ですが、ログの転送方式ではrsyslogの方がバリエーションに富んでいます。単にメールやデータベースにログを送信するだけでなく、文字列一致などの条件指定も可能です。さらに、セキュリティを考慮して、シスログの転送にTLSを使用することもできます。

 rsyslogのさらなる活用については、次のドキュメントを参考にしてください。

関連リンク:

rsyslogのドキュメント
http://www.rsyslog.com/doc

rsyslogの活用事例
http://wiki.rsyslog.com/index.php/Configuration_Samples


 次世代シスログデーモンのインストールと活用法テーマに、6回に渡って解説してきました。シスログはインエターネット創世記から長期にわたり使用されている伝統的なプロトコルですが、syslog-ngやrsyslogのような次世代を担う新たなデーモンにより、今後もインターネットを支える重要なプロトコルとしての役割を担っていくことでしょう。

前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。