GrowthForecastというグラフ表示ツールで捗る話」で紹介したGrowthForecastですが、モリス氏のfluent meetupでの発表やriywo氏の発表で少し紹介されていたりするわけですが、社内でも少しずつメトリクスが増えて活用されています。

データが既に入っているので大きな変更はできないのですが、少し機能追加をしています。

ソースコード
https://github.com/kazeburo/GrowthForecast

1分更新グラフ

GrowthForecast はWebアプリケーションとWorkerの2つから構成されています。APIに対してPOSTされたデータは、一旦SQLiteのDBに格納され、Workerがそれを取得、RRDファイルを更新します。これまでは5分毎に動くworkerがいるだけでしたが、そこに1分毎動くworkerを追加しました。

growthforecast_two_workers.png

上の図のようにworkerが2つ動くようになりました。すぐに結果が知りたいとき、5分よりも高い解像度でデータがみたいときに利用できます。

画面では、とりあえず感が強いけどボタンが追加されています。

growthforecast-1min.png

デフォルトでこの機能が有効になっていますが、以下のように起動することで、これまでと同じ5分更新だけにできます

$ perl growthforecast.pl --disable-1min-metrics

JSONフォーマットでの出力機能追加

これまでGrowthForecastはデータを溜め込んでグラフとして表示するだけでしたが、これだけではせっかく貯めたデータの再利用ができず捗りません。そこでRRDファイルに保存されているデータをJSONにて出力できるAPIを作りました。

APIは2種類。1つ目はグラフの凡例にでているサマリー取得API

$ curl http://example.com/summary/path/to/graph
{"graph":["0.00000000","0.09241971","5.91815168","0.00000000"]}

レスポンスのデータは指定期間中の「現在」「平均」「最大」「最小」となります。

もう一つのAPIは、グラフデータのエクスポート。

$ curl http://gf.ops.dev.livedoor.net/xport/path/to/graph?t=d&gmode=subtract
{"column_names":["graph"],"step":600,"columns":1,"end_timestamp":1329790200,"start_timestamp":1329671400,"rows":[[0.499581818333333],[0],[0],[0],[0],[0],[0],[0],[0],...,[null]]}

このようにグラフを描く際に使う値が取得できます。2つのAPIは複合グラフでも利用可能です。

これらのAPIを使って、以下のような監視をすることを妄想中です。

fluent-growthforecast-monitoring.png

アクセスログからステータスコードごとにまとめて件数をGrowthForecastになげて、エラーの割合が一定を超えたらアラートを出すとか、ツールを連携させることで実現できそうですね

合わせて読みたい

fluent-plugin-flowcounter および fluent-plugin-growthforecast released! #fluentd - tagomorisのメモ置き場

このブログ記事について

このページは、Masahiro Naganoが2012年2月21日 12:25に書いたブログ記事です。

ひとつ前のブログ記事は「Apache 2.2.15から入った mod_reqtimeout を Reverse Proxyで使う場合の注意点」です。

次のブログ記事は「最新のログファイルにリンクが作れるようになった Apache 2.4.1 の rotatelogs を試す」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja