はじめに
- せっかくなので
sensu
プラグインの勉強のつもりで Docker Remote API を使ってプラグインを作ってみた
参考
こんなの
スクリプト
目指したこと
- Docker Remote API を使う
- 起動中のコンテナの数をチェック
- しきい値を超えたり、下回ったりしたら
Warning
やCritical
を上げる
動いてるところ
以下のように設定を書いて...
{ "checks": { "docker_running_containes_check": { "handlers": ["default"], "command": "/etc/sensu/plugins/check-docker-containers.rb -w 3 -c 3", "interval": 60, "subscribers": [ "test" ] } } }
暫くすると...
こんな感じ。
上記の例だとローカルホスト上にコンテナが 4 つ起動していたら CRITICAL となる(なっている)。
さいごに
調子こいて
sensu プラグイン
- 標準出力に
critical
/warning
/ok
をそれぞれ出力すれば良さそう - あとは
sensu
がよしなにやってくれる
rubocop
- コードをチェックしてくれる
- 怒られてばかりだが書き方について勉強になる
なんかこんなのも作れそう
top
curl localhost:4243/containers/${container_ID}/top
みたいな感じで投げると以下のようにレスポンスが返ってくる。
{"Processes":[["root","1788","1225","0","06:47","pts/1","00:00:00","/bin/bash"]],"Titles":["UID","PID","PPID","C","STIME","TTY","TIME","CMD"]}
ちょっとドキュメントと出力が異なるのが気にはなるがコンテナ内のリソース見るのに使えそうな気がする。