mackerelでnasneの監視をはじめた
mackerel-pluginを作りました。
github.com
動機
nasneは録画した動画が1000件に達すると、録画できない仕様がある。
撮りためたアニメを消化しようかな?と思ったら、
1000件以降の録画予約が全滅しててマジF◯CKという出来事があって、監視を決めた。
監視
監視と言えばmackerel。
mackerelのカスタムメトリックに録画件数と、録画失敗件数を投稿して
しきい値こえたらLINEに通知したい。
録画件数と録画失敗件数を得る
たぶん公式ではないと思うけど、nasneがAPIをサービスしていることはわかった。
参考になった既存のソリューション
github.com
なにがありがたいって、APIがリストアップされてる事。
こんなん調べるの、絶対めんどくさい。インターネットがあってよかった。
残念なことにパラメータは書いてなかったから、torneのアプリをパケットキャプチャして突き止めた。
どこからAPIを呼ぶか
nasneにmackerel-agentぶっこめたら話は早かったけど、手間そうだったのですぐ諦めた。
バラしてHDDを取り出す、とかも嫌だったし。
なのでこれを期にラズベリーパイを買った。
本体やらSDカードやらで8000円くらい飛ぶ ☠
プラグインの実装
mackerel.io
ドキュメントが分かりやすいし、公式のプラグインを参考にガリガリ作っていけた。
副産物としてgoからAPIを呼び出すClientも実装した。
curlとjqで十分なのでClientは不要説ある
とても勉強になった。
録画件数はnasneのAPIで取得した値を投げるだけ。
録画失敗はAPIで取った失敗件数の差分を投げれば、失敗の発生が検知できる。
ついでにHDDの容量も監視してみたけど、HDDは複数あるので、グラフ定義も動的に。
usedを積み上げ、totalを折れ線で定義したけどなぜか反映されなくて、WEBの設定で変更した。
GOOS=linux GOARCH=arm go build
あとはバイナリを転送してmackerelのconfigをペロッと更新。
最後に監視ルールの設定
900件を超えたら警告を出す感じにした。