Edited at

【AWS+Rails5+mackerel】AMIを使って複製したサーバがmackerelのダッシュボードに表示されない時の対処方法

More than 1 year has passed since last update.


やりたいこと


  • 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を複製する際にはご注意ください。