サーバのログは常に生成され続けます。一日に一回アップロードするという運用では、直近で発生しているイベントを検索することができません。Cloudera Searchを使えば、生成されるログメッセージをほぼリアルタイムで検索できるようになります(NRT=ニアリアルタイム)。
チュートリアル5:Cloudera Searchを使ってサーバログの全文検索を行う
Solrを使うには、まず設定ファイルの作成とスキーマの定義を行わないといけませんが、このチュートリアルではすでに用意されているため、このフェーズは省略します。
まず、Solrの設定をアップロードします。
$ cd /opt/examples/flume $ solrctl --zk quickstart.cloudera:2181/solr instancedir --create live_logs ./solr_configs
ログ検索用のコレクションを作成します。
$ solrctl --zk quickstart.cloudera:2181/solr collection --create live_logs -s 1
コレクションとは論理的な検索インデックスのことです。詳細は『Apache Solr入門』のp.263以降を参照してください。
次に、ダミーデータ生成ツールを起動します。
$ start_logs
このツールは、擬似ログデータを少しずつ生成していきます。
どのようなログが出力されているかを確認したい場合は以下のコマンドを入力します。
$ tail_logs
ツールを停止させる場合は以下のコマンドを入力します。
$ stop_logs
次に、Apache Flumeというログ収集ソフトウェアを起動し、生成されていくログメッセージをストリームでHadoopに取り込んでいきます。
flume-ng agent --conf /opt/examples/flume/conf --conf-file /opt/examples/flume/conf/flume.conf --name agent1 -Dflume.root.logger=DEBUG,INFO,console
テスト検索
「http://<VMのIPアドレス>:8888/indexer」にアクセスし、「live_logs」をクリックすると、インデックスを表示する画面になります。
左の「検索」をクリックすると、検索画面に移ります。
Googleなどの検索ウィンドウとは違い、Solr単体では検索用のクエリをきちんと記述しないといけません。検索ウィンドウに、以下のクエリを入力してみてください。
action:checkout
このクエリは、「action」フィールドから「checkout」という文字を含むドキュメントを検索します。
AND検索する場合は、下記のようにクエリを記述します。
((action:"view department") AND (department:apparel))
このようにしてログデータの検索を行うことができます。しかし、もう少し工夫して見やすくしてみましょう。