諸々のインストールを済ませ、テンプレートを作成した後に起こったお話。
テンプレートをベースに仮想マシンを2台立ち上げました。
それぞれ、追加の設定などを終わらせて、agentを起動させたのです。
$ chkconfig mackerel-agent on
$ service mackerel-agent start
$ Starting mackerel-agent: [ OK ]
うん、正常に起動しました!
mackerelの管理画面からHostsを確認すると、確かにリストされています。
同様の手順で2台目以降も設定し、mackerel-agentを起動します。
が、しかし working 状態のホストが1台しか見当たりません。
これはどうしたことだと調査を始めて、まず設定ファイルを見なおしてみます。
# root = "/var/lib/mackerel-agent"
なにかありました。
mackerelでは基本的にapikey以外接続情報を書くことがないので、ホストの判定をここでやってるんだろうなとアタリをつけて ls
してみるとなにやら怪しいファイルが。
$ ls /var/lib/mackerel-agent
id
$ cat /var/lib/mackerel-agent/id
(英数字の文字列)
そこで該当ファイルをググってみたところ、 mackerel-agent仕様 で見つけた以下の記述です。
エージェントはどうやってホストを判別していますか?
/var/lib/mackerel-agent/id にホストIDが保存されており、このIDでどのホストか判別します。ホスト名は判別に利用されません。(設定ファイルは起動オプションでrootを変更している場合、そのroot以下にidファイルが作成されます。)
エージェントが起動しません
/var/lib/mackerel-agent/id に正しくないIDが保存されている場合、正しく起動しません。/var/lib/mackerel-agent/id を削除してから起動してみてください。(新規ホストとして認識されます)(設定ファイルは起動オプションでrootを変更している場合、そのroot以下にidファイルが作成されます。)
試しに削除してみました。
$ service mackerel-agent stop
mackerel-agent を停止中: [ OK ]
$ rm /var/lib/mackerel-agent/id
$ service mackerel-agent start
$ Starting mackerel-agent: [ OK ]
$ ls /var/lib/mackerel-agent
id
# 自動的に新規作成されている!!
この状態でmackerelの監視を確認すると、2台目のホストが登録されており、正常にデータ取得できるようになっていました。
テンプレートを作成する際はmackerel-agentを含めないか、このあたりの情報を予め削除してから作成するのがベストですね。
めでたしめでたし。