ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

Mackerelで式を使ってメトリックを集約

お久しぶりです。クラウドインテグレーション事業部所属の自称魚介系エンジニアの松尾です。

時が経つのはあっという間で、前回のブログからもう半年も経過してしまいました・・・。
サバの漁獲量は前回のブログで記載しました通り、昨年度に比べ下降しておりますが、ここからのマサバシーズンに期待したいですね!

そういえば、日本で食べられているサバは、国産のマサバ、ゴマサバ以外にも別の種類のサバがいることをご存じでしょうか?
それはノルウェーサバ(タイセイヨウサバ)と呼ばれる魚で、国産のサバに比べて脂が多く乗っていることが特徴です。
人によって脂の乗り具合に好みはあるかもしれませんが、ノルウェーサバが国産のサバに比べて味が落ちるということはなく、料理によっては国産のサバより美味しいものもあります。
国産のサバの漁獲量が低迷している今こそ、サバ好きの方は是非一度食されてみてはいかがでしょうか?(シンプルに焼きサバなど美味しいですよ!!)

色んなサバを料理するのと同じように様々なクラウドサービスを連携できる監視ツールは・・・そうです!Mackerelです!!

最近GoogleCloudPlatform(GCP)とも連携できるようになりました。 GCPユーザにはありがたいニュースですね!!

また、私事で大変恐縮ではございますが・・・
この度9月より、はてなさんからMackerelアンバサダーに任命いただきました!!
これを期に、いっそうMackerelの普及活動に貢献できればと考えておりますので、引き続き宜しくお願い致します!!

それでは今回のブログの内容についてですが、既に昔から機能としては存在していたものの上手く活用できていなかった「式グラフ」の活用方法の一例についてご紹介させていただきます。

なお、これまでのMackerelに関する投稿は以下の通りです。
気になる記事がございましたら、是非ご一読下さい!!

techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com
techblog.forgevision.com

式グラフの概要

式グラフはURL内のクエリパラメータに関数を入力することで、Mackerelに取り込まれている既存のメトリックを用いて、独自のグラフを表示することが可能となる機能です。

リリースしてから数年たっている現在でも「実験的機能」として提供されていますが、十分普段の運用でも活用できる関数が提供されております。

利用例として、普段サーバの運用を行っている方は、過去と現在のメトリックを比較してお客様に利用状況を報告することが多いと思いますが、この式監視を用いることで同じグラフ内に過去と現在のメトリックを表示することができます。 また、複数のメトリック値の合計を1つのメトリックとして表示させることも可能で、冗長化されているシステムなどでリソースの利用量を比較したり合算して表示させることなども可能です。

他にも様々な関数が提供されておりますので、詳細は以下Mackerelサイトをご確認下さい。 mackerel.io

式グラフ作成方法

式グラフの基本的なURLは以下の通りです。 https://mackerel.io/orgs/<オーガニゼーション名>/advanced-graph?query=<メトリック>&unit=<単位>&title=<タイトル>
※title, unitパラメータは省略可能。

上記URLに関数を追加することで任意のメトリックを使ったグラフの作成が可能です。 今回のブログでは現在のDisk利用量と1週間前の同時刻のDisk利用量を比較できるグラフを作成してみたいと思います。

式グラフの作成手順

以下のURLでグラフを表示します。

https://mackerel.io/orgs/<オーガニゼーション名>/advanced-graph?query=group(alias(avg(role(EC2-SERVICE:TEST-SERVER, filesystem.xvda1.used)), 'DiskUsage'),alias(timeShift(avg(role(EC2-SERVICE:TEST-SERVER, filesystem.xvda1.used)), 1w), '1%20week%20ago'))&unit=bytes&title=現在と一週間前のDisk利用量比較

各クエリパラメータを以下の通り補足します。

  • group
    引数のメトリック列を1つにまとめます。
    今回の場合は現在のDisk利用量のメトリックと、1週間前のDisk利用量のメトリックをまとめるため、本パラメータを指定します。
  • alias
    メトリックの表示名をカスタマイズします。
    今回の場合は現在のDisk利用量メトリック列の名前をDiskUsage、1週間前のDisk利用量メトリック列の名前を1 week agoとします。
  • avg
    各時刻ごとに引数のメトリックの平均したメトリックを返します。
    今回の場合はDisk利用量の平均値を求めるため、本パラメータを指定します。
  • role
    ロールに現在所属しているホストのメトリックを返します。
    今回の場合はサービス「EC2-SERVICE」に所属する「TEST-SERVER」ロールに紐づけられたサーバから、filesystemグラフ内のxvda1usedメトリックを取得します。
    ロールの説明に関しては冒頭にも記載させていただいた過去のブログAWSをMackerelで監視(開始編) - ForgeVision Engineer Blogをご確認下さい。
    ※対象メトリックの抽出はhostで固有IDで指定することも可能です。
  • timeShift
    指定した期間分時刻をずらしたメトリックを返します。 今回の場合は、一週間前のメトリックを表示するため1wを指定します。
    なお、使用可能な単位は m(分)h(時間)d(日)w(週)mo(月)y(年)です。
  • unit
    メトリックの単位を指定します。
    今回の場合は、Disk容量であるため、bytesを指定します。
  • title
    グラフのタイトルを指定します。
    今回と場合は、「現在と一週間前のDisk利用量比較」をタイトルとします。

以上のクエリパラメータを指定したURLをブラウザで表示したものが以下となります。

f:id:matsuo1017:20201111021629p:plain
式グラフ①

このグラフから一目で一週間前と現在のDisk利用量の違いが確認できるかと思います。

また、画面右上の「式を編集」を押下することで、現在の式を編集して表示することも可能です。
「式を編集」を押下した画面は以下の通りです。

f:id:matsuo1017:20201111022126p:plain
式グラフ②

なお、式グラフを表示するには毎回ブラウザでURLの入力が必要となりますが、毎回入力するのが面倒な場合は、Mackerelのダッシュボードに式グラフを登録することも可能です。
以下はダッシュボードの登録例です。

f:id:matsuo1017:20201111024314p:plain
ダッシュボード①

式グラフの利用方法については以上となります。

最後までお読みいただきありがとうございました!!

今回のブログについて

今回の投稿では、真新しい機能ではなく、リリース後数年が経過している「式グラフ」について投稿させていただきました。
利用してみた感想としては、式グラフはロールでのメトリック集約と併せて用いることで、より運用コストの軽減につなげることができるのではないかと感じました。 少し残念だったのは、過去と現在のメトリックをグラフに集約した際に過去の時間までは表示できない点です。(もしかしたら表示する方法もあるかもしれませんが・・・。)
未だ「実験的機能」であるため、さらなるアップデートを期待しております!!

次の配信について

これまではAWSに関連した記事をメインで投稿していましたが、次回以降は別のクラウドサービスとの連携についても投稿できればと考えております!!

それでは次回もお楽しみに!!