Help us understand the problem. What is going on with this article?

New Relic APM の最新アラート設定の紹介 - パターン認識アラートもあるよ

More than 1 year has passed since last update.

New Relic Advent Calendar 2017 5日目。

New Relic APM のアラート設定についての記事。ここ一年でユーザーのアラート設定が楽になったり、New Relic が用意している以外の項目もアラート条件に設定できるようになったので、それらを紹介します。

去年書いた「新アラートサービス: New Relic Alerts と今後予定されているアラートの新機能について」のアップグレード版。去年の記事では、その時点で利用可能であったアラートについての最新情報をお伝えした。読んでいない方は、是非、本記事の前にご覧いただければ、この記事の理解も増すかもしれない。

前回記事で、今後追加される機能として「NRQL アラート」「ベースラインアラート」「アラート条件: Web transactions percentiles の追加」と書いたので、今回はこのうちの「ベースラインアラート」「アラート条件: Web transactions percentiles」を紹介します。

アラート条件の設定手順

その前に簡単に New Relic APM のアラート設定の共通の手順だけざざざっと説明しておく。詳しくはここを参照。

  1. New Relic UI にログイン後、画面右上の "Alerts" をクリック
  2. トップしたのメニューから、"Alert policies" を選択
  3. アラート条件を追加するために、既存のポリシーを選択するか、新しくポリシーを作る (画面右上の "New alert policy" をクリック)
  4. 画面右の "Add a condition" をクリック
  5. 後はカテゴリ、エンティティ(対象アプリ)、アラート条件を選択、入力する。

説明が簡単な順に説明していく。まずは、パーセンタイルから。

アラート条件: Web transactions percentiles

アラート条件として、パーセンタイルが使えるようになった。これを使うと、ウェブトランザクションのパフォーマンスの閾値としてパーセンタイルで設定できる。これまでは Apdex やレスポンスタイム、スループットなどを設定項目に指定して、アラート条件を設定できた。パーセンタイルの設定は、平均レスポンスタイムの代わりというか、より細かい設定がしたい場合に便利な設定項目だと思う。

レスポンスタイムの場合は、平均レスポンスタイムが5分間500ms越えてたらアラートを出すみたいな設定だった。これだと、前日の Apdex の話じゃないけど、 少数の異常に遅いトランザクションによって、他のトランザクションは問題ないのに、アラートが発生する可能性がある。少数が遅くても無視できる場合、これはアラートはあがってほしくないかもしれない。(例えば深夜にこのような状況が発生し、起きて見てみるけど、緊急対応する必要はないかもしれない)。

そういった外れ値を無視というか、考慮して設定できるのがパーセンタイル指定の設定です。

例えば、90パーセンタイルで0.5秒を越えたらアラートを出すとかできる。これは、つまり、全リクエストの9割が0.5秒以内にある状態。この設定方法なら、平均が1秒のアプリで100秒のトランザクション(外れ値)が来て、平均が大きく跳ね上がる場合でも、90パーセンタイルより上なら関係ないので、アラートは発生しない。(外れ値は、もちろん全体のリクエスト数にもよるが、95-99パーセンタイルとかじゃないと引っかからないとは思う)

このように、特にアラート通知となる Critical の設定としては、平均レスポンスタイムを使うより、パーセンタイル指定の方が誤検出が少ないのではないかと思う。

設定方法

スクリーンショット 2017-12-05 23.15.16.png

設定方法は、レスポンスタイムと似ている。パーセンタイル(th)を指定し、それがどの時点(秒数)を越えたら、(Warning/Critical の)インシデントを発行するかを設定する。

最初に書いた共通のアラート条件の設定の5の段階から説明していく。

  1. カテゴリ: product として、APM を選択する(デフォルト)、type of condition として、"Web transactions percentiles" を選択する。(ここ間違えないように)。"Next, select entities" をクリック。
  2. エンティティ: アラート条件を追加するアプリにクリックし、"Next, define threshold" をクリック
  3. [ ]th にパーセンタイルを入力、Critical と Warning(任意)に、指定したパーセンタイルにおける秒数を入力。"Create condition" をクリック。(上のスクリーンショットを参考)

