最終形 nginxパフォーマンスグラフ
こんな感じのグラフを作成する事がゴール。
nginxのアクセスログを集計して、request_timeの範囲毎に色分けしてグラフ化したい。
- 遅いレスポンスが全体のどのくらいを占めているか
- 特定の時間だけ遅いなどが起きていないか
- 長期的にレスポンスの悪化が起きていないか
- deploy直後でレスポンスが悪くなっていないか
- 障害時のユーザー影響の直感的な理解
とか、色々と確認する時に見える化しておく事は重要。
手順
Visualizeでグラフを作成
グラフタイプを選択
今回は、Vertical bar chartで作成する。
新しいクエリを作成するので、次の画面では、From a new searchを選択する。
X軸を設定
Select buckets typeのX-Axisを選択して、AggregationにDate Histogramを指定する。
Applyを押すと反映されるが、この時点では全ログが一色で表示されている状態になる。
グラフにフィルターを適用する
kibana3とここが大きく変わった気がするが、ここでAdd Sub Aggretationを選択、Split Barsを選ぶ。
Split Barsなので条件によってBarを分割する事が出来る。
Sub AggregationはFiltersを選び、Queryを入れるところが出てくるのでここに条件を入れる。
今回は、request_time毎にQueryを設定しているので以下のように8個のQueryを入れた。ここは分割したい条件で色々と変えられる。
しかし、これ、普通にクエリをappendする様な方式じゃ駄目だったんだろうか。以前まではそんな方式だったと思うんだが。。。
実はそっちのやり方もあるのだろうか。ご存知の方いましたら教えてください。
保存
ここまで来たら、右上の保存アイコンで保存する。
(保存アイコンていつまでフロッピーなんだろうか。。。)
Dashboardに貼付けて保存
Dashboardに移動すると、プラスボタンで先ほど保存したグラフが選べるので選択して表示する、マウスで動かせたり大きさを変更出来たりしてここはkibaba3に比べると相当便利になっていると感じる。
環境
今回は自分で色々と設定するのが面倒だったので、AWSのelasticsearch serviceを利用。
当初の想定だと、elasticsearchだけ提供されていると思ったらが、kibanaも付いてきて感動した。
インフラエンジニアのお仕事が無くなる一方だが、本来のパフォーマンスのチェックとチューニングというお仕事に時間を使えてありがたい。
nginxのログは、各webサーバーでltsvで出力して、fluentdでelasticsearchに突っ込んでいる。
elasticsearchに突っ込むまではこの辺りが詳しく書いてある。
http://blog.zoncoen.net/blog/2013/11/11/logging-system-with-fluentd-elasticsearch-kibana3/
まとめ
kibana3の黒い画面に慣れていて最初は戸惑うが、4もなかなか色々と設定出来たり相変わらずUIはカッコいいので使い倒したらもっと良くなるのではないかなと思う。