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

New Relic Insights: 独自データを送って、ビジネス分析の幅を広げよう

More than 1 year has passed since last update.

Advent Calendar 7日目もデジカの宮澤が担当します。昨日の続きで、New Relic Insights についてです。今日は、昨日も言及した独自データの送信方法について説明します。

独自データを送れるようになると、Insights の利用の幅が非常に広がり、強力なBIツールになります。弊社でも、ざまざまな独自データを送ることで、ビジネスの見える化を促進しており、また、外部のお客様へのプレゼンにも非常に役立っています。ぜひ、使ってみてください。

カスタムイベントとは

エージェントには、カスタムイベントという機能があります。これを使うと、New Relic Insights に対して、新しいイベントタイプ(APM の Transactions や Browser の PageView に相当)ができます。送信されたカスタムイベントは、Data Explore で確認することができます。

事前準備(ライセンスキーの取得)

カスタムイベントを送るには、事前に New Relic の設定画面から、Insights API 用のライセンスキーを取得しておく必要があります。取得方法は、以下の通りです。

insights_license_key.png

+ ボタンを押すと以下に遷移する。

insight_license_key2.png

Key にある値をコピーして使ってください。

※ このキーは複数発行可能です。

送り方

データの送信は、以下のように、JSON フォーマットで行います。

[
  {
    "eventType":"Purchase",
    "account":3,
    "amount":259.54
  },
  {
    "eventType":"Purchase",
    "account":5,
    "amount":12309,
    "product":"Super expensive thing"
  }
]

"eventType" は、必須です。イベントタイプ名となります。(APM の Transactions に相当)
Value は、"" で囲む(例: "3")と文字列扱い。囲まない(例: 259.54)と小数扱いになります。この2つ以外の形式(配列や真偽値など)では送れません。詳しくは、サポートしているデータタイプをご覧ください。また、日時データも、独特な扱いなので、日時データを送りたい方も、観てみてください。

cURL を使っての送信方法

上記のスクリーンショットにも載っていますが、cURL を使ったカスタムイベントの送信方法は以下のようになります。

cat example_events.json | curl -d @- -X
  POST -H "Content-Type: application/json" -H "X-Insert-Key: YOUR_KEY_HERE"
  https://insights-collector.newrelic.com/v1/accounts/YOUR_ACCOUNT_ID/events

YOUR_KEY_HEREYOUR_ACCOUNT_ID の部分は自身の値と入れ替えて使ってください。Insightsを使える方であれば、上記のスクリーンショットのように画面上に表示されるのをコピペして使うと簡単です。(すでにそれらの値が入った状態のため)

以下は、実行例です。成功すると、success が返ってきます。

> curl -X POST -H "Content-Type: application/json" -H "X-Insert-Key:YOUR_KEY_HERE" -d '[{"eventType":"Purchase","account":3,"amount":259.54},{"eventType":"Purchase","account":5,"amount":12309,"product":"Super expensive thing"}]' https://insights-collector.newrelic.com/v1/accounts/YOUR_ACCOUNT_ID/events

{"success": true}%

エージェントを利用したカスタムイベントの送信方法

上記では、cURL の方法を書きましたが、やはり一般的な使い方は、アプリの中から送るのが多いと思います。各エージェントには、そのための API が用意されています。それを使えば簡単に送ることができます。このデータは、呼び出しタイミングで送られるわけではなく、60秒に一度送られるようです。(基本的に、New Relic APM 自体が60秒ごとにデータを送信しているので、おそらく同じタイミングでおくっているのだと思います)

どうやら Python だけは、API が用意されていないようです。

Ruby

::NewRelic::Agent.record_custom_event('WidgetSale', color: 'red', weight: 12.5)

Java

Map<String, Object> eventAttributes = new HashMap<String, Object>();
NewRelic.getAgent().getInsights().recordCustomEvent('MyCustomEvent', eventAttributes);

.NET

var eventAttributes = new Dictionary<String, Object>();
NewRelic.Api.Agent.NewRelic.RecordCustomEvent('MyCustomEvent', eventAttributes);

PHP

newrelic_record_custom_event("WidgetSale", array("color"=>"red", "weight"=>12.5));

Node.js

recordCustomEvent(eventType, attributes)

注意点として、あまりにも大量に送ると、メモリに影響を与えるのと、上記の言語でも古いバージョンだと上記の API が使えなかったりするので、使う際は、バージョンを確認してください。

詳しい説明や、予約語やデータサイズ制限などはInserting custom events via New Relic APM agentsをご覧ください。

また、ブラウザからもカスタムイベントを送れるようです。そのための、JavaScript の API も用意されています。Inserting custom events and attributes via the Insights JavaScript API を参考にしてみてください。

ビュー

送信されたカスタムイベントは、Insights の Data Explorer 上で確認できます。もちろん直接 NRQL 書いてもいいけど。

スクリーンショット 2015-12-07 22.01.28.png

NRQL でも eventType の "Purchase" を from に指定して、簡単に確認できます。

スクリーンショット 2015-12-07 22.05.50.png

おわりに

どうでしたでしょうか?カスタムイベントのイメージが湧いたでしょうか。最初にも書きましたが、これは使い方しだいで、ビジネス分析が非常に簡単に素早く行えるようになります。是非、使ってみてください。

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
ユーザーは見つかりませんでした