えいのうにっき

a-knowの日記です

Mackerel の閾値監視における「平均値監視」と「最大試行回数」について

この記事は、Mackerel アドベントカレンダー(全部CRE)の11日目の記事です。

今回は、Mackerel の閾値監視における「平均値監視」と「最大試行回数」について、整理しておきたいと思います。

f:id:a-know:20181211072720p:plain

混乱しやすい「平均値監視」と「最大試行回数」

まずは平均値監視について。

↑に貼った画像のような設定をした場合、「直近3点のCPU使用率の平均値が、70%を超えていれば WARNING アラート、90%を超えていれば CRITICAL アラート」という設定となります。多くの場合、メトリックの収集・送信には mackerel-agent を使っていると思うので、「直近3点」というのは、「直近3分間」の意味である、と考えてもらってよいでしょう(mackerel-agent はメトリックの収集・送信を毎分間隔でおこなうため)。具体的なケースも考えてみましょう。

  • 1点目:75%
  • 2点目:80%
  • 3点目:70%

上記のようなケースの場合(ケース①)、平均値が (75 + 80 + 70) ÷ 3 = 75% となるので、この場合だと WARNING アラートが発報されます。

次のケース(ケース②)ではどうでしょうか。

  • 1点目:60%
  • 2点目:100%
  • 3点目:60%

1点目と3点目はいずれも WARNING 閾値である 70% を下回ってはいますが、平均値を計算してみると (60 + 100 + 60) ÷ 3 = 73.33% となり、この場合でも WARNING アラートが発報されます。

続いて、最大試行回数について。「n回連続で WARNING / CRITICAL 閾値を超えた場合にアラート発報する」という意味合いになります。例えば以下の画像のような設定をしていたとき(WARNING / CRITICAL 閾値については上記と同様とします)、

f:id:a-know:20181211072800p:plain

  • 1点目:75%
  • 2点目:80%
  • 3点目:70%

さきほどのケース①のような場合、3点いずれも WARNING 閾値である70%を超えているため、最大試行回数による設定でもアラートは発報されます(平均値監視設定の「1点の平均値を監視」は、つまり平均を取らない、という意味です)。

それでは、ケース②ではどうでしょうか?

  • 1点目:60%
  • 2点目:100%
  • 3点目:60%

WARNING 閾値である70%を超えているのは2点目しかなく、「3回連続で閾値を超えているか」という観点では偽となるため、アラートは発報されません。この挙動が直感的なものかそうでないかは、人によって異なるかと思います。

「平均値監視」と「最大試行回数」は組み合わせて使用することも可能

この2つの設定は、組み合わせて使用することもできます。例えば以下のようなケース。

f:id:a-know:20181211072813p:plain

このような設定をおこなった場合、「3点ごとの平均値が3回連続で WARNING / CRITICAL 閾値を超えた場合にアラート発報する」という挙動になります。以下のような5点の情報が投稿されるとした場合、

  • 1点目:75%
  • 2点目:80%
  • 3点目:70%
  • 4点目:75%
  • 5点目:68%

「最大試行回数」としての閾値との比較は以下の通りとなります。

  • 1点目、2点目、3点目の平均値:75%、なので WARNING 閾値を超えている(1回目)
  • 2点目、3点目、4点目の平均値:75%、なので WARNING 閾値を超えている(2回目)
  • 3点目、4点目、5点目の平均値:71%、なので WARNING 閾値を超えている(3回目)、3回連続で WARNING 閾値を超えたため、WARNING アラート発報

まとめ

混乱しやすい、Mackerel の閾値監視における「平均値監視」と「最大試行回数」について簡単にまとめました。基本的にこれらの設定項目は、「どんなささいな負荷高騰も見逃すことなく把握したい」のか、「一定期間以上高負荷な状態が続く場合には気が付きたい」のか、といった観点で、「自分が感知したいケースはどういうケースなのか?」を考えながら設定してもらう項目になります。そうしたことを念頭に、「そういうつもりじゃなかった!」とならないよう、設定してみてください。