APMがある場合、カスタムイベントデータをレポートできます。このデータを使用してNew Relicでクエリを行えます。
関連ドキュメント:
- 既存のイベントにカスタム属性を追加する
- イベントAPIを使用してカスタムイベントを送信(APMは不要)
エージェント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
-
C SDKによってモニターされるアプリケーションにカスタムイベントを追加するには、トランザクションを開始し、
newrelic_create_custom_event
およびnewrelic_record_custom_event
機能を使用します。詳細については、C SDK API使用ガイドを参照してください。 - Go
-
Goエージェントによってモニターされるアプリケーションにカスタムイベントを追加するには、
RecordCustomEvent
を使用します。 - Java
-
カスタムイベント収集は、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
-
カスタムイベント収集は、NETエージェントのバージョン4.6.29.0以上においてデフォルトで有効になっています。カスタムイベントを送信するには、単に
RecordCustomEvent()
を呼び出します。例えば:var eventAttributes = new Dictionary<String, Object>(); NewRelic.Api.Agent.NewRelic.RecordCustomEvent('MyCustomEvent', eventAttributes);
最初の引数はイベントタイプの名前を定義しており、2つ目の引数はご利用のカスタムイベントの属性を伴うIEnumerableです。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。
カスタムイベントは、
newrelic.config
でcustomEvents.enabled
をfalse
に設定することによって完全にオフにできます。 - Node.js
-
カスタムイベント収集は、Node.jsエージェントのバージョン1.15.0以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPIを呼び出すだけです。例えば:
recordCustomEvent(eventType, attributes)
recordCustomEventを使用して、イベントベースのメトリックを記録します。通常、これは特定の期間と関連しています。eventTypeは、255文字未満の英数文字列でなくてはいけません。属性は、キー/値ペアのオブジェクトでなくてはいけません。キーは255文字未満でなくてはならないほか、値は文字列、数字、あるいはブール値でなくてはいけません。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。
カスタムイベントを完全に無効化するには、
custom_insights_events.enabled: false
をnewrelic.js
に追加します。 - PHP
-
カスタムイベント収集は、PHPエージェントのバージョン4.18以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPI関数を呼び出すだけです。例えば:
newrelic_record_custom_event("WidgetSale", array("color"=>"red", "weight"=>12.5));
最初の引数はイベントタイプの名前を定義しており、2つ目の引数はご利用のカスタムイベントの属性を伴う配列です。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。
デフォルトでは、1分あたりに記録されるカスタムイベントの数は10,000です。この設定は変更できません。
カスタムイベントを完全に無効化するには、
newrelic.custom_insights_events.enabled = false
をnewrelic.ini
に追加し、エージェントを再起動します。 - Python
-
カスタムイベント収集は、Pythonエージェントのバージョン2.60.0.46以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPIを呼び出すだけです。例えば:
newrelic.agent.record_custom_event(event_type, params, application=None)
event_type
は、カスタムイベントの名前(またはタイプ)を定義します。カスタムイベントの属性は、params
キーワード引数を通してディクショナリとして渡される必要があります。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。event_type
とparams
における制限および制約については、制限と禁止文字、および予約語を参照してくださいコールが監視対象Webリクエスト、またはバックグラウンドタスクとは関係なく呼び出された場合、そのコールは無視されますが、
application
キーワード引数が提供されており、かつ例外が記録されるべきアプリケーションに対応するアプリケーションオブジェクトが提供されている場合を除きます。適切なアプリケーションオブジェクトは、newrelic.agent.application()
関数を使用して取得できます。カスタムイベントを完全に無効化するには、
newrelic.ini
設定ファイル内でcustom_insights_events.enabled
をFalse
に設定します。 - Ruby
-
カスタムイベント収集は、Rubyエージェントのバージョン3.9.8.273以上ではデフォルトで有効になっています。カスタムイベントを送信するには、関連のAPIを呼び出すだけです。例えば:
::NewRelic::Agent.record_custom_event('WidgetSale', color: 'red', weight: 12.5)
最初の引数はイベントタイプの名前を定義しており、2つ目の引数はご利用のカスタムイベントの属性を伴うハッシュです。必ず、作成する一意のイベントタイプ名の数を制限して、こうした名前を動的に作成しないよう注意してください。イベントタイプの名前の制限に関しては、 制限および禁止文字 ならびに 予約済みの言葉を参照してください。
Javaエージェントによって記録されるイベントの最大数は、
newrelic.yml
の設定パラメーターで変更できます:custom_insights_events.max_samples_stored:
を追加しますを設定ファイルに追加します。-
1分あたりに記録するイベントの最大数を整数で指定してください。例えば、1分あたりに最大で5000のイベントを送信できるようにするには、以下を追加してください:
custom_insights_events.max_samples_stored: 5000
カスタムイベントを完全に無効化するには、
custom_insights_events.enabled: false
をnewrelic.yml
に追加します。
タイムスタンプ
エージェントを介して収集および記録されたイベントには、タイムスタンプを指定することができません。エージェントは、イベントがAPIを介して記録された時間を基に、自動的にタイムスタンプを割り当てます。
上限値および文字の制限
サイズ制限、データタイプ、そして構文条件の命名に関しては、 カスタムイベントのデータ要件 を参照してください。
予約語
カスタム属性を作成する前に、New RelicのNRQLが使用する予約語のリストをご確認ください。確認を行わない場合、予期しない結果が発生する可能性があります。