新アラートサービス: New Relic Alerts と今後予定されているアラートの新機能について

デジカの宮澤です。アドベントカレンダー4日目は、去年も紹介しましたが、ようやく正式にリリースされたので、改めて New Relic Alerts について紹介します。

## 既存のアラートとの違い

New Relic Alerts は、中央集権型の New Relic のアラート機能です。これまでは製品ごとのアラート設定との違いは以下となります。

- １つのUIで全製品のアラートの設定を行える。統一したUIとなった。
- 設定できるアラート対象が増えた。例えば、APM の場合、エラー率と Apdex しかアラート条件に設定できなかったけど、レスポンスタイムやスループット、カスタムメトリクスなど指定できる項目が増えました。
- 利用可能な通知チャネルが増えた。slack などがデフォルトで選べるようになりました。
- 柔軟ならアラート設定が可能に。複数のアラート条件を設定できるので、アラート通知がより適切に送れるようになった。（詳しくは、以下で説明します）

## 誰が使えるの？

New Relic Alerts は有料プランのユーザー向けサービス。有料プランをお使いの方は、利用している有料プランの製品で、New Relic Alerts を利用できる。

## 使用方法

New Relic にログイン後、画面の右上に、「Alerts new」というメニューが表示されているので、それをクリックします。既に利用している場合は、Alerts 画面に切り替わります。まだ利用していない方は、最初に以下のような切り替え同意画面が表示されます。

## New Relic Alerts とは

New Relic Alerts は、以下の構造でアラートの設定を行います。

