はじめに
KWCでSREのマネージャーをやっている @kumakou3 です。
入社1年目からSREの部署を立ち上げ、優秀なメンバーに囲まれて楽しい日々を送っております。
「どうやって新しく部署を立ち上げたの?」とか「SREを部署化するってどんな感じなの?」という話は置いといて、今回は全く関係のない Mackerel の話をします。
理由は最近個人的にいじって楽しかったからです。
Mackerelとは
Mackerelの公式サイトには、以下のように書かれています。
Mackerelは、株式会社はてなが提供する日本製のサーバー監視サービスです。
自社のサービス運用基盤をMackerelで運用し、そのノウハウを詰め込むことで、クラウド監視に必要な機能を提供し続けています。
クラウド監視との親和性が非常に高く、UIも初心者でも見やすい作りとなっています。
個人的にお気に入りの監視ツールの一つです。
Mackerelの監視ルール
Mackerelの監視ルールには、次のような種類があります。
今回はこの中で「式による監視」に着目しています。
種類 | 内容 |
---|---|
ホストメトリック監視 | ホストのメトリックの平均値を監視します。 |
ホスト死活監視 | ホストが継続的にメトリックを投稿していることを監視します。 |
サービスメトリック監視 | サービスに紐付いたメトリックの直近のポイントの平均値を監視します。 |
外形監視 | 指定したURLに対して1分毎にステータスコードの監視を行います。 |
式による監視 | 式によって計算されたメトリックの値を5分に1回の間隔で監視します。 |
ロール内異常検知 | ロールの過去の傾向と比べてシステムメトリックの特異な変化を検出します。 |
チェック監視 | 設定された条件と照合し、OK もしくは NG の判定結果を監視します。 メトリックの送信・グラフによる可視化はおこなわれません。 |
監視要件
1. ステータスコード5xxがxx回カウントされた場合にアラートを上げる
この要件の場合、単純にホストメトリック監視を利用して、
alb.httpcode_count.target_5xx 等の数をカウントする方法が利用できます。
2. 割合でアラートを上げたい場合
一方で次のような要件の場合、ホストメトリック監視では実現できませんでした。
ホストメトリック監視は、CPU使用率およびメモリ使用率は割合(%)で指定できますが、それ以外は対応できないようです。
- 直近10分間におけるステータスコードの 5%以上 が 5xx の場合は Warning
- 直近10分間におけるステータスコードの 10%以上 が 5xx の場合は Critical
そのため、割合(%)で監視ルールを設定する場合は、「式による監視」を利用します。
監視設定
上記 2 の監視要件の場合、式として設定する内容は以下のようになります。
scale(
movingAverage(
divide(
host(hostId, custom.alb.httpcode_count.target_5xx),
host(hostId, custom.alb.request.count)
), 10m
), 100
)
このように設定することで、割合(%)で監視ルールを設定することができます。
式の内容を分解すると・・・
- divide でステータスコード 5xx の件数をリクエスト総数で割る
- movingAverage で 10 分間の移動平均を算出する
- scale で 100 を掛けて値を % に変換する
Info
hostId には、利用しているオーガニゼーションのホストIDを指定します
結果
いい感じで検知されたようです。
通知先はメールだけではなく、Slack や Chatwork さらにはなんと Twilio とも連携できます!
さいごに
今回は Mackerel を使って AWS の様々なサービスを監視する機会があり、その際に利用した「式による監視」を紹介しました。
他のAWSインテグレーションで取得可能なメトリックも、「式による監視」を応用すれば複雑な監視要件も設定できそうです。
「式による監視」の関数は、わかりやすくドキュメント化されているので、色々と試してみることをお勧めします!
KWC Advent Calendar 2022 も残すところわずかとなりましたが、最後までお楽しみください!