はじめに
Fluentdによるログ収集システムの構築では、ログ収集サーバーおよび、クライアントのインストールと基本的な設定について解説しました。今回は、サーバーが収集したログをデータベースに集積し、検索する方法を解説します。
2014年02月20日 07時43分
Fluentdによるログ収集システムの構築では、ログ収集サーバーおよび、クライアントのインストールと基本的な設定について解説しました。今回は、サーバーが収集したログをデータベースに集積し、検索する方法を解説します。
前提条件は、前回の記事と同一です。
基本編では、fluentdが収集したログは全てファイルとして保存していますが、保存されたログファイルのサイズが大きくなると、ログの解析も困難になります。
そこで、公式プラグインとして用意されているmongoプラグインを使用して、収集したログをMongoDB上に集積します。
なお、セットアップはサーバー上で行って下さい。
インストールに先立ち、MongoDBのリポジトリを設定します。
$ sudo vi /etc/yum.repos.d/mongo.repo
[mongo] name=MongoDB Repository baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/i686 gpgcheck=0 enabled=1
MongoDBサーバー(mongo-10gen-server)および、Mongo シェル(mongo-10gen)をインストールします。
$ sudo yum -y install mongo-10gen mongo-10gen-server
$ mongo --version
今回インストールしたMongoDBサーバーは、32bit版のため記録可能なデータベースサイズに2GBの制約があります。このため、公式サイトで推奨している64bit版のMongoDBをインストールすることをお勧めします。
今回は、32bit版では、デフォルトで有効になっているジャーナル保存を無効化します。
$ sudo vi /etc/mongod.conf
nojournal = true
$ sudo service mongod start $ sudo chkconfig mongod on
td-agent.confを下記のとおり編集し、設定をリロードします。
$ sudo vi /etc/td-agent/td-agent.conf
# マッチしたログをファイルおよび、MongoDBに出力する <match **> type copy # 複数の出力先にコピーする <store> # 1番目の出力先 (ファイル) type file # ファイル出力 path /var/log/td-agent/secure/secure.log # 出力ファイル名 time_slice_format %Y%m%d # 出力ファイル拡張子 time_slice_wait 1m # 出力遅延時間 </store> <store> # 2番目の出力先 (MongoDB) type mongo # MongoDB host localhost # MongoDBサーバーアドレス port 27017 # MongoDB接続ポート database fluentd # データベース名 collection test # コレクション(テーブル)名 capped # 固定サイズ指定 capped_size 1024m # 最大サイズ指定 flush_interval 10s # データ書き出し間隔 (10秒) </store> </match>
$ sudo service td-agent reload
MongoDBに収集されたログを検索します。
$ mongo
Mongoコマンドシェルが起動されたら、下記のコマンドを入力します。
> use fluentd > db.test.find().forEach(printjson); > exit
実行すると、指定したコレクション(test)のデータが全て表示できます。
MongoDB Viewerは、MongoDBの管理を行うウエブアプリケーションです。
本アプリケーションをインストールすることで、MongoDB上の操作を全てGUIで行うことが可能です。
ここでは、MongoDB上に収集されたデータの表示を行います。
公式サイトから、アーカイブをダウンロードし解凍します。
$ mkdir -p mViewer && cd mViewer $ wget -q --no-check-certificate https://github.com/downloads/Imaginea/mViewer/mViewer-v0.9.1.tar.gz $ tar zxf mViewer-v0.9.1.tar.gz $ rm mViewer-v0.9.1.tar.gz
シェルコマンドを用いて、mViewerを起動します。
mViewerの起動方法は、今回のように毎回コマンドラインから起動することも可能ですが、自動起動スクリプトを作成して、システム起動時に起動すると良いでしょう。
$ sudo ./start_mViewer.sh
起動すると、デフォルトポート8080番でHTTP接続が可能になりますので、下記のURLにアクセスします。
http://192.168.0.50:8080
MongoDBが、認証無しで起動しているため、UserNameおよび、Passwordを未入力のまま[GO]をクリックすると、ログインできます。
DATABASEタブをクリックすると、fluentdにより作成されたデータベースが表示されます。
COLLECTIONSタブをクリックすると、fluentdにより作成されたコレクション(test)が表示されますので、コレクションをクリックすると、JSON形式のデータを表示することができます。