(ダイナミック) ベースラインアラート

次は、ダイナミックベースラインアラート。これは、ダイナミックと言っているので、動的にアラート条件が変わる設定方法。

スクリーンショット 2017-12-05 22.32.44.png

上で説明したパーセンタイルも含め、これまでのレスポンスタイムとかも、設定は静的な値(例えば、0.5秒とか)を指定する設定方法でした。これだと、スループットだと分かりやすいけど、1日のうち、昼と夜でまったくスループットが異なるアプリの場合、スループットをアラートの設定項目にしたい場合に、どちらを基準に設定していいのか、悩むと思う。普通は、ピーク時を想定して設定すると思うけど、そうすると、夜のスループットが昼の半分くらいしか通常ない場合に、昼と同じくらいに跳ね上がったとする、夜のスループットで考えると何かあったと考えられるけど、設定しているのは昼のピーク時なので、アラートの違反には引っかからない。ということで、異常な状態を見逃してしまうということが発生する。

これは、昼と夜とか、平日と土日とか、夏と春とか、そういった周期によって波が異なる場合に、平常時の波から外れた場合に、アラートを出してくれるというのが、ダイナミックベースラインアラート。

静的な設定項目では、どの値を閾値として設定するか悩むことがあるかと思う。特に New Relic APM を導入してすぐの場合。そういった場合は、とりえあずこのダイナミックベースラインアラートを設定するのが、設定し易いし、普段から外れた場合のみアラート通知が来るので、使い易いし、便利だと思う。

設定方法

  1. カテゴリ: product として、APM を選択する(デフォルト)、type of condition として、"Application metric baseline" を選択する。(ここ間違えないように)。"Next, select entities" をクリック。
  2. エンティティ: アラート条件を追加するアプリにクリックし、"Next, define threshold" をクリック
  3. 閾値の設定: トップのセレクトボックスから、項目(トランザクションタイム、スループット、DB処理時間、外部呼出し時間など)を選択する。閾値の設定は Critical/Warning それぞれで、スライダーになっている。

まず、右のチャートの読み方を説明する。

スクリーンショット_2017-12-05_22_43_31.png

まずチャートの上に、期間(ここだと2日)のデータ、今指定している閾値で発生した(したであろう) Critical のインシデント数。その横には、このチャートで確認する時間帯(2日 or 7日)を選択できる。

  • 黒い線 (見づらいけど): ベースライン。過去のデータ(2日間ではなく)からパターン分析した基準線。下のグレー帯域はこれと連動して動く。
  • 青い線: 現在の値
  • グレーの帯域: 許容範囲
  • 赤い縦線: Critical なインシデント発生時点

左のスライダーを動かすと、右のグレーの帯域が増減する。このグレー帯域を越えたら、Critical のインシデントが発生するっていう意味。スライダーを左に動かすと、帯域が狭くなり、ベースラインから外れた場合の許容範囲が狭くなる。つまり、より厳しい閾値(インシデントが多く発生)。右に動かすと、許容範囲が多くなり、ちょっといつもと違う動きをしてもアラートは出さない。この許容範囲をダイナミックベースラインアラートでは設定する。これは、Warning でも同じ。Warningは、黄色の線で、帯域は、Critical よりも薄いグレーで表される。

test2.gif

また、チャート上の期間は、2日(since 2 days ago)と7日(since 7 days ago)を選べるが、これはあくまで下のチャートでどのようにベースラインと現在値がどんな感じかを確認するためのもので、この期間のデータだけをベースラインの生成に使っているわけではない。ベースラインは過去の全データを使って生成されている。(ここら辺のアルゴリズムとかは下の参考記事とかを参照)

参考記事

ダイナミックベースラインアラートは APM Pro ユーザーのみ利用できる。

まとめ

今回は、より効率良くアラートの設定、管理ができるアラート条件を紹介しました。特にダイナミックベースラインアラートは、非常に使いやすく、便利な設定方法ですので、とりあえず使ってみてください。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした