どうも、cloudpackのかっぱ(@inokara)です。
はじめに
sensu が検知した ALERT や RESOLVE の結果を Excel シートに纏められれば嬉しいかもしれんなあと思って作ってみました。Excel よりも Google SpreadSheet の方が作りやすそうだったのでとりあえずは Google SpreadSheet に手を付けました。
ちなみに以前には fluentd と Treasuredata を利用して Google SpreadSheet へ纏めるということをやってみましたが、今回は sensu から直接書き込むことになります。
参考
こんなの
ギットハヴ
- これ
- まともなエラーハンドリングが行われていません…(すいません)
- まだ Merge されてません(このままだと Merge されんかも…)
使い方
google-drive-ruby をインストールする
環境は CentOS 6.5 で既に Sensu 関連パッケージは導入済みです。
sudo yum install libxml2 patch sudo /opt/sensu/embedded/bin/gem install google_drive --no-ri --no-rdoc -V
google-drive-ruby のインストール途中には nokogiri のビルドがありますので事前に libxml2 や patch 等のツールもインストールしておきましょう。
Google ShpreadSheet の設定
- アプリケーション用のパスワードを作成しておく
- Worksheet を作成しておく
- 作成した Worksheet の ID っぽい部分(下図参照)
ハンドラの定義
適当な sensu-check でハンドラの定義を入れておきます。もちろん keepalive でも構いません。
"handlers": { "default": { "type": "set", "handlers": [ "stdout", "gsp" ] }, "stdout": { "type": "pipe", "command": "cat" }, "gas": { "type": "pipe", "command": "/etc/sensu/plugins/gas.rb" } },
プラグイン自体の設定
プラグイン自体は /etc/sensu/plugins/ 以下に置きましょう。プラグインの設定は /etc/sensu/conf.d/ 以下あたりに以下のような設定で置きます。
{ gsp: { sheet: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", username: "your@gmail.com", apppassword: "zzzzzzzzzzzzzzzz" } }
ポイントは…
- sheet には上図の Worksheet の ID を定義
- apppassword はアプリケーション用のパスワードを定義
こんな感じ
適当にクライアントの sensu-client を停止して暫く時間を置くと…以下のように Google SpreadSheet に記録されました。
クライアント毎にソートしたりすれば立派(?)なお客様への報告資料が出来てしまいます!(笑)
次の予定
- クライアント毎にシートを分けるオプションを付ける
- イベント毎にシートを分けるオプションを付ける
- 勝手にグラフとか作ってくれたりすると嬉しい
〆
- Ruby から手軽に Google SpreadSheet を扱うことが出来たのが嬉しす
- 昔 Nagios の監視結果を csv で出力して Excel で集計していた頃が懐かしい…