RDS移行の影響をひと目で確認できるダッシュボードをMackerelで作成した

こんにちは、ブログチームでエンジニアをしている id:Furutsuki です。ブログチームでは長らくEC2上でMySQLを運用していましたが、種々の理由により2021年末から2022年中盤にかけて、このデータベースをAmazon RDSに移行しました。

移行にあたって、新旧のデータベースやサービスの様子を一覧できる“RDS化ダッシュボード”をMackerelで作成しました。チームでは日常的な監視にダッシュボードを活用していますが、個人的にダッシュボードを一から作ったのは初めてだったので、このダッシュボードの配置や狙いについて書いてみようと思います。

RDS化ダッシュボードの全体像

まずはダッシュボード全体をご覧ください。 こうして画像で見ると、なかなか大きなダッシュボードになっていますね。とはいえMackerel上で確認するときはスクロールできますし、何度も見ていると必要なグラフがどこにあるかを何となく覚えてしまうので、この大きさでも困ることはありませんでした。

RDS化ダッシュボードの全体観
雰囲気をお楽しみください

なお、メトリックの具体的な値を出すのは若干気まずかったのでぼかしを入れています。また、退役済みのホストに関するグラフはそれっぽい感じを再現してみました。当時の状態を正確に映したグラフにはなっていないことをご承知ください。

さて、このダッシュボードは上下にだいたい2分割でき、上部が「サービスの状態を確認するコーナー」で、下部が「DBの様子を比較するコーナー」になっています。それぞれのコーナーについて掘り下げてみようと思います。

サービスの状態を確認するコーナーの詳細

まず目に入るダッシュボードの一等地に配置されているのが、この「サービスの状態を確認するコーナー」です。セクションの説明書きにもあるように「ブログが利用可能な状態になっているか」をひと目で確認できます。

データベースの切り替えにあたって一番気にしたことが、サービスへの影響でした。DBを切り替えたことで障害が発生したり、そうでなくてもレイテンシが悪化(もしかすると改善)するなどの変化が想定されたので、サービスの状態を見るコーナーを最初に持っていきています。

上のグラフほどユーザに近く、下のグラフほどバックエンドに近いです

最上段ではユーザに最も影響のあるレスポンスのステータスやレイテンシが、続いてバックエンドの忙しさが見れるようにしてあり、異常があれば真っ先に気付ける、あるいは異常の兆候がつかめるメトリックに気を配っています。

DBの様子の変遷を確認するコーナーの詳細

続いてが本丸の「DBの様子を見るコーナー」です。RDSインテグレーションやmysqlプラグインのメトリックのうち、見たいというユースケースがありそうなものを片っ端から置いています。

左のカラムが移行前の古いEC2上のMySQLで、右のカラムが移行後のRDSです。 新旧DBのメトリックを比較して、切り替え前後で影響が出ていないか、以前と比べてどの程度の変化があったかを見れるようにしています。

そして中央が、両方のグラフを式グラフで表示したものです。この配置に大した狙いはありませんが、何となく左から右へと新しいもののメトリックが表示されるのが楽しかったのでそうしたような気がします。

行ごとに同じメトリックをEC2・両方・RDSと並べています

新旧の値をひと目で比較できるのは便利で、切り替え前後で変化しているメトリックがあればすぐに知ることができます。今回は移行前後でEC2とRDSのインスタンスのサイズをだいたい揃えたので、CPUやメモリの使われ方もだいたい同じになりました。逆に、違う場合はMySQLの設定がどこかずれているはずなので、グラフを見ると気付くことができます。

2つの値を式グラフで同時に描画することで、単一のスケールでメトリックを見ることができ、どのくらい差があるのかも一目で分かります。

当然ながらいくつかの値は、Linuxプラグイン由来かAWSインテグレーション由来かなど、さまざまな理由で計測の基準が違うので、手作業でグラフの定義をスケールさせたりもしています。また、ちょっと複雑なグラフになってきたら、エイリアスもつけると便利でしょう。

なお、RDSを監視するときによく使われるメトリックについては、以下の記事も参考になりそうです。

mackerel.io

皆さんのダッシュボードを教えてください!

今回は、はてなブログをRDS化するにあたって作成した“RDS化ダッシュボード”について簡単にご紹介しました。切り替え前の様子を確認し、切り替え中にはサービスへの影響を監視し、切り替え前後でDBの負荷を比較するなど、幅広く使えるダッシュボードで便利に使っていました。

見返すと、グラフの名前に「(ms)」といった単位を付ける細かい運用テクも実践していたようです。これについては、今ではグラフ定義で単位を選択できるようになっていますね。

皆さんも、日々進化するMackerelのダッシュボードを利用して、何かを便利に監視している事例がありましたら、 ぜひご共有(あるいは「突撃!」させて)ください。

はてなでは、Mackerelでダッシュボードを構築して業務に活かしたいエンジニアを募集しています。

hatena.co.jp