やりたいこと
- ALBに紐づけているWEB-APPサーバ1号機のAMIを取得して、2号機を立てたい
- 1号機はmackerelエージェントをインストール済み
- 2号機にもmackerelエージェントをインストールしたい
環境
- AWS
- Ubuntu 16.04
- Rails5.1
- Nginx
- Unicorn
発生した事象
AMIから複製したサーバ2号機に、mackerelエージェントをインストールしてもダッシュボードに表示されない。
公式ページの手順に従い、以下のコマンドを実施。
wget -q -O - https://mackerel.io/file/script/setup-all-apt-v2.sh | MACKEREL_APIKEY='YOUR_APIKEY' sh
詳細
サーバ2号機のmackerelエージェントの起動ログを確認。
$ sudo journalctl -u mackerel-agent.service
以下のエラーが発生しており、mackerelエージェントが起動していない。
Dec 26 15:02:29 ip-10-100-4-182 systemd[1]: Starting mackerel.io agent...
Dec 26 15:02:29 ip-10-100-4-182 systemd[1]: Started mackerel.io agent.
Dec 26 15:02:29 ip-10-100-4-182 mackerel-agent[31438]: 2017/12/26 15:02:29 INFO <main> Starting mackerel-agent version:0.48.2, rev:549962c, apibase:https://api.mackerelio.com
Dec 26 15:02:29 ip-10-100-4-182 mackerel-agent[31438]: command.Prepare failed: failed to prepare host: custom identifiers mismatch: this host = "hogehoge.ec2.amazonaws.com", the host whose id is "hogehoge" on mackerel.io =
Dec 26 15:02:29 ip-10-100-4-182 mackerel-agent[31438]: exit status 1
Dec 26 15:02:29 ip-10-100-4-182 systemd[1]: mackerel-agent.service: Main process exited, code=exited, status=1/FAILURE
Dec 26 15:02:29 ip-10-100-4-182 systemd[1]: mackerel-agent.service: Unit entered failed state.
Dec 26 15:02:29 ip-10-100-4-182 systemd[1]: mackerel-agent.service: Failed with result 'exit-code'.
原因
AMIを使用して複製したため。
公式ページFAQにも記載があった。
FAQ・エージェントが起動しない
Docker ImageやAMIなどによりOSイメージ化した際に/var/lib/mackerel-agent/idもコピーしている場合、このファイルを削除する必要があります。
mackerel-agentは初回起動時にサーバーが発行したIDを/var/lib/mackerel-agent/idに保存します。以後はこのファイルに記載されたIDによりホストの識別を行います。
そのため、/var/lib/mackerel-agent/idがコピーされると実際は複数のホストがMackerel上では同一のホストと認識され、メトリックの投稿や監視が正しく動作しなくなります。
対策
- サーバ2号機の
/var/lib/mackerel-agent/id
を削除する。
$ sudo rm /var/lib/mackerel-agent/id
- 設定確認
$ sudo mackerel-agent configtest
sudo: unable to resolve host ip-10-xxx-xxx-xxx
/etc/mackerel-agent/mackerel-agent.conf Syntax OK
- mackerelエージェント再起動
$ sudo service mackerel-agent restart
確認
mackerelダッシュボードに表示されれば成功です。
AMIでEC2を複製する際にはご注意ください。