この記事はMackerel Advent Calendar 2024 の17日目です。
こんにちは、SREチーム所属の@mashiikeです。
今年のMackerel Advent Calendarは、OpenTelemetry関連の記事が多くて私も流行りに乗ろうかと思いましたが、ネタが間に合いませんでした! この記事では、Mackerelの機能の中でも個人的に一押しのグラフアノテーションについて、弊社内での使い方の事例を紹介します。
グラフアノテーションとは
グラフアノテーションは2017年1月にリリースされた機能で、サービスやロールに関連する注釈をグラフ中に記述することができる機能です。
上記の画像では、私が作成しているOSS prepalertを使って、グラフ中に関連するMackerelアラートを注釈として記入しています。
前年の今の時期に、アップデートでカスタムダッシュボードのウィジェットにも表示できるようになったのは嬉しいアップデートでした。
Tonamelでの利用事例
このグラフアノテーションの効果的な使い方の事例として、弊社のサービスTonamelの利用事例を紹介します。
Tonamelは、ゲームの大会を手軽に開くことができるプラットフォームサービスです。 こちらのサービスの特性として、サービスに負荷がかかるのは、参加人数が多い大会の開始前と直後という傾向があります。 なぜかというと、大会の開始とともにTonamel上のトーナメント表を多数の人が見に来るからというのが一つの要因です。 この辺の負荷特性と、その負荷に対する予測オートスケールの話は、前年に詳しい記事が書かれていますので、興味がある方は、そちらをご参照いただければ幸いです。
さて、そんな特性を持つTonamelの運用においては、毎週の定例のときに、「サービス負荷がどれくらいかかっていたのか?」というのを確認することがあるのですが、そのときに見ているダッシュボードはこんな感じになります。
最近、このダッシュボードを見ながら「グラフアノテーションで、規模が大きい大会の開催期間を表現できるといいよねー」という話題が出て、同僚がぱっと実装してくれました。その結果がこちらです。
青い注釈が大会開催期間を表しています。見比べてみると、わかりやすさは一目瞭然だと思います。 一番ピークの高いところは、いくつかの大会が重なっているというのがわかりますね。 注釈の一つをクリックしてみると以下のような情報が表示されます。
トーナメント形式がシングルエリミネーションで、256人規模の大会が開催されていることがわかります。
さらに、エントリー数が355人となっていることから、エントリー上限を超えるくらいの注目度がある大会であることもわかります。
当然、観戦者も多いことでしょう。
このような情報を、Mackerelの中だけで確認できるようになるので、とても便利だと思っています。
具体的な実装方法は割愛しますが、端的に言うと「定期的にバッチ処理でデータ基盤であるRedshiftにアクセスして、条件を満たす大会を取得し、Mackerelのグラフアノテーション投稿APIを叩く」という感じです。 似たような、イベント型のサービスを運営している方がいたら、ぜひ参考にしてみてください。
まとめ
グラフアノテーションは、カスタムダッシュボードのウィジェットにも表示できるようになり、より使いやすくなりました。 イベント型のサービスを運営している場合は、今回のTonamelの事例のようにグラフアノテーションを活用することで、 サービスの負荷をよりわかりやすく可視化することが可能です。
このように、それぞれのサービスに合った形で監視を育てられるのもMackerelの醍醐味だと思います。 それでは、良い年末を!