いまさら Docker の練習をしていて、Debian、Ubuntu、CentOS で mackerel-agent の最新版を動かせるイメージを作った。これで、とりあえず試してみたいけどサーバーとかもってないし、Mac に入れるのはあんましやりたくないみたいな人も簡単にどんなメトリックが見れるのかとかを試せる。
シェルスクリプトを用意しているので、以下のようにやると3つのコンテナが起動して mackerel-agent が動き出す。docker-compose を使っているのでインストールしておく必要がある。
./setup.sh <YOUR_APIKEY>
動いているのが確認できる。
$ docker-compose ps Name Command State Ports ----------------------------------------------------------------------------- dockermackerelagent_centos_1 /bin/sh -c /usr/local/bin/ ... Up dockermackerelagent_debian_1 /bin/sh -c /usr/local/bin/ ... Up dockermackerelagent_ubuntu_1 /bin/sh -c /usr/local/bin/ ... Up
止めるときは docker-compose を使って止める。
docker-compose stop
docker:<ディストリビューショ名>
というロールをつけているのでホストを退役させるのも簡単。--conf
は mkr 0.3.0 の新機能なので注意。
mkr --conf=/usr/local/etc/mackerel-agent.conf hosts -s docker --st poweroff | jq '.[].id' | xargs mkr retire
問題点
mackerel-agent のバージョン 0.17.0 から以下のような設定が出来るようになっている。これは agent の起動時と終了時にホストのステータスを変更出来る。これは便利だけれど正常に終了しない場合にスルーされる。
この機能を使いたいのだけれど、現状 CentOS でしかうまくいっていない。Dockerfile に以下のように書いていてシェル経由で起動してしまっていて、Debian と Ubuntu で多分 SIGTERM
が伝わってなくて agent が正常に終了していない。結果ステータスが poweroff
に変わらなくなっている。別の問題かもしれない。
ENTRYPOINT /usr/local/bin/mackerel-agent -apikey=$APIKEY
理想は以下のように書きたいのだけれど、環境変数がうまく伝えられない。なんか初歩的なミスな気もするけど解決出来なかった。
ENTRYPOINT ["/usr/local/bin/mackerel-agent"] CMD ["-apikey=$APIKEY"]