Webサーバ勉強会#5にいってきた&しゃべってきた
参加者が全員発表というハードコア勉強会「Webサーバ勉強会 #5」に行ってきた。
Webサーバ勉強会 #5 : ATND
お題がApache2.4 or Varnish or fluentd ということで聞きたい話題は満載、話せる話題は……Apache2.4で何か試せるかなと思ってたけど時間がなかった、ので普通にfluentdまわりで最近やってたことをしゃべってきた。
内容はざっくり要約すると「とにかく各サーバからディスクに書かれてるログをストリーム状に集めてひとつのファイルに書き込みたい、形式をいじられると困るので生ログそのままで! どうしたらいいの!」という話。実はFluentd標準の機能ではできない、ので、このへんのツール&プラグインを組合せれば簡単にできるよ、という内容で、要するに自作ソフトウェアの宣伝。
#fluentd 用ログ収集専用のエージェント fluent-agent-lite 書いた - tagomorisのメモ置き場
#fluentd fluent-plugin-file-alternative released! - tagomorisのメモ置き場
個人的にもディスクに書いたログを後から調査するときに grep | awk で探せるのは大きくて、JSONデータがディスクにあるからなんとかしてね、というのは(専用のツールを書く場合は楽だけど)UNIXコマンドで処理するにはちょっと不親切だと思う。
ので、このあたりを試すと幸せになれる人は多いんじゃないでしょうか。(という意味もこめていちおう英語でスライドを書いた。)
GrowthForecastの値をNagiosから監視できるようにすると #fluentd がより活用できる
Fluentd からGrowthForecastへデータを投入するためのプラグイン fluent-plugin-growthforecast を作って使っている。
fluent-plugin-flowcounter および fluent-plugin-growthforecast released! #fluentd - tagomorisのメモ置き場
で、このGrowthForecastには最近、データをJSONで出力する機能がついた。
GrowthForecastに1分更新グラフ作成とサマリーなどのJSONフォーマットでの出力機能追加 - blog.nomadscafe.jp
つまりFluentdからストリーム状に入力したデータを可視化しつつ、更に時系列データとしての(変則の)ストレージとしても使えるようになった、ということだ。つまりつまり、最近の3数値平均をとってそれを相手になんかチェックとかすることができるようになったということで、こいつをNagiosから監視してやればいろいろと捗るに違いない!(上のエントリにも書いてあるけど)
ということで、そのようなスクリプトを書いた。
このスクリプトファイルをNagiosのプラグインディレクトリに置き実行権限をつけ、あとは適当な場所に必要なperl moduleをインストールしてそのディレクトリを use lib 行に書き、ついでにGrowthForecastのURLを $url にセットする。
# cpanmは適当に入手して適当な場所に置き chmod +x してPATHを通して(もしくは絶対パスで指定して)起動する cpanm -l/path/to/modules/dir/extlib -n JSON::XS Furl Try::Tiny
んで以下のように使えるはず。
# 上がりすぎたらアラート出したい数値の指定、80でWARNING 95でCRITICALの場合 $ ./check_gf_value.pl -i /service/section/name -w 80 -c 95 # 上がったらアラート、を明示的に指定 $ ./check_gf_value.pl -i /service/section/name -U -w 80 -c 95 # 下がったらアラートの場合 $ ./check_gf_value.pl -i /service/section/name -D -w 30 -c 10
たいへん簡単なのでみんなも使って、Fluentdでリアルタイムで数値生成、GrowthForecastで可視化、Nagiosで監視というパラダイスを満喫するといいと思います。