New Relic は数年前からネイティブ OTLP 取り込みをサポートしてきました。 時々発生するサポートケースを処理する過程で、ユーザーが直面する一般的な問題について学びました。 一部の人にとっては、問題は簡単に特定して解決できます。 インターネットは信頼性が低く、顧客、New Relic、どちらにも制御できないパブリック ネットワーク インフラストラクチャなど、さまざまな関係者の制御下にある多くのコンポーネント (ソフトウェア、ネットワーク、ハードウェアなど) が関係していることを考えると、その他の攻撃は非常に困難です。 非常に複雑で、設定や障害箇所が多いため、どこに問題があるのか、どのように対処するのが最善なのかを判断することが難しい場合があります。
サポート ケースの処理には時間がかかり、顧客 (そして New Relic) にとってイライラすることもあります。 そのため、共通の理解を確立し、可能な場合は問題を自己診断して修正するためのツールを提供するために、このトラブルシューティング ガイドを作成しました。
まず、 New Relic OTLP 設定の要件と推奨事項を確認してください。 これには、New Relic で OTLP を使用することを検討しているすべての人が知っておくべき重要なアドバイスとコンテキストが含まれています。
次に、以下のセクションを参照してください。
- 一般的な トラブルシューティング: 一般的な OTLP の問題のトラブルシューティング
- 問題カタログ: 一般的な顧客の問題と軽減手順
一般的なトラブルシューティング
New Relic OTLP エンドポイントで問題が発生した場合は、まず次の基本的なトラブルシューティング手順に従ってください。 サポート チケットを開くことになった場合、最初に次のことをお尋ねします。
- 診断ログを有効にします。 発生する可能性のあるエラーの詳細を確認できるように、OTLP クライアントでログ記録が有効になっていることを確認します。 ログを有効にするメカニズムは実装によって異なります。 関連するドキュメントを参照してください。
- New Relic の OTLP エンドポイントに到達可能であることをテストします。 問題のマシンから簡単なシェルコマンド
curl http://otlp.nr-data.net
を実行すると、ローカルネットワークの設定に問題があるかどうか(つまり、 ファイアウォールの制限により、New Relic への接続が妨げられています。 NrIntegrationError
イベントを確認します。 New Relic OTLP インジェストは、成功ステータス コードを返す前に、最小限の検証を同期的に実行します。 アプリケーションログにエクスポート エラーの兆候が見られず、 New Relicにデータが表示されない場合は、NrIntegrationError
をクエリしてみてください。 非同期検証中に検出されたデータに問題がある可能性があります。- 問題が局所的であるかどうかを判断します。 多くの場合、エラーは特定のアプリケーションまたは環境に限定されます。 このような場合、問題のある領域と正常に機能している領域の違いを評価すると役立ちます。
- 無効なAPIキーの兆候を探します。 New Relic OTLP エンドポイントでは、
api-key
ヘッダーを設定する必要があります。 無効または欠落しているAPIキーは、HTTP 403 または 401 ステータス コード、あるいは gRPC の Unauthenticated または PermissionDenied ステータス コードで表示される一般的な問題です。 これらが表示された場合は、 APIキーが有効であり、適切に設定されていることを確認してください。 - 再試行後にエクスポートが成功したかどうかを確認します。 再試行を有効にすることをお勧めします。エクスポートの試行は、最初は一時的なエラーで失敗することがありますが、再試行後に成功することが予想されます。 ただし、 SLA はあります。 一時的なエラーが頻繁に発生し、SLA を超えていると思われる場合は、サポート ケースを開いてください。
- 一時的なエラーが再試行されていない兆候がないか確認します。 最善の努力を払っているにもかかわらず、New Relic OTLP エンドポイントが一時的なエラーに対して再試行不可能なステータス コードを返すという稀なケースが発生する可能性があります。 このようなシナリオに遭遇したと思われる場合は、サポート ケースを開いてください。
発行カタログ
以下の表は、 New Relic OTLP インテグレーションでお客様が遭遇した問題をまとめたものです。 多くは適切な設定を行えば簡単に解決できます。 フィンガープリント列には、アプリケーションが特定のクラスの問題に遭遇したときの一般的なログが表示されます。 軽減手順については、 Known resolution [既知の解決策]およびNotes [注記]の 列を参照してください。
OTLP プロトコル バージョン | タイプ | 言語 / エコシステム | 指紋 | 既知の解決策 | メモ |
---|---|---|---|---|---|
HTTP | 401 - 権限がありません | Java | io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. Server responded with HTTP status code 401. | APIキーを含める | api-key ヘッダーがありません |
HTTP | 401 - 権限がありません | コレクター | Exporting failed. The error is not retryable. Dropping data. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "Permanent error: error exporting items, request to https://otlp.nr-data.net/v1/traces responded with HTTP Status Code 401, Message=, Details=[]", "dropped_items": 4} | APIキーを含める | api-key ヘッダーがありません |
HTTP | 401 - 権限がありません | Go | failed to upload metrics: failed to send metrics to https://otlp.nr-data.net/v1/metrics: 401 Unauthorized | APIキーを含める | api-key ヘッダーがありません |
HTTP | 403禁止します | Java | io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. Server responded with HTTP status code 403. | APIキーを確認する | api-key ヘッダーが無効です |
HTTP | 403禁止します | Java | Exporting failed. The error is not retryable. Dropping data. {"kind": "exporter", "data_type": "traces", "name": "otlphttp", "error": "Permanent error: error exporting items, request to https://otlp.nr-data.net/v1/traces responded with HTTP Status Code 403, Message=, Details=[]", "dropped_items": 14} | APIキーを確認する | api-key ヘッダーが無効です |
HTTP | 403禁止します | Go | traces export: failed to send to https://otlp.nr-data.net/v1/traces: 403 Forbidden | APIキーを確認する | api-key ヘッダーが無効です |
HTTP | 403禁止します | .NET | Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/v1/traces}{System.Net.Http.HttpRequestException: Response status code does not indicate success: 403 (Forbidden). | APIキーを確認する | api-key ヘッダーが無効です |
HTTP | タイムアウト | Java | io.opentelemetry.exporter.internal.http.HttpExporter - Failed to export spans. The request could not be executed. Full error message: timeout | バッチ処理/タイムアウトの調整 | エクスポートがタイムアウトした後に発生します。 タイムアウト設定とクライアント ネットワークの状態を確認します。 クライアント側のネットワークと構成を除外した場合は、サポート ケースを開いてください。 |
HTTP | タイムアウト | コレクター | max elapsed time expired failed to make an HTTP request: Post \"https://otlp.nr-data.net/v1/traces\": context deadline exceeded (Client.Timeout exceeded while awaiting headers) | バッチ処理/タイムアウトの調整 | 通常、再試行が失敗し、エクスポートがタイムアウトした後に発生します。 クライアント ネットワーク、クライアントの再試行/タイムアウト設定、またはNew Relicネットワーク/サーバーに関連している可能性があります。 クライアント側のネットワークと設定を除外した場合は、サポート ケースを開いてください。 |
HTTP | タイムアウト | Go | failed to upload metrics: context deadline exceeded: retry-able request failure | バッチ処理/タイムアウトの調整 | エクスポートがタイムアウトした後に発生します。 タイムアウト設定とクライアント ネットワークの状態を確認します。 クライアント側のネットワークと構成を除外した場合は、サポート ケースを開いてください。 |
HTTP | レート制限 | コレクター | Exporting failed. Will retry the request after interval. {"kind": "exporter", "data_type": "metrics", "name": "otlphttp", "error": "Throttle (29s), error: error exporting items, request to https://otlp.nr-data.net:443/v1/metrics responded with HTTP Status Code 429", "interval": "29s"} | バッチ処理の調整 | レート制限を超えました。 バッチ処理設定を調整してリクエストレートを減らします。 |
gRPC | コード 2 - 不明 タイムアウト | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 2. Error message: timeout | バッチ処理/タイムアウトの調整 | エクスポートがタイムアウトした後に発生します。 タイムアウト設定とクライアント ネットワークの状態を確認します。 クライアント側のネットワークと構成を除外した場合は、サポート ケースを開いてください。 |
gRPC | コード 2 - 不明 HTTP 500 | コレクター | rpc error: code = Unknown desc = unexpected HTTP status code received from server: 500 (Internal Server Error); malformed header: missing HTTP content-type | New Relic ネットワーク ベンダーは、一時的なエラーに対して再試行不可能なステータス コードを生成しました。 これが繰り返し発生する場合は、サポート ケースを開いてください。 | |
gRPC | コード 2 - 不明 HTTP 530 | コレクター | rpc error: code = Unknown desc = unexpected HTTP status code received from server: 530 (); transport: received unexpected content-type \"text/html; charset=UTF-8\" | New Relic ネットワーク ベンダーは、一時的なエラーに対して再試行不可能なステータス コードを生成しました。 これが繰り返し発生する場合は、サポート ケースを開いてください。 | |
gRPC | コード 4 - 期限超過 | コレクター | rpc error: code = DeadlineExceeded desc = context deadline exceeded | バッチ処理/タイムアウトの調整 | 通常、再試行が失敗し、エクスポートがタイムアウトした後に発生します。 クライアント ネットワーク、クライアントの再試行/タイムアウト設定、またはNew Relicネットワーク/サーバーに関連している可能性があります。 クライアント側のネットワークと設定を除外した場合は、サポート ケースを開いてください。 |
gRPC | コード 7 - 認証されていません | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 7. | APIキーを含める | api-key ヘッダーがありません |
gRPC | コード 7 - 認証されていません | .NET | Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/}{Grpc.Core.RpcException: Status(StatusCode="Unauthenticated", Detail="") | APIキーを含める | api-key ヘッダーがありません |
gRPC | コード 8 - リソース不足 | コレクター | rpc error: code = ResourceExhausted desc = Too many requests", "dropped_items": 1024 | バッチ処理の調整 | レート制限を超えました。 バッチ処理設定を調整してリクエストレートを減らします。 |
gRPC | コード 13 - 内部 | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 13. | 診断するには情報が不十分です。 New Relic ネットワーク ベンダーが一時的なエラーに対して再試行不可能なステータス コードを生成した可能性があります。 これが繰り返し発生する場合は、サポート ケースを開いてください。 | |
gRPC | コード 13 - 内部 HTTP 400 | コレクター | rpc error: code = Internal desc = unexpected HTTP status code received from server: 400 (Bad Request) | New Relic ネットワーク ベンダーは、一時的なエラーに対して再試行不可能なステータス コードを生成しました。 これが繰り返し発生する場合は、サポート ケースを開いてください。 | |
gRPC | コード 14 - 利用不可 接続リセット | コレクター | rpc error: code = Unavailable desc = error reading from server: read tcp 100.127.0.171:47470->162.247.241.110:4317: read: connection reset by peer | チューニング再試行 | 再試行すれば解決するはずです。 コレクターに再試行バックプレッシャーを処理するのに十分なリソースがあることを確認します。 |
gRPC | コード 14 - 利用不可 HTTP 502 | コレクター | rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 502 (Bad Gateway); transport: received unexpected content-type "text/html" | チューニング再試行 | 再試行すれば解決するはずです。 コレクターに再試行バックプレッシャーを処理するのに十分なリソースがあることを確認します。 |
gRPC | コード 14 - 利用不可 HTTP 503 | コレクター | rpc error: code = Unavailable desc = unexpected HTTP status code received from server: 503 (Service Unavailable) | チューニング再試行 | 再試行すれば解決するはずです。 コレクターに再試行バックプレッシャーを処理するのに十分なリソースがあることを確認します。 |
gRPC | コード 16 - 権限が拒否されました | Java | io.opentelemetry.exporter.internal.grpc.GrpcExporter - Failed to export spans. Server responded with gRPC status code 16. | APIキーを確認する | api-key ヘッダーが無効です |
gRPC | コード 16 - 権限が拒否されました | .NET | Exporter failed send data to collector to {0} endpoint. Data will not be sent. Exception: {1}{https://otlp.nr-data.net:4317/}{Grpc.Core.RpcException: Status(StatusCode="PermissionDenied", Detail="") | APIキーを確認する | api-key ヘッダーが無効です |