Mackerel ブログ #mackerelio

Mackerelの公式ブログです

.ioドメイン不調に伴うMackerelの死活監視アラートの誤報の発生とそれに対する対応について

Mackerelサブプロデューサーの id:Songmu です。表題の件、ユーザーの皆様には度々ご迷惑をおかけしており大変申し訳ありません。

本件の詳細に関する説明と、今後の対応に関してお知らせいたします。

死活監視のアラート誤報に関して

Mackerelでは、mackerel-agentから一定時間メトリック投稿が途絶えた事をもって、サーバーがダウンしたと判断し、死活監視アラートを発報する仕組みになっています。

現在、 mackerel.io ドメインの名前解決が不安定になっております。それに伴い、 mackerel.io ドメインの名前解決が一定期間失敗し、Mackerelへのアクセスが一時的にできない環境において、 mackerel-agent がMackerelへのメトリック投稿をおこなうことができず、Mackerelシステム側でサーバーがダウンしたと判断してしまい、死活監視のアラートを誤って発報してしまう状況が発生しています。

mackerel.io の名前解決が不安定な事象について

現在、ioドメインの権威DNSサーバーの一部が、存在するはずのドメインに対して、誤って NXDOMAIN (ドメインが存在しない) を一時的に返してしまう事象を確認しています。それにより、名前解決に失敗してしまう状況です。

また、その場合、ネガティブキャッシュのTTLが900秒に設定されているため、最長で15分間、名前解決に失敗してしまいます。

これらの事象の発生は一時的なものですが、複数回発生していることを確認しており、今後も発生する可能性があります。したがって、以下の暫定対応を実施しています。

暫定対応について

誤報の発報を抑えるために、現在以下の対応を実施しています。

  • mackerel.io ドメインのTTLを長くする
  • mackerel.io の名前解決が不安定な場合に死活監視コンポーネントを一時停止する
  • 死活監視の判定間隔をネガティブキャッシュのTTLより長い間隔に設定する

これらの対策により、誤報は逓減できていますが、死活監視の信頼性を落としている状況です。特に本当にサーバーがダウンした場合に、死活監視の発報まで15分以上の時間がかかってしまう状況になっています。よって、根本的な対策は別途必要だと認識しています。

根本的な対策について

今後1ヶ月くらいのタイミングで、信頼性の高いTLDのドメインを新たに取得し、mackerel-agentはそちらのドメインを利用するように変更する予定です。後方互換のため、現在の mackerel.io も並行稼動はいたします。新しいドメインを利用する場合、 mackerel-agent のバージョンアップを実施して頂く必要があります。

また、これはまだ検討段階で実施は未定ですが、mackerel-agentがMackerelへの投稿に失敗した場合、別経路(別ドメイン等)で投稿を試みるような機構を入れることも検討しています。

本件、ご迷惑、ご不便をおかけして申し訳ありません。今後共安定稼働につとめてまいりますので、Mackerelをよろしくお願いいたします。