site-statusというwebサイトのstatusを取るツールを作ってみた

最近はCoffeeScriptも楽しいなぁと思うようになって、思いつきで書いてみました。ちなみに、coffeeで書いてgrunt-contrib-watchでjsにしていて、出来上がったものをnpmにpublishしています。あとテストがありません!

詳しくはREADMEに書いたのでそちらを見て下さい。

何ができるの?

超簡単な使い方だと、エンドポイントをとあるJSONの形式でSTDINに流し込めば、非同期にダダっとリクエスト投げてくれて、レスポンスタイムとレスポンスコードをSTDOUTに出力してくれます。これをまた別のツールで拾って何か他のところにつなげてあげれば、簡単にいろんなサイト(もしくはHTTPなインタフェースのサーバとか)の稼働状況をロギングできます。

ついでに、GETできたHTMLに対してCSSセレクタで要素を取ってくるという機能も入っているので、そのHTMLの中にある何か値とかも一緒にSTDOUTに吐き出すことができます。HadoopみたいなビルトインされたHTTPのステータスページの中からこの値のトレンドを見たい!みたいな要件を想像してます。exampleにはstatus.github.comの例を入れておきました。

リクエストにはタイムアウトも設定してるので、あるサイト・サーバが刺さって全部のサイト・サーバの情報が取れませんでした、みたいなことは起こらないと思います。

今後

JSONで各サーバのステータス(cpu使用率とかいろんな情報)を返す、みたいなのは割とどこでもやられてるのかなと思うので、そのJSONをJSONPathで同じようにパースして吐き出せるようにしようかなと思ってます。もしくはJSONはそのまま吐き出すとかも。

あとSTDOUTに出したJSONをどっかに飛ばす何かとかも。GrowthForecast的なものに投げたりとか、fluent-catに食わせたらfluentdに投げるとかもできるような気がしますね。

まとめ

node/coffeeも楽しい!