Apache Storm 1.0.0を使ってみる Storm UI編


Storm 1.0.0がリリースされましたので、早速使ってみようと思います。

<img width="477" alt="スクリーンショット 2016-04-16 7.12.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/459ef416-f1c3-26f5-dedd-fac7a0fae10e.png">

#改修点は300以上
いわゆる大型メジャーバージョンアップというやつです。そのため、tar.gz媒体のサイズが0.10.0と1.0.0で約倍も差が出ています。

|0.10.0|1.0.0|
|:-----:|:-----:|
|73.9 MB|146 MB|

今回はその中でも、まずStorm UIを使ってみようと思います。
#準備
Zookeeperを用意します。

とりあえずZookeeperの最新版（このとき3.4.8）をDLして、設定ファイルを編集します。

```
$ cp conf/zoo_sample.cfg conf/zoo.cfg
```
あとはそのまま起動するだけ。

```
$ bin/zkServer.sh start
ZooKeeper JMX enabled by default
Using config: XXXXX/zookeeper-3.4.8/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
```
動きましたね。

このzookeeper上でStormを動かします。

/opt/stormにstormの中身を配置した上で、以下の設定変更をconf/storm.yamlに記述します。

```
storm.zookeeper.servers:
  - "0.0.0.0"

storm.local.dir: "/opt/storm"

nimbus.host: "0.0.0.0"
```
実行してみます。まずはnimbusから。

```
$ bin/storm nimbus
```
logsにnimbus.logが出力されました。動作したようです。

```lang:nimbus.log
[INFO] Using statistics reporter plugin:org.apache.storm.daemon.metrics.reporters.JmxPreparableReporter
o.a.s.d.m.r.JmxPreparableReporter [INFO] Preparing...
o.a.s.d.common [INFO] Started statistics report plugin...
o.a.s.d.nimbus [INFO] Starting nimbus server for storm version '1.0.0'
```
次にStorm UIの起動。

```
$ bin/storm ui
```
こちらも起動したようです。

```lang:ui.log
o.a.s.s.o.e.j.s.h.ContextHandler [INFO] started o.a.s.s.o.e.j.s.ServletContextHandler{/,null}
o.a.s.s.o.e.j.s.AbstractConnector [INFO] Started SelectChannelConnector@0.0.0.0:8080
```
Supervisorも起動します。

```
$ bin/storm supervisor
```
起動したようですね。

```lang:supervisor.log
o.a.s.s.o.a.c.f.s.ConnectionStateManager [INFO] State change: CONNECTED
o.a.s.d.supervisor [INFO] Starting supervisor with id 3db82a97-2a95-4dea-8981-5f19a5084f1c at host 192.168.10.104
o.a.s.d.m.MetricsUtils [INFO] Using statistics reporter plugin:org.apache.storm.daemon.metrics.reporters.JmxPreparableReporter
o.a.s.d.m.r.JmxPreparableReporter [INFO] Preparing...
o.a.s.d.common [INFO] Started statistics report plugin...
```

#Storm UIにアクセスしてみる
うまく起動できたら、Storm UIに早速アクセスしてみましょう。

<img width="1464" alt="スクリーンショット 2016-04-16 8.15.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/c3f1d54f-a382-55b0-19a1-0ac74373baf4.png">
とりあえず表示できました。

#Topologyのサンプルを動かしてみる
以下のコマンドでTopologyのサンプルを動かしてみます。

```
$ bin/storm jar examples/storm-starter/storm-starter-topologies-1.0.0.jar org.apache.storm.starter.ExclamationTopology ExclamationTopology
```
<img width="1461" alt="スクリーンショット 2016-04-16 8.28.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/c051ab4a-ba81-c60c-4b58-b8e78d1b9a53.png">
うまく起動すればTopology Summaryに表示されます。地味にSearchができるようになっていますね。

##ログレベルがUIから変更可能に
Topologyの詳細ページに遷移すると、Topology Actionsに"Change Log Level"が増えています。UIからログレベルが変更可能になったんですね。これは地味に便利かも。

<img width="1463" alt="スクリーンショット 2016-04-16 8.30.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/943ac15c-ffec-26b7-da58-80aaf16d59a2.png">
## Supervisorログの確認がStorm UIから可能に
今まではサーバ上でsupervisor.logを見る必要がありましたが、1.0.0からStormUIからのsupervisor.log確認ができるようになりましたね。

ただし、ログを確認するためにはlogviewerの動作が必要です。

```
$ bin/storm logviewer
```
Supervisor SummaryのHostのIPアドレスをクリックすればlogviewerの画面に遷移し、ログの確認ができます。

<img width="714" alt="スクリーンショット 2016-04-16 8.38.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/aeb68b24-ad50-0ef2-fafb-0b19e4d5311c.png">
## logviewer画面の操作性が増している
### 表示しているログ内部の操作が可能に
これは嬉しい。。。キーワードを入力することで該当するログのみを表示してくれます。

<img width="344" alt="スクリーンショット 2016-04-16 8.40.51.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/5b183d68-7921-cf7b-cabb-2c578d97ab45.png">
表示したsupervisor.logを"thread"というキーワードで絞り込んでみます。

<img width="1166" alt="スクリーンショット 2016-04-16 8.42.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/c5824c41-ff71-c967-e8fb-153d77b93a1e.png">
うん、普通に便利。

###ログフォルダのファイル一覧が出せる
<img width="290" alt="スクリーンショット 2016-04-16 8.43.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/226ded53-7183-6bdc-65ca-bb9a8605ef08.png">
ログフォルダ配下にあるログの一覧がドロップダウンで出力されるようです。これ、つまり実質ログを見るためにサーバにアクセスする必要がなくなった、ということですね。

ちなみにlogsフォルダの構成も仕様変更があったようで、workerのログはworkers-artifactsというフォルダの中で、TopologyID毎、ポート番号毎でログの配置先が変わっているようです。
->Topologyのログを確認する場合は、上記のフォルダ配下の一覧が出力されるようです。

<img width="258" alt="スクリーンショット 2016-04-16 8.43.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/102769/a703ff03-45e2-029a-3360-5b567e21b556.png">

さて、Storm UIを起動してざっと見てきましたが、今までサーバにアクセスして確認していたものを、なるべくViewで済ませられるように使い勝手、機能性の向上がされているように見えました。まだまだ調べがいがありますね。