Redmineのチケット量をグラフ化したい(第三回)

さて、前回ようやくデータベース的なものにデータがぶちこめそうな事は分かった。今回は、KibanaでElasticsearchに入ってるデータを可視化してみよう。

まずはお片付け

あーだこーだ試行錯誤してるうちに、糞みたいなデータが入りまくってしまった。次の工程に移る前に、いったんデータを全削除しておこう。なんか、公式ドキュメントによると DelereByQuery というやつを使えばできるらしい。英語さっぱりだが、まあなんとなく雰囲気から察するに、query の matchall でキレイに全件消えてくれるようだ。

curl -XPOST "http://localhost:9200/tasks/task/_delete_by_query" -d "{\"query\" : {\"match_all\" : { }}}"

なので、こんな感じで叩いてみた。

{"took":89,"timed_out":false,"total":23,"deleted":23,"batches":1,"version_confli
cts":0,"noops":0,"retries":{"bulk":0,"search":0},"throttled_millis":0,"requests_
per_second":-1.0,"throttled_until_millis":0,"failures":[]}

すると、なんかレスポンス返ってきた。deletedに23とか書いてあるので、たぶん23件のデータが削除されたのだろう。

あらためてデータぶち込み

Kibanaでデータを表示するには、なんか分かりやすい感じのテストデータをぶちこんでおきたい。ので、下記のようなデータをPOSTしてみた。

curl -XPOST "http://localhost:9200/tasks/task/?pretty" -d "{\"tickets\" : 64, \"date\" : \"2017-10-06\"}"
curl -XPOST "http://localhost:9200/tasks/task/?pretty" -d "{\"tickets\" :128, \"date\" : \"2017-10-13\"}"
curl -XPOST "http://localhost:9200/tasks/task/?pretty" -d "{\"tickets\" :256, \"date\" : \"2017-10-20\"}"

10月6日から1週間おきぐらいに、チケット数が倍々で増えるような感じのデータ入れてみた。実際、こんなにチケット数増えてたら大事だけども、まあグラフ的には分かりやすくなるだろう。

curl -XGET "http://localhost:9200/tasks/task/_search" -d "{\"query\" : {\"match_all\" : { }}}"

とりあえず、ちゃんとデータ入ってるか確認。_search とかで match_all すると、登録したやつが全件引っ掛けられるっぽい。

{"took":1,"timed_out":false,"_shards":{"total":5,"successful":5,"skipped":0,"fai
led":0},"hits":{"total":3,"max_score":1.0,"hits":[{"_index":"tasks","_type":"tas
k","_id":"AV96FsrEs-UKYOxu_Cji","_score":1.0,"_source":{"tickets" : 64, "date" :
 "2017-10-06"}},{"_index":"tasks","_type":"task","_id":"AV96Ft4Qs-UKYOxu_Cjj","_
score":1.0,"_source":{"tickets" :128, "date" : "2017-10-13"}},{"_index":"tasks",
"_type":"task","_id":"AV96Fu-is-UKYOxu_Cjk","_score":1.0,"_source":{"tickets" :2
56, "date" : "2017-10-20"}}]}}

こんなレスポンスが返ってきた。内容はよく分からんが、なんかそれっぽいものが入ってそうな雰囲気なので、次に進んでみよう。

Kibanaにアクセス

第一回同様に、Kibanaを立ち上げて、 http://localhost:5601/ にアクセスしてみる。
 

すると、やっぱり例のよく分からん画面が出て来る。たぶん「index pattern」の所にindex名を入れればいい気がするので、「tasks」を指定してみた。


なんかそれっぽいfieldsが表示された。なんか_sourceとか_scoreとかよく分からんものも混ざってるが、きっと後で何かの役に立つのだろう。ひとまず今回俺がやりたいのは、date(登録日時) の早い順から、tickets(チケット数) をグラフ化したいだけなのだ。


いろいろ手探りしてると、メニューの「Visualize」あたりでデータを可視化できそうじゃね?という所に行き着いたので、おもむろに「Create a visualization」をクリックしてみる。

なんかExcelグラフよろしく「好きなチャートを選んでね!」状態になるので、折れ線グラフを選ぶドン。
 

そして、インデックス選べ的な画面になるので、さっき登録した「tasks」を選んでみる。
 

あとは、色々と試行錯誤したらそれっぽい折れ線グラフが出てきた。

・画面右上の期間を「Last 60 days」にする
登録してるデータの日付がちょっと前のやつなので、今日を基準にどれぐらい表示するか指定しとく。
 
・「metrics」のY-AxisでFieldを選択する
なに?メトリックス?筋肉モリモリマッチョマンの変態か?
よく分からんが、Y-AxisがきっとY軸の事を言ってると思うので、Aggregationに「Max」、Fieldに「tickets」を選んだらうまくデータが表示された。あと「Custom Label」にテキトーな文字列を入れたら、ラベルを好きに付けられるようだ。

・「buckets」のX-AxysでFieldを選択する
一体なにがバケツなんだ・・・まったく分からんぜ。とりあえず、X-AxisがきっとX軸の事を言ってると思うので、Aggregationに「Date Histogram」を選択、Fieldを「date」にしたら、日付順にソートされたデータが表示された。

・再生マークを押す
いろいろとパラメータ設定したら、左メニューの右上にある再生マークのボタンを押せば、変更が適用できるようだ。

手探り感半端ないが、とりあえず俺がやりたい事は実現できそうな気がしてきた。今回はここまでにしとこう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)