LucidWorks SiLK を触ってみる

日頃いろいろな会社のお客様と技術話をさせていただくことが多いのですが、 Kibana + ElasticSearchを導入されているところが多いなという印象を持っています。   私自身は業務でElasticSearchを使ったことがなく、ずっと検索まわりはSolrでやってきたのですが、 SolrでもKibanaのようにダッシュボート的に使えるイカしたUI的なのないかなと思って 探していたら、LucidWorksという検索界隈では有名な会社がSiLKというソリューションを提供していました。   こちら↓にあるように『Solr integration with LogStash and Kibana』まんまやん、と。。   中身を見てみると、ElasticSearchの部分はSolrになっているのは、そりゃそうだって話ですが、 Kibana部分はBanana(https://github.com/LucidWorks/banana)というものになっています。 こちらも『Banana for Solr - A Port of Kibana』といった感じ。   ↓ちょいちょい開発も活発で2週間前くらいにリリースもされているようです Banana 1.2: Released on 11 May 2014     ■ ダウンロードして起動してみる   上記のSiLKのページから必要な情報を入力して、ダウンロードしてきたものを解凍して立ち上げてみます。 SILK-README.txt には↓のように書いてあったので、その通りに。

1. Run Solr

    cd $SLK_INSTALL_DIR/SiLK-1.1/solr-4.7.0/SiLK
    java -jar start.jar

  ↓普通のSolrと同じように8983でリスンしてるっぽいので

4201 [main] INFO  org.apache.solr.servlet.SolrDispatchFilter  – SolrDispatchFilter.init() done
4214 [main] INFO  org.eclipse.jetty.server.AbstractConnector  – Started SocketConnector@0.0.0.0:8983

  ブラウザからhttp://localhost:8983にアクセスしてみると、 solr.warとbanana.warっていう2つのwarファイルが配置されているようです。   で、bananaの方にアクセスしてみると、それっぽいのが出てきました。 Syslog Demoということみたいです。 errorで検索をしているみたいですが、OUTLOOKのがチョイチョイ出てます…。     ■ Solrの定義ファイルを見てみる   Solrの管理画面を見てみると↓のlogstash_logs_demoなのかなという気がしてきます。 (他は全然ドキュメント入ってなかったので…)   スキーマブラウザをみると↓そんな感じなのね、と。   schema.xmlを探してたら、confディレクトリの下は schema.xml.bak となっていて、 それっぽいのを他に探してみると、managed-schemaというファイルがあって、 ↓こんな感じで定義されていました。

  <fields>
    <field name="_version_" type="long" indexed="true" stored="true"/>
    <field name="event_timestamp" type="tdate" indexed="true" stored="true"/>
    <field name="event_version" type="long" indexed="true" stored="true"/>
    <field name="host" type="text_en" indexed="true" stored="true"/>
    <field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/>
    <field name="logtext" type="text_en" indexed="true" stored="false"/>
    <field name="message" type="text_general" indexed="true" stored="true"/>
    <field name="path" type="text_en" indexed="true" stored="true"/>
    <field name="received_at" type="text_en" indexed="true" stored="true"/>
    <field name="received_from" type="text_en" indexed="true" stored="true"/>
    <field name="source_host" type="text_en" indexed="true" stored="true"/>
    <field name="syslog_message" type="text_en" indexed="true" stored="true"/>
    <field name="syslog_program" type="string" indexed="true" stored="true"/>
    <field name="tags" type="text_en" multiValued="true" indexed="true" stored="true"/>
    <field name="type" type="text_en" indexed="true" stored="true"/>
    <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false"/>
    <dynamicField name="ignored_*" type="ignored" multiValued="true"/>
    <dynamicField name="random_*" type="random"/>
    <dynamicField name="attr_*" type="text_general" multiValued="true" indexed="true" stored="true"/>
    <dynamicField name="*_txt" type="text_general" multiValued="true" indexed="true" stored="true"/>
 …

    ■ データの投入方法   なんとなく、動かせそうな手応えが掴めてきました。 続いてデータ投入はElasticSearchは自社で開発しているLogStashというログコレクタを使う感じになるのかな、と。   SILK-README.txtを見ると、solrWriterForLogStash/logstash_deploy/logstash_logsに いろいろあるよ的な事が書いてあります。   一番ぽゆい感じのドキュメントをみると、やり方がズダズダっと書いてあるのですが、

$ cat MANUAL.TXT
Instructions

This document details how to use LogStash with Solr.  This release has been tested with:
    Solr version 4.4.0, 4.5.0, 4.6.0, 4.7.0
    LogStash version 1.3.3
    Java 1.6.0

1) Create a collection to hold the log event data.

途中から↓のような記述が出てきて、なんかちょっとLucidWorksロックイン的な 感じになったらヤダな、、とか。 ・Copy lucidworks.jar to the directory where you will execute the LogStash jar file ・Copy lucidworks_solr_lsv133.rb to your LogStash outputs directory.   個人的には普段はFluentdを使っているので、fluent-plugin-xxxみたいので サクっと出来たらいいのになぁなんて思ったりもしますが…。  

[改訂新版] Apache Solr入門 ~オープンソース全文検索エンジン (Software Design plus)
大谷 純 阿部 慎一朗 大須賀 稔 北野 太郎 鈴木 教嗣 平賀 一昭
技術評論社
売り上げランキング: 40,317