継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

Mackerel の『式による監視』を試した

タダです.

Mackerel の機能で自分が指定した式を使った監視ルールや独自のメトリクスをダッシュボード に表示できる 「式による監視」があります.これは実験的機能と呼ばれ,正式機能ではないものの先行公開されています.

mackerel.io mackerel.io

下記の記事を見た時から気になってて,通常のメトリクスでは見えないデータを表示できるのでどんな感じで使えるかを試してみました.この記事ではその内容をまとめます.

mackerel.io

式による監視の特徴

式による監視」は Mackerel の Monitors -> 監視ルールを追加 -> 式による監視 から追加できます. 監視対象以下の式の部分に自分で監視したいルールを定義し,閾値を設定します.監視ルールとして使える関数はこちらで参照可能です.

f:id:sadayoshi_tada:20210611060214p:plain

監視の追加画面

f:id:sadayoshi_tada:20210611061755p:plain f:id:sadayoshi_tada:20210611061807p:plain

仕様として次のものがあります.

監視間隔は5分ごとになります

監視項目として設定可能な式は、グラフの系列が1本になるものだけになります

式よってメトリック値が取得できない・式が複雑すぎてタイムアウトする、などの場合は、ステータスがUnknownとしてアラートが発生します

監視項目の上限数は20です

Trialプラン及び有料プランでのみご利用いただけます

ALB のターゲットグループのリクエスト成功率を監視してみる

式による監視」機能を試すものとして冒頭のはてなさんの記事を参考にして, ALB の(2xxと返したアクセス数) / ((2xxと返したアクセス数 + (5xxと返したアクセス数))という監視ルールを設定し,閾値を超えた場合 Slack に投稿することをしてみます.5分間隔でチェックし,ALB のターゲットグループで 5XX系エラーが出てシステムの可用性に影響が出た時にわかります.

監視式

scale(
    divide(
      host(
        <hostid>,
        custom.alb.httpcode_count.target_2xx
      ),
      sum(
        group(
          host(
            <hostid>,
            custom.alb.httpcode_count.target_2xx
          ),
          host(
            <hostid>,
            custom.alb.httpcode_count.target_5xx
          )
        )
      )
    ),
    100
)

稼働率が100%から99.99%以下になったら Warning で 99.97 %以下になったら Critical のようなを作ってみました.

f:id:sadayoshi_tada:20210611105857p:plain

実際に 99.97%以下の計算になった場合がポストされたのが下記の画像になります.計算上 99.78% になったため Critical になっています.

f:id:sadayoshi_tada:20210611103851p:plain

まとめ

Mackerel の「式による監視」機能を試してみたので簡単にやり方をまとめてみました.式として他にも様々な関数が用意されているので収集したメトリックから他にも適宜必要に応じたデータを見えるようにしていきたいです!