見出し画像

Redmineのチケット量をグラフ化した話(Part3)

さて、前回ようやくデータベース的なものにデータがぶちこめそうな事は分かった。今回は、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/ にアクセスしてみる。

画像1

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

画像2

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

画像3

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

画像4

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

画像5

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

画像6

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

・画面右上の期間を「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」にしたら、日付順にソートされたデータが表示された。

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

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

この記事が気に入ったらサポートをしてみませんか?