Solr6.1.0+Banana+Fluentdでvmstatの情報を可視化してみる

Solr6.1.0+Banana+Fluentdの設定例としてvmstatの情報を取得するところまで書きます。

ソフトウェア構成

利用したソフトウェアのバージョンは以下の通り。

S/W Version
solr 6.1.0
banana 1.6.0
td-agent 2.3.2

Solrインストール

こちらの手順で実施。6.1.0をインストール。コア作る前まで実施します。

yomon.hatenablog.com

Bananaインストール

次にダッシュボードなどフロントエンドで動くBananaインストールします。

github.com

Bananaをダウンロードします。

$ git clone https://github.com/lucidworks/banana.git

WARファイルのビルドのためにant入ってなければ入れておきます。

# yum -y install ant

先ほどダウンロードしたbananaディレクトリい入りantでWARファイルをビルドします。

$ cd banana/
$ ant
Buildfile: /home/solr/banana/build.xml

build-war:
      [war] Building war: /home/solr/banana/build/banana-1.6.0.war

BUILD SUCCESSFUL
Total time: 1 second

warファイルを インストール済みのSolrに組み込まれているJettyのWebappフォルダに配置します。

# cp ~/banana/build/banana-1.6.0.war /opt/solr/server/solr-webapp/webapp/banana.war

warファイルを利用できるようにjettyの設定を行います。

# vi /opt/solr/server/contexts/banana-context.xml
<?xml version="1.0"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath"><Property name="hostContext" default="/banana"/></Set>
  <Set name="war"><Property name="jetty.base"/>/solr-webapp/webapp/banana.war</Set>
  <Set name="defaultsDescriptor"><Property name="jetty.base"/>/etc/webdefault.xml</Set>
  <Set name="extractWAR">false</Set>
</Configure>

Solrを再起動します。

/etc/init.d/solr restart

ブラウザから繋ぐと以下のような画面が表示されるはずです。

http://hostname:8983/banana

f:id:yomon8:20160805234625p:plain

この時点では以下のようなメッセージが表示されていると思いますが一旦無視します。

Error Collection not found at /solr/collection1. Please check your configuration or create the collection. If you're using a proxy ensure it is configured correctly.

Solr コア作成

vmstat用のコアを作成していきます。

$ su - solr
$ /opt/solr/bin/solr create_core -c vmstats

Copying configuration to new core instance directory:
/var/solr/data/vmstats

Creating new core 'vmstats' using command:
http://localhost:8983/solr/admin/cores?action=CREATE&name=vmstats&instanceDir=vmstats

{
  "responseHeader":{
    "status":0,
    "QTime":731},
  "core":"vmstats"}

コアが作成されました。

設定ファイルsolrconfig.xmlが生成されているので以下のように設定追加しておきます。

vi /var/solr/data/vmstats/conf/solrconfig.xml
<autoSoftCommit>
      <maxTime>${solr.autoSoftCommit.maxTime:10}</maxTime>
</autoSoftCommit>

Solrを再起動してコアの設定完了です。

/etc/init.d/solr restart

管理画面からもvmstatsという名前でコアが作成されているのがわかります。

f:id:yomon8:20160805235056p:plain

Fluentd導入

情報収集用のミドルウェアであるFluentdを導入します。

事前設定

まずは本家に沿って事前設定します。

docs.fluentd.org

インストール

インストールは以下のコマンドを実行するだけです。

# curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

Installing Fluentd Using rpm Package | Fluentd

Fluentdで取得した情報をSolrに転送するためのSolr連携用のプラグインを導入します。

github.com

以下のコマンドでインストールできます。

# td-agent-gem install fluent-plugin-out-solr

Fluentd設定

設定ファイルに以下の内容を追記します。

# vi /etc/td-agent/td-agent.conf
<source>
  type exec
  command vmstat 1 2 | tail -n 1 | awk -v MYHOST=$(hostname) 'BEGIN{OFS="\t"}  {print MYHOST,$1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$16,$17}'
  keys hostname,procs-r,procs-w,mem-swpd,mem-free,mem-buff,mem-cache,swap-in,swap-out,io-blockin,io-blockout,system-in,system-cs,cpu-usr,cpu-sys,cpu-idle,cpu-wait,cpu-steal
  format tsv
  tag vmstat
  run_interval 5s
</source>
<match vmstat>
  type solr
  host localhost
  port 8983
  core vmstats
  include_tag_key true
  time_field event_timestamp
  tag_key tag
  utc
  flush_interval 3s
</match>

後はFluentdを再起動します。

# /etc/init.d/td-agent restart

Fluentd動作確認

Solrの管理画面を見るとFluentdから転送されてきた情報が溜まっているのがわかります。

クエリもできます。

Bananaで情報可視化してみる

やっと準備ができたので、軽く触ってみました。

まずはBananaにアクセスしてみます。

http://hostname:8983/banana

相変わらずエラーメッセージ出てるので、まずはこれを消します。

画面右上の設定ボタンをクリックします。

SolrのタブにいきCollectionの項目にコア名を入力します。

この時点ではブラウザ更新すると設定が元に戻ってしまうのですが、以下の画像にある通り、SaveでSet as Browser Defaultとするとブラウザに設定を保存できます。

先ほどFlentdの設定でvmstatというタグをつけて情報を転送してきているので、その情報を抽出します。

例えばvmstatのMemoryのFree領域の情報をグラフ化してみます。

グラフ表示できました。

参考URL

https://codezine.jp/article/detail/8707