- アラートポリシー
- アラート条件
- チャネル(通知先の設定）

アラートポリシーには、複数のアラート条件とチャネルを設定できます。

## 設定

アラート条件では以下の順で指定します。
1. アラート対象の製品(APM, Browser, Servers, Mobile, Plugins, Synthetics)
2. アラート対象のアプリ
3. 閾値の設定(どの項目が、どういう値になったら、アラートを出すのか？)
    - 例: 平均レスポンスタイムが、5分以上、2秒を超えていたら

アラート条件では、`Criticla` と `Warning` の２つのレベルがあります。違いを簡単にいうと、`Criticla` の閾値を越えると、チャネルに設定した通知先にアラート通知が飛びます。`Warning` の閾値を超えても、アラート通知は飛びません。アラート条件の設定では、`Criticla` は必須で、`Warning` は任意です。

以下は、手順3の New Relic APM を対象とした場合の閾値の設定画面です。
![qiita_alert_condition2.png](https://qiita-image-store.s3.amazonaws.com/0/46003/77eca457-7a15-6b97-47da-fb4f1af19ed7.png)

上記は、レスポンスタイムが3秒以上の状態が、5分以上続いた場合にアラートを通知します。Warning の指定はなし。というアラート条件の定義。

APM の場合に指定できる設定対象は以下となります。(これは製品別などによって異なる)

<img width="338" alt="スクリーンショット 2016-12-04 16.49.16.png" src="https://qiita-image-store.s3.amazonaws.com/0/46003/8b110add-d2da-c35b-9758-e3b468da211e.png">

また、APM の場合、対象として、外部サービス(external service) も指定できるため、利用している外部サービスからのレスポンスが3秒以上応答がないとアラートを通知する。といったこともできます。


## インシデント管理としても使える

`Warning` が通知が飛ばないとしたら、なぜ `Warning` が必要なのでしょうか？ それは、New Relic Alerts がインシデント管理としても使えるからです。

New Relic Alets では、`Criticla` と `Warning` の閾値を越えると、violation (違反)が生成され、その管理する入れ物のインシデントが生成されます。これは、New Relic Alerts の Incidents 画面や APM 等のインデックス画面で何かアラート条件に違反していることが分かります。そのため、New Relic はインシデント管理のシステムとしても使えます。

## アラートポリシーとは - アラート疲れを軽減するシステム

上記までで、簡単に New Relic Alert の構造を説明しましたが。アラートポリシーとはなんでしょうか？なぜ、複数のアラート条件を設定できる必要があるのでしょうか？　それは、インシデント管理及びアラート通知を効率良く管理するためです。

アラートポリシーがないと、どういうことになるかというと、例えば、レスポンスタイムが2秒を超えたら、アラートを通知する。スループットが、1000 を超えたらアラートを出すという２つのアラート条件を作成していた場合、どちらかの条件に達したら、もう片方の条件に達するという自体が発生した場合、２つアラートが飛ぶことになります。しかし、実際の原因は１つかもしれません。

そこで、アラートポリシーが役に立ちます。アラートポリシーの配下にあるアラート条件は、どれか一つでもアラート条件に違反していたら、その後に別のアラート条件で違反があっても、最初のアラート条件の違反が解消されるまで、追加でアラートを通知しません。

このように、アラートポリシーは、同じ原因によるアラート通知が大量に発生することを防ぎ、効率的にアラートを管理する仕組みとなっています。

## 健全さを示すヘルスインジゲーター

アラートは、New Relic APM などのサービスマップやインデックス画面で、アプリの健全さを示すことにも使われています。以下のように、`Warning` に違反すると、黄色、`Criticla` だと赤になっています。そのため、アラートが適切に設定されていれば、パット見でアプリで何か問題が発生しているかが、簡単に知ることができます。

![qiita_alert_incident.png](https://qiita-image-store.s3.amazonaws.com/0/46003/e3444375-1b86-4a72-c4ad-26b487faee6a.png)



## 今後追加予定の機能

**NRQL アラート**
待望の機能。NRQL を指定して、その結果の値でアラートを通知できる。これが入れば、実質 Insights で管理しているデータはすべてアラート対象にできる。何がいいかというと、弊社の場合は、ソフトウェアDLのECやってたりするので、S3のダウンロード数とかみてたりするけど、それがある一定数いったらアラートを出すとかが簡単にできる。今は、Insihgts API を使って、データとって、別の仕組みでアラート出してたりしてるんだけど、それが必要なくなるので、誰でも、簡単にそういったことができるようになる。これは、たぶん、すごい便利。

**ベースラインアラート**
これは、今まではアラートの条件の閾値を決め打ちで設定して、それを超えたらアラートでてたんだけど、これは機械学習を使って、過去の履歴からある程度類推してくれるらしい。詳しくは試せてないので分からないけど、これも非常に気になる機能。

**アラート条件: Web transactions percentiles の追加**
今までは、平均とかだけだったけど、パーセンタイルで指定できるようになる。これも、設定画面みれてないので、どういった指定の仕方かわからなけいど、今までより、外れ値を無視できるようになるのではないかと思っている。

**ラベルでのアプリケーション指定**
今回紹介したアラートの作成方法だと、アプリごとに指定するので、アプリが増えたときに追加で設定したりする必要があるが、たぶん（正式にはどういう機能かしらないけど）アプリのラベルで指定ができる。つまり、アプリを追加した場合も、ラベルを設定すればアラートの設定をする必要がなくなる。たぶん。

上記は、たぶん、プライベートベータとかだと思うので、いつ正式リリースになってないけど、12月中にリリースされたら、別の日で詳しく書いてみたい。

## あわせてよみたい

去年のアドベントカレンダーの記事　[New Relic Alert: 柔軟なアラートの設定でインシデントを効率よく管理しよう](http://qiita.com/kumatronik/items/5dd264df027941f40d79) では、この記事よりもスクショを多用して、アラートの設定やチャネルの設定など詳しく説明しています。

もっと詳しく知りたい方は、[ドキュメント(日本語)](https://newrelic.degica.com/docs/alerts/new-relic-alerts)をご覧ください。

## まとめ

既に有料プランをお使いの方は、いますぐ切り替えて使ったほうがいい。また、今後も非常に楽しみな機能が目白押しです。アラートの（いまのところの）最終進化系が、他の日でも触れる AI/機械学習の新プロジェクト Project Seymore だとおもう。これは非常楽しみな機能となっています。

是非、アラートを活用して、顧客が気づく前に対応できる環境を整えてください。