ちなみに

火曜日の空は僕を押しつぶした。

いくつかのディストリビューションで mackerel-agent を試せるのを作った

github.com

いまさら Docker の練習をしていて、DebianUbuntuCentOS で 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:<ディストリビューショ名> というロールをつけているのでホストを退役させるのも簡単。--confmkr 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 に以下のように書いていてシェル経由で起動してしまっていて、DebianUbuntu で多分 SIGTERM が伝わってなくて agent が正常に終了していない。結果ステータスが poweroff に変わらなくなっている。別の問題かもしれない。

ENTRYPOINT /usr/local/bin/mackerel-agent -apikey=$APIKEY

理想は以下のように書きたいのだけれど、環境変数がうまく伝えられない。なんか初歩的なミスな気もするけど解決出来なかった。

ENTRYPOINT ["/usr/local/bin/mackerel-agent"]
CMD ["-apikey=$APIKEY"]