エージェントとエージェントでは、報告できるイベントの数に制限があります。 このドキュメントでは次の内容について説明します。
- イベント報告書の制限が必要な理由
- サンプリングの仕組み
- サンプリングされたデータの扱い方、理解の仕方
イベントとメトリクスの違い
このドキュメントでは、イベントデータの制限と、その制限がどのようにサンプリングにつながるかについて説明します。まず、この2つのタイプのデータの違いを理解するのに役立つかもしれません。
Metrics
: 時間の経過に伴う集計された測定値。 例: 1 分間の時間範囲での平均応答時間、時間の経過に伴うスループット、時間の経過に伴う CPU 使用率。
Events
: 特定の瞬間に発生する個別のイベント。 例: ログやエラーが報告されたり、設定が変更されたりします。 一部のイベントは、時間の経過に伴って集計され、メトリクス (時間の経過に伴うエラーの数など) を形成します。
メトリクスはシステムの長期的なパターンを認識するのに役立ち、イベントはそのパターンの原因を詳細に調べるのに役立ちます。メトリクスは時間的に集約されているため、システムの動作の傾向や変化を見極めるのに役立ちます。イベントの集計値を表すメトリクス(HTTPレスポンスタイムのメトリクスなど)では、個々のイベントによって何が起こったのかを詳細に知ることができ、カーディナリティの高い属性(アカウントやユーザーIDなど)によってファセットすることができます。
イベントのサンプリングが必要な理由
当社のAPMエージェントとモバイルエージェントは、 収穫サイクルごとに報告できるイベントの数に制限を設けています 。これは、もし制限がない場合、非常に多くのイベントが送信されると、お客様のアプリケーションやNew Relicのパフォーマンスに影響を与える可能性があるためです。制限に達すると、エージェントはイベントのサンプリングを開始します。エージェントによって制限値は異なりますが、目標はハーベストサイクル全体から代表的なサンプルを得ることです。
また、New Relic に接続できない場合、エージェントがサンプリングすることがあります。エージェントがNew Relicに接続できない場合、エージェントはローカルにデータを保存し続けます。しかし、最終的に送信されるペイロードのサイズを制限しなければなりません。このため、切断期間中にイベントをサンプリングします。接続されていない期間が長ければ長いほど、より多くのイベントをサンプリングします。
サンプリングの影響
サンプリングの一つの結果として、 未サンプリングのメトリックデータ とサンプリングされたイベントデータの間に不一致が生じることがあります。その例を挙げます。
- サンプリングされていないメトリックデータを表示する APM チャートは、サンプリングされたイベントデータの同等の NRQL クエリよりも高いスループットを示す場合があります。メトリックのタイムスライスデータとイベントデータの違いについては、 データタイプ を参照してください。
- New Relic 以外のモニタリングサービスでは、New Relic とは異なる結果が表示されることがあります。
キャップされ、サンプリングの対象となるイベントは以下の通りです。
Transaction
TransactionError
Span
( 分散トレースサンプリングを参照)- エージェントAPIを介して報告されるカスタムイベント(例:.NETエージェントの RecordCustomEvent )。
Mobile
MobileRequest
MobileCrash
MobileHandledException
重要
APMでは、データを照会する際に、 サンプリングを補正することができます 。
サンプリング方法の変更
サンプリングの方法を変更する前に、以下の注意点と推奨事項をお読みください。
- より多くのイベントを報告すると、エージェントはより多くのメモリを使用することになります。
- 通常、エージェントのイベント報告の上限を上げることなく、必要なデータを取得する方法があります。
- ペイロードサイズの制限は1MB(10^6バイト)(圧縮)であるため、イベント数は依然としてその制限の影響を受ける可能性があります。イベントがドロップされているかどうかを確認するには、エージェントログの413 HTTPステータスメッセージを参照してください。
サンプリングに影響を与える方法をご紹介します。
- ほとんどのエージェントには、サンプリングされたトランザクションの制限を変更するための構成オプションがあります (例: Java エージェントの
max_samples_stored
または Android モバイル エージェントのsetMaxEventPoolSize
)。 - 特定のアプリのアクティビティをサンプリングしないことが重要な場合は、 Event API を使用することができます。
- アプリケーションをより多くのインスタンスに展開することができます。制限はエージェントごとに行われるため、エージェントの数が多ければイベントの蓄積量も多くなります。
APM。サンプリングの補填
APMで報告されたイベントを照会する場合、 EXTRAPOLATE
を使用してサンプリングを補正できます。これにより、サンプリングされていないデータがどのように見えるかを概算できます。