APM:カスタムイベントをレポートする

APMがある場合、カスタムイベントデータをレポートできます。このデータを使用してNew Relicでクエリを行えます。

関連ドキュメント:

エージェントAPIによって送信されたカスタムイベントは、高セキュリティモードとの互換性がありません。

データに関する検討事項

New Relicエージェントは、通常の収集サイクルの一環として、リアルタイムストリーミングをサポートしているエージェントバージョンについて、5秒おきにイベントデータをNew Relicに送信します。

沢山のイベントを送信すると、エージェントのメモリオーバーヘッドが増加することがあります。New Relicは、5秒ごとに833件のカスタムイベントの上限を強制実行します。また、サイズが1MB以上の投稿は、カスタムイベントの制限に関わらず記録されません。

詳しくは、New Relic UniversityのAdding Custom Attributes with the Ruby Agent APIチュートリアルを参照してください。または、完全なオンラインコースのAPMによるカスタムデータに直接アクセスしてください。

カスタムイベントを記録する

カスタムイベントを記録するには、ご利用のNew Relic言語エージェントの手順に従ってください。

C SDKによってモニターされるアプリケーションにカスタムイベントを追加するには、トランザクションを開始し、newrelic_create_custom_eventおよびnewrelic_record_custom_event機能を使用します。詳細については、C SDK API使用ガイドを参照してください。

Goエージェントによってモニターされるアプリケーションにカスタムイベントを追加するには、RecordCustomEventを使用します。

カスタムイベント収集は、Javaエージェントのバージョン3.13.0以上ではデフォルトで有効になっています。カスタムイベントを送信するには、RecordCustomEventを呼び出します。例えば:

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

最初の引数はイベントタイプの名前を定義しており、2つ目の引数はカスタムイベントの属性を伴うマップです。イベント属性は文字列または数値にする必要があります。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。

Javaエージェントによって記録されるイベントの最大数は、newrelic.ymlの設定パラメーターで変更できます。

1分あたりに記録するイベントの最大数を整数で指定してください。たとえば、デフォルト数である10000イベントよりも少ない数を送信する場合は:

custom_insights_events:
  max_samples_stored: 5000

カスタムイベントを完全に無効化するには、newrelic.ymlに以下を追加します:

custom_insights_events:
  enabled: false

Javaエージェントのバージョンが4.1.0より古いものに関しては、以下のYAML設定を使用してください:

custom_insights_events.enabled: true
custom_insights_events.max_samples_stored: 5000

カスタムイベント収集は、NETエージェントのバージョン4.6.29.0以上においてデフォルトで有効になっています。カスタムイベントを送信するには、単にRecordCustomEvent()を呼び出します。例えば:

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

最初の引数はイベントタイプの名前を定義しており、2つ目の引数はご利用のカスタムイベントの属性を伴うIEnumerableです。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。

カスタムイベントは、newrelic.configcustomEvents.enabledfalseに設定することによって完全にオフにできます。

カスタムイベント収集は、Node.jsエージェントのバージョン1.15.0以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPIを呼び出すだけです。例えば:

recordCustomEvent(eventType, attributes)

recordCustomEventを使用して、イベントベースのメトリックを記録します。通常、これは特定の期間と関連しています。eventTypeは、255文字未満の英数文字列でなくてはいけません。属性は、キー/値ペアのオブジェクトでなくてはいけません。キーは255文字未満でなくてはならないほか、値は文字列、数字、あるいはブール値でなくてはいけません。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。

カスタムイベントを完全に無効化するには、custom_insights_events.enabled: falsenewrelic.jsに追加します。

カスタムイベント収集は、PHPエージェントのバージョン4.18以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPI関数を呼び出すだけです。例えば:

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

最初の引数はイベントタイプの名前を定義しており、2つ目の引数はご利用のカスタムイベントの属性を伴う配列です。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。

デフォルトでは、1分あたりに記録されるカスタムイベントの数は10,000です。この設定は変更できません。

カスタムイベントを完全に無効化するには、newrelic.custom_insights_events.enabled = falsenewrelic.iniに追加し、エージェントを再起動します。

カスタムイベント収集は、Pythonエージェントのバージョン2.60.0.46以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPIを呼び出すだけです。例えば:

newrelic.agent.record_custom_event(event_type, params, application=None)

event_typeは、カスタムイベントの名前(またはタイプ)を定義します。カスタムイベントの属性は、paramsキーワード引数を通してディクショナリとして渡される必要があります。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。event_typeparamsにおける制限および制約については、制限と禁止文字、および予約語を参照してください

コールが監視対象Webリクエスト、またはバックグラウンドタスクとは関係なく呼び出された場合、そのコールは無視されますが、applicationキーワード引数が提供されており、かつ例外が記録されるべきアプリケーションに対応するアプリケーションオブジェクトが提供されている場合を除きます。適切なアプリケーションオブジェクトは、newrelic.agent.application()関数を使用して取得できます。

カスタムイベントを完全に無効化するには、newrelic.ini設定ファイル内でcustom_insights_events.enabledFalseに設定します。

カスタムイベント収集は、Rubyエージェントのバージョン3.9.8.273以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPIを呼び出すだけです。例えば:

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

最初の引数はイベントタイプの名前を定義しており、2つ目の引数はご利用のカスタムイベントの属性を伴うハッシュです。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。

Javaエージェントによって記録されるイベントの最大数は、newrelic.ymlの設定パラメーターで変更できます:

  1. custom_insights_events.max_samples_stored:を追加しますを設定ファイルに追加します。
  2. 1分あたりに記録するイベントの最大数を整数で指定してください。例えば、1分あたりに最大で5000のイベントを送信できるようにするには、以下を追加してください:

    custom_insights_events.max_samples_stored: 5000

カスタムイベントを完全に無効化するには、custom_insights_events.enabled: falsenewrelic.ymlに追加します。

タイムスタンプ

エージェントを介して収集および記録されたイベントには、タイムスタンプを指定することができません。エージェントは、イベントがAPIを介して記録された時間を基に、自動的にタイムスタンプを割り当てます。

上限値および文字の制限

サイズ制限、データタイプ、そして構文条件の命名に関しては、 カスタムイベントのデータ要件 を参照してください。

予約語

カスタム属性を作成する前に、New RelicのNRQLが使用する予約語のリストをご確認ください。確認を行わない場合、予期しない結果が発生する可能性があります。

その他のヘルプ

さらに支援が必要な場合は、これらのサポートと学習リソースを確認してください: