New Relic Insights って何？ 他のダッシュボードサービスと何が違うの？

Advent Calendar 6日目は、New Relic Insights （インサイト）というサービスにについて紹介したいと思います。これは、New Relic の他の製品とかなり毛色のかわったサービスです。わかりやすくいうと、ダッシュボードサービスです。New Relic 的には、リアルタイム分析プラットフォームと謳っています。どちらかというとビジネス向けの機能です。

![insights_top2.png](https://qiita-image-store.s3.amazonaws.com/0/46003/86c4c24a-c52e-21b3-51c9-89e9506bc847.png)


## 他のダッシュボードサービスと何が違うの？

他のダッシュボードサービスについて詳しくないのですが、New Relic ならではの特徴が 2 つあるかなと思っています。1つ目は、データソースとして、New Relic の他の製品が収集したデータを利用できまること。そのため、データソースの設定が必要ありませんし、APM を使って言いる場合は、すぐに分析が始められます。2つ目は、専用のクエリ言語 (NRQL) があることです。これにより、専用のエンジニアでなくても、使い方が分かっていれば、直ぐにクエリを書き換えて、見たいデータを見ることができます。

## デジカでの使い方

弊社では、Insights で、[Komoju](https://komoju.jp) という決済サービスにおける各種データを見えるようにしています。例えば、各種支払方法別の割合や、売上推移、顧客平均単価やコンバージョンレートなどです。以下に紹介するデータソースとNRQLを組み合わることで、他の製品単体ではできないような、非常に強力なパフォーマンス分析ツールであり、ビジネス分析ツールになります。

## デフォルトだけでも多くのデータソースが使える

現在、New Relic は、データソースとしてデフォルトで以下、4 製品のデータを Insights 上で利用できます。

- APM: トランザクションデータ、エラーデータ
- Browser: ページビューデータ
- Mobile: クラシュデータ、インタラクションデータ、セッションデータ
- Synthetics: Synthetic チェックデータ、Synthetic リクエストデータ

例えば、APM のトランザクションデータでは、データベースの呼び出し回数、HTTP のレスポンスコード、パス、ホストやユーザーエージェントなどを利用できます。
それにより、APM が提供しているダッシュボードでは見れないデータの表示や比較なども行えます。

このダッシュボードのいいところは、複数のデータソースのデータを１つダッシュボードにまとめて見れることです。トランザクションデータ、ページビューデータ、Sythenticsのデータを組み合わせて、総合的なサイトの情報の比較が簡単に行えます。

また、Insights では、複数のアプリを利用している場合は、アプリ名を指定して、データを絞る必要があります。逆に言えば、アプリを跨いだデータの比較もできるということです。

## データソースの絞り込みは、NRQL で

NRQL は、New Relic Query Language の略で、New Relic が SQL をベースに独自に開発した、クエリ言語です。これを使って、上記のデータソースから、データを絞り込みます。SQL ベースなので、基本的には `SELECT`, `FROM`, `WHERE` を使います。例えば、ブラウザの Apdex スコアを取得するNRQLは以下のようになります。

```
SELECT apdex(duration, t: 2.0) FROM PageView WHERE appName='Komoju'
```

`SELECT` では取りたいデータ、`FROM`はデータソース（イベント）、`WHERE`はここでは、アプリ名を指定しています。

![insights_01.png](https://qiita-image-store.s3.amazonaws.com/0/46003/445f8942-cf30-4cfc-fe4b-510003569983.png)

![insight_query_02.png](https://qiita-image-store.s3.amazonaws.com/0/46003/2839657a-361a-6c0f-1af6-508e9da35c98.png)

![insight_query_03.png](https://qiita-image-store.s3.amazonaws.com/0/46003/8a6ec21e-3e71-8446-1703-92a8e0919145.png)

![insight_query_04.png](https://qiita-image-store.s3.amazonaws.com/0/46003/3374daf9-3477-3bdb-9ccb-346ca1fad197.png)

基本的には、上記のように NRQL を書いていくことで、様々なデータリストやグラフを作成し、ひとつのダッシュボードにまとめ、日々眺め、必要に応じて、修正や追加を行うといった感じです。すごい簡単な紹介ですが、雰囲気は分かってもらえるかと思います。

NQRL の構文やキーワードは[NRQL reference](https://docs.newrelic.com/docs/insights/new-relic-insights/using-new-relic-query-language/nrql-reference)に詳しく書いてあります。

## NRQL いらずの データエクスプローラー

ただし、NRQL のキーワードはいくつかなじみのないものも多く、慣れるまで多少勉強が必要になります。そこが、エンジニア以外も使えると言っておきながら、なかなかとっつきずらい点でした。しかし、Future Stack 15 の際に、Insights のデータエクスプローラーを大幅に変更したというアナウンスとデモがありました。データエクスプローラーは、それまでは単に、収集したデータのリストが見えるだけでした。しかし、今は違います。今は、以下のような画面となっています。

![data_explorer.png](https://qiita-image-store.s3.amazonaws.com/0/46003/2fc9ec90-e2ff-39f1-4d7d-3999d35178dc.png)

つまり、今では、クリックで条件を指定していくだけで、自動的にNRQLが作成され、ダッシュボードに追加できるようになりました。これにより、本当にエンジニア以外の方でも、画面上でポチポチ試行錯誤しながら、自分だけで見たいデータを見ることができるようになったのです。これは、非常に強力な機能であり、Insights を１段上のサービスに押し上げたと思います。

## おわりに

今回は、非常にさらっと Insights について紹介しました。ある程度サービスの利用イメージが分かって頂けたかと思います。

ただ、弊社でもそうですが、New Relic がデフォルトで収集するデータだけでは、ビジネスで経営判断に使っていくには、データが足りません。そこで、独自のデータを送信する機能である、カスタムイベント API を組み合わせることで、Insights の可能性が大幅に広げることができます。それは、また別の日に紹介したいと思います。