0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

New RelicAdvent Calendar 2017

Day 8

New Relic ならではの機械学習を活用したエラー分析機能エラープロファイルとは

Last updated at Posted at 2017-12-08

New Relic Advent Calendar 2017 8日目。New Relic APM のエラー分析の新機能のご紹介。

スクリーンショット 2017-12-08 22.19.31 (1).png

みんな New Relic APM のエラー分析機能使ってる? いつも皆使っている機能なんだろうかと思ってはいる。うちとかだとエラー管理は別サービスを使っているし。(エラーが発行されたタイミングで Slack に通知してほしかったりするけど、New Relic のエラー管理ではそれはできないので)

なんだけど、今回紹介する新機能の エラープロファイル (2017年9月ころリリース)は、New Relic ならではの機能となっている。何がならではかっていると、エラー以外のパフォーマンスやトランザクションデータを持っているってことを活用した機能になっているってとこ。エラー管理に特化したサービスにはそれはできないからね。

どういうものかって言うと、昨今 New Relic が力をいれている機械学習を利用した機能。New Relic が普段から収集している膨大なトランザクションデータ(エラーも含む)を使って、これまでは人が推測していたエラーに共通したパターンを自動的に学習し、提示してくれる。問題特定の最初の調査時間を大幅に削減してくれるかもしれない。

どんなものかはこれから説明していく。その前に現状を説明。

これまでのエラー分析機能でできたこと

今までの New Relic APM のエラー分析(Error Analytics)機能は、 サーバーアプリの未キャッチ例外を New Relic 上でリスト化し、指定した時間帯に発生した例外をエラークラス/メッセージ/トランザクション別などで絞り込んで、エラー分析を効率化してくれる機能がある。もちろん個々のエラーのスタックトレースなどエラー詳細も確認できます。

screen-error-analytics-3day.png
トランザクション別にエラー回数を表示している例

このように発生した例外を効率良く分析、絞り込める機能があるのが、Error analytics 。これについて知りたい方は、ここの記事をご覧ください。

エラープロファイル機能でできるようになったこと

そこに新たに追加されたのがエラープロファイル(Error profiles)。エラーの原因特定が効率良く行えるようにサポートする機能。ただ、上記と違うのが、最初にも書いたけど、エラーだけでなく正常のリクエストデータも機械学習にかけ、エラーのリクエストと正常のリクエストを比較し、エラーとなる傾向の強いリクエストパターンを提示してくれるということ。

エラーが発生したときに、エラーだけ見ていても、なぜそのエラーがその時に発生したのか分からないことがある。そういった場合、このエラーが発生した状況(同じトランザクションだったり、同じリクエストヘッダーだったり)は、通常のリクエストと違いはないのか?と気になることがある。そこで、エラーにのみ特有のパターンがあれば、通常のリクエストとの違いの部分がエラーの原因や原因の一部なのではないかとあたりがつく。そういう点で、通常のリクエストと比較することは意味のある行為であり、エラーの原因特定までの道のりを短縮してくれるツールとなり得る。

というふうに、通常のリクエストとエラーのリクエストの差(偏差)が大きいものを重要度高として、リスト化してくれる機能がエラープロファイル。

以下のように発生したエラーに対するパターンを提示してくれる。(見ても意味のない項目も結構あるけど)

エラープロファイルは、選択している時間帯(Time Picker)とフィルタリングで絞られたエラーを対象に、通常のリクエストとの差を表示する。

apm-error-profiles.jpg

この場合、一番上は、Error Class が対象となっていることがわかる。その下に All of these errors have error class "HttpServerError 500" とメッセージがある。発生した全エラーは 500 エラーだったと言っている。このように、指定している時間帯に発生したエラーで、どういった傾向があるのか簡略化したメッセージで教えてくれる。(ただ、エラークラスとか2番目のエラーメッセージとかは、エラーにしかない項目なので、役に立つ情報かは微妙)

ここで意味が大きいののは、通常のリクエストと共通の属性(トランザクションやリクエストヘッダーなど)だと思う。

apm-error-profiles-2.jpg

また、特にこの機能で価値が大きいのが、カスタム属性を使っている場合なのではないかと個人的には思う。NRQL のアラートでも紹介したカスタム属性とは、New Relic が自動的に収集するデータ以外の任意のデータを収集してくれるようにできるもの。(コードに手をいれる必要があるが)

言語によってAPIが変わるが、Ruby だとこんな感じ。他の言語でも同じ感じ。ここでは、ストアIDという情報を送っている。

NewRelic::Agent.add_custom_attributes({ store_id: "xxxx" })

このようにストアIDを送っていた場合、このエラープロファイルでもストアIDは監視対象になる。よって、全体のリクエストに対して、特定のストアだけエラーがよく起こるなどが提示されたりする。これによって、そのストアの作りとかデータとかにエラーを誘発する原因があるのでは?と考えるきっかけとなる。これは実際には違うかもしれないが、こういうデータがないと、そもそもそのように思いさえしないので、重要な情報である。

エラープロファイルの使い方(アクセスの仕方)

ここまででエラープロファイルがどういう機能か分かってもらえたと思う。では、具体的にどうやって使う(アクセスする)かを紹介します。

test1.gif

  1. New Relic APM にアクセス
  2. 左メニューの Error analytics をクリック
  3. メイン画面中段のタブメニューの Error Profile をクリック
  4. 選択している時間帯に発生したエラー、フィルタリングで絞り込んだエラーを対象にエラープロファイルを表示
  5. 属性(ポートやトランザクション名、カスタム属性など)別に、エラーの場合の傾向をメッセージで表示
  6. 属性欄をクリックすると、エラーの場合と正常の場合の割合を表示

参考

この記事を読んでエラープロファイルについて興味を持って頂けたら、以下の記事も参考になるかと思う。

まとめ

ということで、今回は最近 New Relic が積極的に取り組んでいる機械学習を取り入れた機能エラープロファイルの紹介でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?