独自のトレース実装を作成する場合は、 Trace APIを使用できます。このドキュメントでは、 newrelic
形式とも呼ばれる一般的な形式でトレースを送信する方法について説明します。(Zipkin 形式のデータを送信するには、 Zipkinを参照してください。)
始めましょう
Trace APIの使用方法はとても簡単です。
- 必要な形式 (この場合は
newrelic
形式) でトレース データを送信します。 - そのデータを適切な エンドポイントに送る 。
Trace API を使用する前に、Infinite Tracing を使用するかどうかを決定する必要があります。この点については、 Intro to Infinite Tracing および Sampling considerations をご覧ください。
Trace API の使用を開始するには、以下のいずれかの方法をとります。
- Infinite Tracing を使ってみませんか? Set up a trace observer の指示に従ってください。トレースオブザーバーを作成し、サンプルのペイロードをトレースオブザーバーのエンドポイントに送信する手順を説明しています。
- Infinite Tracingは不要ですか? サンプルペイロード を送信する方法をご覧ください(下記)。
サンプルトレースペイロードの送信(非Infinite Tracing)
以下では、 newrelic
形式を使用して、標準の ( Infinite Tracingではない) ペイロードを Trace API に送信する方法について説明します。
データをレポートするアカウントのを取得します。
そのキーを以下のJSONに挿入し、そのJSONを私たちのエンドポイントに送信します。 注:EUのNew Relicアカウントをお持ちの方は、代わりにEUのエンドポイント をご利用ください。
bash$curl -i -H 'Content-Type: application/json' \>-H 'Api-Key: YOUR_LICENSE_KEY' \>-H 'Data-Format: newrelic' \>-H 'Data-Format-Version: 1' \>-X POST \>-d '[${$"common": {$"attributes": {$"service.name": "Test Service A",$"host": "host123.example.com"$}$},$"spans": [${$"trace.id": "123456",$"id": "ABC",$"attributes": {$"duration.ms": 12.53,$"name": "/home"$}$},${$"trace.id": "123456",$"id": "DEF",$"attributes": {$"error.message": "Invalid credentials",$"service.name": "Test Service A",$"host": "host456.example.com",$"duration.ms": 2.97,$"name": "/auth",$"parent.id": "ABC"$}$}$]$}$]' 'https://trace-api.newrelic.com/trace/v1'テストが
HTTP/1.1 202 Accepted
を返した場合は、UIに移動して、スパン属性service.name = Test Service A
を使用したテスト データのクエリを確認します。ヒント
トレースは、トレースオブザーバーとトレースAPIの両方で処理されるため、最大で1分かかることがあります。
トレースAPIのペイロード(New Relicフォーマット)
Trace API JSON ペイロードはオブジェクトの配列であり、各オブジェクトは単一のトレースを表します。これらの各オブジェクトにはspans
キーが必要で、 common
キーが含まれる場合もあります。spans
(必須) にはオブジェクトの配列が含まれ、各オブジェクトはスパンを表します。common
(オプション) 複数のスパンで情報を共有します。
spans
配列の Span オブジェクト
フィールド | タイプ | description | 必須 | デフォルト |
---|---|---|---|---|
| ストリング | このスパンの一意の識別子。 | そう | 該当なし |
| ストリング | 1つのトレース内のすべてのスパンで共有される一意の識別子。 | そう | 該当なし |
| 長さ | ノー | UTCタイムゾーンでの現在時刻 | |
| 物体 | スパンに関する詳細を追加するキーの値のペアのセット。 | そう | 該当なし |
上記の必要なキーのないリクエストは拒否され、 NrIntegrationError
が生成されます。
common
オブジェクト (オプション)
フィールド | タイプ | description | 必須 | デフォルト |
---|---|---|---|---|
| 物体 | ペイロード内のスパンに関する共通の詳細を追加するキーと値のペアの任意のセット。スパンに | ノー | 該当なし |
おすすめの属性
必須ではありませんが、各スパンのattributes
オブジェクトでデータを最大限に活用するには、これらの属性を含める必要があります。
属性 | デフォルト | description |
---|---|---|
浮く | なし | スパンの長さをミリ秒単位で指定します。 |
ストリング | なし | このスパンの名前です。 |
ストリング | なし | このスパンの呼び出し元の ID。これがルート スパンの場合、値は |
ストリング | なし | このスパンを作成したエンティティの名前。値または空の文字列が指定されていない場合、スパンは「UNKNOWN」エンティティに割り当てられ、UI にそのように表示されます。UI で完全なエクスペリエンスを得るには、この値を指定する必要があります。 |
予約属性
これらの属性は現在、New Relic の内部使用のために予約されています。明示的にブロックされているわけではありませんが、使用しないことをお勧めします。
属性 | デフォルト | description |
---|---|---|
ストリング |
| これは |
ストリング |
| エンティティタイプは、サービスを想定しています。 |
ストリング | なし |
|
その他の属性
制限された属性を除いて、 common
または各スパン オブジェクトのattributes
オブジェクトに必要な任意の属性を追加できます。たとえば、 customer.id
やuser.id
などの属性を追加して、トレース データの分析に役立てることができます。
newrelic
形式を使用したトレース JSON の要件とガイドライン:
- 各JSONペイロードは、オブジェクトの配列です。
- 各オブジェクトには、必要な
spans
キーが含まれている必要があります。 - 各オブジェクトには、オプションの
common
キーを含めることができます。オブジェクト内の複数のスパンで情報を共有する場合は、これを使用します。 - スパン上のすべてのキーは、
common
ブロック内の同じキーよりも優先されます。 spans
キーの値は、span
オブジェクトのリストです。- 一部の属性は必須であり、オプションの
common
ブロックまたは各スパンに含める必要があります。 - 推奨属性およびカスタム属性は、オプションの
common
ブロックおよび/または各スパン内のattributes
という名前のキーの下にあるキーと値のペアのリストにオプションで含めることができます。
次の例POST
には 2 つのスパンがあり、どちらにも trace.id 12345
とカスタム属性host: host123.example.com
があります。最初のスパンにはparent.id
がないため、それがトレースのルートです。 2 番目のスパンのparent.id
は、最初のスパンの ID を指します。
[ { "common": { "attributes": { "host": "host123.example.com" } }, "spans": [ { "trace.id": "12345", "id": "abc", "timestamp": 1603336834823, "attributes": { "user.email": "bob@newr.com", "service.name": "my-service", "duration.ms": 750, "name": "my-span" } }, { "trace.id": "12345", "id": "def", "timestamp": 1603336834899, "attributes": { "parent.id": "abc", "service.name": "second-service", "duration.ms": 750, "name": "second-span" } } ] }]
New Relic でのスパンの表示方法を制御する方法 (エラーの追加やスパンをデータストアのスパンとして設定するなど) については、 スパンの装飾 を参照してください。
分散型トレーシングについてはこちらをご覧ください。
- Trace API のデータが UI のどこに表示されるかについて.
- スパンを装飾する方法をご紹介します よりリッチで詳細なUI体験を提供します。例えば、データストアのスパンを表示させたり、エラーを表示させたりすることができます。
- 一般的な データの制限、必要なメタデータ、および応答の検証については、 を参照してください。
- トレースデータが表示されない場合は、 トラブルシューティング を参照してください。