カスタムイベントを設定してみる #New Relic

カスタムイベントを設定してみる #New Relic

New Relicを技術監視だけでなくビジネス分析にも活用しませんか?カスタムイベントを設定していく。
Clock Icon2025.07.09

おはようございます( ◜◡◝ )
ゲームソリューション部/業務効率化ソリューション部の きだぱん です。

今回はNew Relicのカスタムイベント機能を試してみたいと思います。

New Relicについて

New Relic は、オンプレミスやクラウドを問わず、あらゆるシステムメトリクスを収集し、ボトルネックの特定や障害対応を高速化します。
アプリやインフラの性能、ユーザー側のレスポンスまでリアルタイムで一元的にモニタリング可能で、顧客体験の向上、クラウドコストの削減、デジタルビジネスの成功に不可欠なすべてのエンジニアリングプロジェクトをサポートしてくれる製品です。

https://classmethod.jp/partner/newrelic/?inquiry_page=https://classmethod.jp/partner/newrelic/

カスタムイベントについて

カスタムイベントは、New Relicが自動で収集するデータ(例:レスポンスタイムやエラーステータス)以外に、アプリケーションやビジネスに特有の出来事を記録するために使用します。

「この瞬間のこの情報を知りたい、記録したい」という任意のデータを、好きなタイミングでNew Relicに送信するための機能です。

通常のAPMツールは、リクエストの処理時間やデータベースの呼び出し回数といった、技術的なパフォーマンス指標を自動で追跡します。
しかし、「どのくらいのユーザーが新しい機能Aを使ったか?」や「特定のエラーがどのプランの顧客で多発しているか?」といった、ビジネスロジックに深く関わる情報は自動では取得できません。カスタムイベントは、このような独自のデータを収集する手段を提供します。

例えば、

  • ユーザー行動の追跡
    • ユーザーが新規登録した
    • 商品をカートに追加した、または購入した
    • 特定のボタンをクリックした
  • ビジネス指標の監視
    • ビデオがエンコード完了した
    • 新しいサブスクリプションが開始された
    • 特定の料金プランのAPI利用回数
  • デバッグや運用のための情報
    • 機能フラグが有効/無効に切り替わった
    • バックグラウンドジョブが開始または完了した
    • 特定の条件でキャッシュがクリアされた
      などなど

これらのデータをNew Relicに送信することで、後からクエリ(NRQL)を使って分析したり、ダッシュボードで視覚化したり、特定のアクションに基づいてアラートを設定したりすることが可能になります。

設定してみる

APIキーを作成し、作業を行っていきます。

New Relic画面のユーザーメニューから API Keys から、Create a key へ進みます。

NRkdpn07

  • Account:どのNew RelicアカウントでAPIキーを作成するかを選択します。

  • Key type (キーの種類)
    Ingest keys:データ取り込み用
    License: APMエージェント(サーバーサイドのアプリケーション監視)、インフラストラクチャ監視、ログ送信など。
    Browser: Webサイトのフロントエンドパフォーマンスのデータを送信
    Mobile: モバイルアプリのパフォーマンスデータを送信
    User keys:New Relicに保存されているデータをAPI経由で取得したり、アラートやダッシュボードの設定を変更したりする

  • Name (名前)

  • Notes (メモ)

を選択、入力し、作成します。
今回は Ingest - License を選択します。

NRkdpn072

API Keyの詳しい説明はこちらをご覧ください。
https://docs.newrelic.com/docs/apis/intro-apis/new-relic-api-keys/

作成すると、APIキーが表示されます。

APIキーが準備できたら、スクリプトを用意します。

※今回はmacOS環境での作業になります。

送信したいデータをJSON形式で作成します。
JSONのフォーマット仕様に沿って、作成します。

属性 内容
eventType イベント名
値の形式 ・数値: "label":value<br>・文字列: "label":"value"
データ型 ・キー/値ペアのみサポート。<br>・値は文字列または数値のみ使用可能。<br>・マップ、オブジェクト、配列は使用不可。
数値の扱い ・パフォーマンスのため、数値 (123) と文字列 ("123") は厳密に区別される。<br>・保存可能な数値は最大64ビット。超過分は切り捨て。
日付 フォーマットされていないUnixタイムスタンプ(秒またはミリ秒)を使用する
時刻 ・デフォルト時刻はAPIへの送信時刻。<br>・任意の時刻を指定するには timestamp 属性を使用する

https://docs.newrelic.com/jp/docs/data-apis/ingest-apis/event-api/introduction-event-api/#instrument

今回は、JSON例を少し変えて入力します。

{
"eventType":"<指定のイベントタイプ>",
"account": <アカウント指定>,
"comment": 123456,
}

このJSONファイルを送信するためのcurlコマンドを実行します

gzip -c example_events.json | curl -X POST -H "Content-Type: application/json" \
-H "Api-Key: YOUR_LICENSE_KEY" -H "Content-Encoding: gzip" \
https://insights-collector.newrelic.com/v1/accounts/YOUR_ACCOUNT_ID/events --data-binary @-

送信が完了したら、データが正しくNew Relicに届いているか確認しましょう。
メニューから Metrics & Events をクリックします。
NRkdpn073
Events を選択し、Event type のリストから、先ほど送信したものを選択します。
NRkdpn077

無事に表示されました。

まとめ

今回は、New Relicのカスタムイベント機能を使って、独自のデータを送信してみました。
手間をかけず、簡単にアプリケーション固有の情報をNew Relicに記録できることがお分かりいただけたかと思います。

New Relicに関するブログも沢山展開されていますので、是非こちらもご覧ください。
https://dev.classmethod.jp/tags/new-relic/
この記事がどなたかのお役に立てば幸いです。以上、きだぱんでした!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.