Eukleides project

from http://d.hatena.ne.jp/u5_h/

オブジェクトストレージの容量監視をするMackerelプラグインを作った話

qiita.com

10月からさくらインターネットという会社でテクノロジー室でSREで働いています。入社して3ヶ月、ガバメントクラウドの開発が急ピッチで進んでおり、自分もバリバリ開発をしているのですが、一方で「SREっぽい事している?」みたいに思うこともありました。

 

そんな中、先日さくらのオブジェクトストレージに「東京リージョン(東京第1サイト)」が誕生しました!ますますサービスでの利用が加速するだろうと思います。

しかし、オブジェクトストレージのバケット容量が残りどれくらいあるのかを知るためには、コントロールパネルか、APIを経由して独自に取得しなければならず、監視に組み込みにくいと感じていました。

 

一方で、さくらのクラウドは、モニタリングスイートをはじめとし、同じく「国産」のオブザーバビリティスイート mackerel を推しています。

モニタリングスイートのユースケースは、他の方のアドベントカレンダーでもいくつか紹介されていますので、こちらをご覧ください。

この夏はmackerelとの合同イベントもあり、当時入社前の自分もこのイベントに視聴参加して「mackerel使うのかー」と漠然と思っていました。

mackerelio.connpass.com

 

そんなmackerelとの関係性と、ちょっとSREっぽい仕事を今年の最後にやりたいなと思い、mackerelのcheck pluginでオブジェクトストレージを監視するプラグイン check-sakura-object-storage-usage を作成しました!

 

github.com

 

check-diskという公式プラグインと、長野(kazeburo)さんの数あるプラグインを参考にmackerel pluginの仕組みを理解しつつ、藤原(fujiwara)さんからもアドバイスもいただき、手厚すぎる開発で隙間時間で作り上げました。裏側はオブジェクトストレージのAPIを使用しております。

 

使用方法は、シンプルで以下のようにさくらのAPIと疎通のあるmackerel-agentが導入されているホストで、監視したいsiteとbucketを指定します。siteは今回誕生した東京リージョン(tky01)にも対応しています。次に、bucketの残量が何パーセントを切ったらWarningとCriticalを通知するかの閾値を設定します。最後に、APIキーなどを環境変数に設定します。

[plugin.checks.objectstorage-free]
command = ["check-sakura-object-storage-usage", "--warning", "10%", "--critical", "5%", "--site", "tky01", "--bucket", "foo"]
env = { SAKURA_ACCESS_TOKEN = "01234567-89ab-cdef-0123-456789abcdef", SAKURA_ACCESS_TOKEN_SECRET = "XXXXXXXXXXXXXX" } check_interval = 60 timeout_seconds = 60 max_check_attempts = 2

運用のヒントとして、mackerelのデフォルトの監視間隔は1分に対して、容量データの更新は、もっと間隔が長く無駄にフェッチしてしまうので、check_intervalは30から60分の間を推奨しています。また安定稼働のために、timeoutを長めに取り、リトライも入れると良いでしょう。

 

ダッシュボードから見ると、仕掛けたホストのメトリックページに、画像右側のように表示されます。warnやcriticalを下回った場合、mackerelでの連携先の通知プラットフォーム(slackなど)にも通知されます。

 

さくらのクラウドでは、モニタリングスイートをはじめとするサービス監視に対するノウハウを皆様にできうる限りお届けするとともに、安心して使っていただけるクラウドサービスを目指していきます。