Mackerelで監視対象を誤って退役させた時の挙動を見てみる

2018.07.15

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんばんわ、吉江です。
Mackerelを使用してEC2インスタンスを監視している時、退役ホスト周りで不明な挙動が合ったので
確認してみました。

どういうこと?

例えば、システム運用者が監視対象の棚卸しでMackerelで監視している対象インスタンスを誤って
退役させてしまったとします。
この時に設定によってどのような動きをするのか気になりました。

シナリオとしては以下のイメージです。

  • パターン①:AWSインテグレーションでEC2インスタンスを監視している
  • パターン②:mackerel-agentでEC2インスタンスを監視している
  • パターン③:AWSインテグレーション + mackerel-agentで監視している(AutoRetirement無効)
  • パターン④:AWSインテグレーション + mackerel-agentで監視している(AutoRetirement有効)
パターン AWSインテグレーション mackerel-agent AutoRetirement
パターン① X X
パターン② X X
パターン③ X
パターン④

確認結果

各パターンの確認結果は以下のようになりました。

パターン①:AWSインテグレーション監視

AWSインテグレーションで監視を行っている場合、これはAWSインテグレーション機能が5分間隔で対象インスタンスを確認しております。
結果:AWSインテグレーションの動作によって、次回監視対象のチェックタイミングでホスト再登録されます。

パターン②:mackerel-agent監視

mackerel-agentのみで監視している場合の挙動を見てみます。

パターン②-1:mackerel-agent再起動実施

結果:ホストの再登録が実施されませんでした

mackerel-agentのサービス再起動を実施しましたが、同じくホストの再登録が実施されません。 /var/log/mackerel-agent.logを見てみると、以下のような出力ログが見えております。

ERROR <command> Error while updating host specs: API error. status: 404, msg: api request failed

パターン②-2:管理ID削除、mackerel-agent再起動実施

管理IDが要因と考えられたので、管理IDを保存している/var/lib/mackerel-agent/idを削除してからmackerel-agentを再起動することでホストの再登録が実施されました。
結果:ホストの再登録が実施できました

パターン③:AWSインテグレーション + mackerel-agent監視(AutoRetirement無効)

結果:リタイアメント後、AWSインテグレーションとしてホスト再登録が実施されましたが、
mackerel-agentでの監視は再開されませんでした。

mackerel-agentの監視再開をするために別に3パターンを試してみました。

パターン③-1:mackerel-agent再起動実施

結果:mackerel-agentの再起動を実施するも、監視は再開されませんでした。

パターン③-2:管理ID上書き、mackerel-agent再起動実施

AWSインテグレーションでホスト登録が出来たので管理IDがmackerel側で振られてます。
この新たに振り直された管理IDをホスト側の管理IDファイル(/var/lib/mackerel-agent/id)に上書きしてみます。 結果:管理IDを上書きすることでmackrel-agentを再起動することでホスト再登録されました

パターン③-3:管理ID削除、mackerel-agent再起動実施

今度はホスト側の管理IDファイル(/var/lib/mackerel-agent/id)を削除して、mackerel-agentを再起動してみます。
結果:mackerel-agent再起動を実施することでホスト再登録が実施されました。

パターン④:AWSインテグレーション + mackerel-agentで監視している(AutoRetirement有効)場合

パターン③と同様に、AWSインテグレーションによってホストの再登録が実施されました。

パターン④-1:mackerel-agent再起動実施
結果:mackerel-agentの再起動を実施するも、監視は再開されませんでした。

パターン④-2:管理ID上書き、mackerel-agent再起動実施
結果:管理IDを上書きすることでmackrel-agentを再起動することでホスト再登録されました

パターン④-3:管理ID削除、mackerel-agent再起動実施 今度はホスト側の管理IDファイル(/var/lib/mackerel-agent/id)を削除して、mackerel-agentを再起動してみます。
結果:mackerel-agent再起動を実施することでホスト再登録が実施されました。

最後に

今回の検証は運用フェーズに入った時のオペレーションで気になった点を調べてみました。
誤って退役させるということは極力避けたいところですが、オペミスの可能性としてはあり得る事だと思いますので
注意してホスト管理は行うように心がけたいと思います。