カスタムダッシュボードの活用方法とMackerel開発チームでの実践例 - Mackerel Meetup復活記念連載 #3

こんにちは。Mackerel開発チームSREのid:taxinttです。

Mackerel Meetup #14 Tokyo開催までの期間で「Mackerel Meetup復活記念連載」と題して、Mackerelの新機能紹介などのブログ連載を実施しています。

mackerelio.connpass.com

今回は、カスタムダッシュボードの活用方法とMackerel開発チームでの実践例についてお話しします。


カスタムダッシュボードとは、グラフや数値などの各種ウィジェットをユーザーが自由に配置できるダッシュボードです。標準でご利用いただけるメインダッシュボードとは別でダッシュボードを複数作成できるため、システムごとや運用するチーム単位でダッシュボードを作成できます。

mackerel.io

カスタマイズの自由度が高い一方で、ウィジェットの配置場所などダッシュボードのデザインについて頭を悩ませた方も多いのではないでしょうか?

そこで今回は、カスタムダッシュボードを「より良く」活用するための2つの観点をご紹介します。

カスタムダッシュボードを「より良く」活用するための観点

1.具体的なアクションにつながるダッシュボードを作る

1つ目は、システムやサービスの状態を明確に表現して、具体的なアクションにつながるダッシュボードを作るという観点です。

ダッシュボードの利用目的に立ち返ると、監視対象のサービスがあり、それらが正常に稼働しているかや現在の状態を把握するためにダッシュボードを作成する、というのが一般的でしょう。例えば、ダッシュボードを定期的にチェックしてリクエストのエラー率やレイテンシーが悪化している傾向が見られる場合には、原因調査をしたり、事象の解決を図ったりする必要があります。

一方で、システムの状態を把握するためのメトリックがどのように推移したら原因調査などの対応が必要か判断できないと、ダッシュボードを確認する必要性が薄れてしまいます。

Mackerel開発チームでは、サービスの状態を明確に表現して具体的なアクションを取る条件を明確にするために、テキストウィジェットや補助線機能を活用しています。

バッチジョブ用のダッシュボードを例に挙げると、バッチの種別ごとにテキストウィジェットとグラフウィジェットがまとめて配置されています。

Mackerelのダッシュボード。テキストウィジェットでジョブに関する説明が記載されており、その下に4つのグラフウィジェットが横並びで配置されています。
Mackerel開発チームで利用しているカスタムダッシュボードの画像

テキストウィジェットでは、バッチの種別ごとの正常・異常の判断条件を説明しています。

テキストウィジェット。〇〇するジョブ。〇〇というメトリックの傾向が変化していなければ問題ないです。といったジョブの正常・異常の判断条件が記載されています。
テキストウィジェットに正常・異常の判定条件を記載する図

また、別のダッシュボードではグラフウィジェットの中に固定値で補助線を引く機能を利用して、レイテンシー監視の閾値を補助線として引くことで、閾値に対するメトリックの推移を視覚的に確認できるようにしています。

mackerel.io

「Latency」というタイトルのグラフウィジェット。500 の値で補助線が引かれていて、グラフの線は 100 〜300 の間を推移しており補助線を下回っている。
グラフウィジェットの中に固定値で補助線を引く図

さらに、ユーザーに提供するサービスの水準を表現するSLIを定義し、SLOとしてSLIの目標値を定義することで、原因調査や機能リリースの一時停止などのアクションに対する基準を明確にできます。

SLI/SLOに関する詳細な説明については割愛しますが、SLI/SLOについては下記の記事でもまとめられています。

mackerel.io

2.ダッシュボードを利用する目的に応じた粒度で情報を整理する

2つ目は、ダッシュボードを利用する目的に応じた粒度で情報を整理するという観点です。

利用目的やチーム単位でダッシュボードを作成する際には、ダッシュボードに掲載する情報の内容や粒度を考慮する必要があります。

例えば、システムの状態を定期的に確認するためのダッシュボードと調査用のダッシュボードでは、後者のほうがより詳細な情報を載せる必要があるでしょう。特定のメトリックに対するウィジェットの使い分けを考えても、ユーザーが現時点のメトリックの値のみを見たいのか、メトリックの推移を見たいのかによって、数値ウィジェットとグラフウィジェットのどちらを選択すべきかが変わります。

Mackerel開発チームでは複数のダッシュボードを利用していますが、中でも前述のSLI/SLOの確認用のダッシュボードと、開発チームのエンジニアとSREがシステムの状態を確認するPWG(Performance Working Group)用のダッシュボードをよく利用しています。PWGに関しては、少し古い記事ですが下記の記事でまとめられています。

mackerel.io

SLI/SLOの確認用のダッシュボードでは、SLOに関する説明を記載したテキストウィジェットとSLOの計測値を表示した数値ウィジェットがシステムコンポーネントごとに並んでいます。

「SLO」というタイトルのダッシュボード。テキストウィジェットでSLOに関する説明が記載されており、その下に複数の数値ウィジェットが横並びで配置されています。
SLI/SLOの確認用のカスタムダッシュボードの図

このダッシュボードでは、2週間のローリングウィンドウで計測されたレイテンシーがSLOを下回っていないかどうかを数値ウィジェットで確認するようにしています。

「Latency 90percentile」というタイトルの数値ウィジェット。2週間のローリングウィンドウで計測されたレイテンシーの数値がウィジェットの中央に表示されています。
数値ウィジェットを利用してSLOを表示している図

数値ウィジェットではフォーマットルールを設定することができ、SLOのような設定した基準値に違反すると、数値が赤く表示されて違反していることを視覚的に伝えてくれます。

「Latency 90percentile」というタイトルの数値ウィジェット。フォーマットルールに違反していることを示すために数値が赤く表示されています。
設定したフォーマットルールに違反している数値ウィジェットの図

これに対し、PWG用のダッシュボードではSLO用のメトリックも含めた様々なメトリックの推移が確認できるようにグラフウィジェットをシステムコンポーネントごとに配置しています。

「PWG」と書かれたカスタムダッシュボード。システムコンポーネントの名前が書かれたテキストウィジェットの下に複数のグラフウィジェットが配置されています。
PWG用のカスタムダッシュボードの図

PWG用のダッシュボードではリクエストのエラー率などを確認していますが、どのタイミングでエラーが多く発生したかを把握したいため、グラフウィジェットで確認するようにしています。

「mackerel.io 5xx count」というタイトルのグラフウィジェット。5xx系のHTTP statusのリクエスト数のグラフが0付近で推移しています。
グラフウィジェットを利用してエラー率の推移を表示している図

今回は、Mackerel開発チームでの実践例をもとにカスタムダッシュボードの活用方法をご紹介しましたが、カスタムダッシュボード利用時のTipsや悩みどころについても、Mackerel Meetupでぜひお話しできればと思います。

[PR] Mackerel Meetup #14 Tokyo を開催します

Mackerel Meetup #14 Tokyoを2023年7月11日(火)に開催します。Mackerelの開発状況の共有や情報交換を行うオフラインイベントが4年ぶりに帰ってきました! Mackerelユーザーによるご講演もあります。ぜひご参加ください。

mackerelio.connpass.com