環境でアウトバウンドトラフィックを企業プロキシ経由でルーティングしている場合、そのプロキシ経由でOTLPテレメトリーを送信するようにNew Relic eBPF agentを設定できます。このページでは、LinuxホストおよびKubernetesクラスタでのプロキシサポートの設定方法、プロキシサーバーの要件、および一般的な問題のトラブルシューティング方法について説明します。
重要
eBPF agentは、http://スキームを使用するHTTP CONNECTプロキシのみをサポートします。gRPCの制限により、エージェントはhttps://スキーム(プロキシへの直接のTLS暗号化接続)をサポートしていません。ただし、テレメトリーデータは、エージェントとNew Relic OTLPエンドポイント間で常にエンドツーエンドでTLS暗号化されます。http://プレフィックスは、エージェントがプロキシと通信してトンネルを確立する方法のみを決定します。プロキシ自体は暗号化されたトラフィックのみを認識し、お客様のデータにアクセスすることは一切ありません。
プロキシサポートの仕組み
eBPF agentはgRPCの組み込みHTTPプロキシサポートを使用します。プロキシを設定すると、エージェントは:
- プロキシサーバーに接続します。
- New Relic OTLPエンドポイントへのトンネルを開くための
HTTP CONNECTリクエストを送信します。 - そのトンネルを介してOTLPエンドポイントとTLSハンドシェイクを実行します。
- 資格情報を提供した場合、
Proxy-Authorization: Basic <base64>ヘッダーを追加します。
プロキシサーバーの要件
プロキシサーバーは以下をサポートしている必要があります:
- HTTP
CONNECTメソッド(OTLPエンドポイントへのTLSトンネリングに必要)。 - ポート
443へのトンネリング(OTLPエンドポイントはHTTPSを使用します)。 - 認証付きプロキシアクセスを使用する場合は、HTTP基本認証。
サポートされているプロキシサーバー
プロキシ | サポート対象? | メモ |
|---|---|---|
Squid | はい | 推奨。
を標準でサポートしています。 |
Apache
| はい |
の設定が必要です。 |
nginx | モジュールを使用 |
モジュールが必要です。 |
HAProxy | いいえ | HAProxyはリバースプロキシ/ロードバランサーであり、フォワードプロキシの
メソッドをサポートしていません。 |
ほとんどの企業プロキシ | 通常は「はい」です | ITチームまたはネットワークチームにご確認ください。 |
資格情報の文字制限
注意
プロキシユーザー名に大文字が含まれている場合、またはユーザー名やパスワードに特殊文字が含まれている場合、プロキシ認証はエラーを出さずに失敗します。eBPF agentは起動時にこれらのケースを捕捉してエラーをログに記録するため、サイレント障害のデバッグに追われることはありません。
プロキシの認証情報を設定する場合は、次の文字のみを使用してください:
- ユーザー名: 小文字(
a–z)、数字(0–9)、ハイフン(-)、アンダースコア(_)、ピリオド(.)、およびチルダ(~)。大文字は許可されていません。 - パスワード: 英字(
a–z、A–Z)、数字(0–9)、ハイフン(-)、アンダースコア(_)、ピリオド(.)、およびチルダ(~)。
ユーザー名またはパスワードには、次の文字は許可されていません:@、:、/、?、#、[、]、!、$、&、'、(、)、*、+、,、;、=、%、スペース、およびその他の特殊文字。
既存のプロキシ資格情報に許可されていない文字が使用されている場合は、小文字の英数字のユーザー名とシンプルなパスワードを使用するeBPF agent専用のプロキシアカウントを作成するように、プロキシのアドミニストレーターに依頼してください。
設定の優先順位
複数のソースでプロキシが定義されている場合、エージェントは次の順序でそれらを適用します:
otlpProxy.url— 完全なプロキシURL。otlpProxy.*— 個別のプロキシ設定(host、port、scheme、user、password)。
この優先順位は、LinuxホストとKubernetesデプロイメントの両方に適用されます。
プロキシの設定
Kubernetesクラスタの場合は、Helmvalues.yamlファイルでプロキシを設定します。
otlpProxy:ブロックをvalues.yamlに追加します:
otlpProxy: host: "proxy.corporate.com" port: 8080 scheme: "http" user: "myuser" password: "mypassword" url: "" existingSecret: ""または、完全なプロキシURLを指定するには、url:をhttp://[user:pass@]host:portに設定します。エージェントはhttpスキームのみをサポートします。
本番環境のデプロイメントでは、user:とpassword:をインラインで設定するのではなく、認証情報をKubernetesシークレットに保存してください。proxy-user および proxy-password キーを使用してシークレットを作成し、existingSecret: を介して参照します:
$kubectl create secret generic ebpf-proxy-creds \> --namespace newrelic \> --from-literal=proxy-user=myuser \> --from-literal=proxy-password=mypassword次に、変更を適用します:
$helm upgrade --install nr-ebpf-agent newrelic/nr-ebpf-agent -n newrelic --values values.yamlotlpProxy.*パラメーターの完全なリストについては、KubernetesインストレーションページのK8s設定パラメーターを参照してください。
Linuxホストの場合は、newrelic-ebpf-agent.yaml設定ファイルでプロキシを設定します。
/etc/newrelic-ebpf-agent/newrelic-ebpf-agent.yamlにotlpProxy:ブロックを追加します。
otlpProxy: host: "proxy.corporate.com" port: 8080 scheme: "http" user: "myuser" password: "mypassword" url: ""または、完全なプロキシURLを指定するには、url:をhttp://[user:pass@]host:portに設定します。エージェントはhttpスキームのみをサポートします。
ファイルを保存した後、その権限を制限してエージェントを再起動します:
$sudo chmod 600 /etc/newrelic-ebpf-agent/newrelic-ebpf-agent.yaml$sudo systemctl restart newrelic-ebpf-agentotlpProxy.*パラメーターの完全なリストについては、Linuxインストレーションページの設定パラメーターを参照してください。
プロキシ設定を確認します
プロキシを設定した後、エージェントが期待どおりにプロキシを使用していることを確認します。
エージェントログを確認する
エージェントログでプロキシ関連のメッセージを確認します:
$journalctl -u newrelic-ebpf-agent | grep -i proxyこれらのメッセージのいずれかを探す:
Using proxy for OTLP endpoint: <endpoint> via http://<host>:<port>— プロキシが有効になっています。Proxy authentication enabled (username: <user>)— 基本認証が設定されています。Direct connection to OTLP endpoint (no proxy configured)— プロキシは使用されていません。
プロキシ接続のテスト
curlを使用して、プロキシがHTTP CONNECTメソッドをサポートし、New Relic OTLPエンドポイントに到達できることを確認します:
$# Unauthenticated proxy$curl -v -x http://proxy.example.com:8080 https://otlp.nr-data.net$
$# Authenticated proxy$curl -v -x http://user:pass@proxy.example.com:8080 https://otlp.nr-data.net成功レスポンスには以下が含まれます:
< HTTP/1.1 200 Connection established* Proxy replied 200 to CONNECT request* CONNECT phase completed!エージェントがプロキシ経由でルーティングされない場合、またはエラーが発生した場合は、eBPFプロキシのトラブルシューティングを参照してください。
セキュリティに関する懸念事項
エージェントをプロキシ経由でルーティングするときは、次の点に注意してください。
- テレメトリーデータは、エンドツーエンドでTLS暗号化された状態が維持されます。プロキシには、OTLPエンドポイントへの暗号化されたトンネルのみが見えます。データにアクセスすることは決してありません。
- エージェントが
https://プロキシスキームをサポートしていないため、プロキシの認証情報はプレーンテキストでプロキシに送信されます。プロキシ認証は、エージェントとプロキシ間の信頼されたネットワーク上でのみ使用してください。エージェントとプロキシ間で暗号化された通信が必要な場合は、localhostでプロキシを実行するか、VPNを使用してください。 - エージェントがパスワードをログに書き込むことはありません。デバッグのため、ユーザー名が
Proxy authentication enabled (username: <user>)などのログ行に表示される場合があります。 - プロキシパスワードを
values.yamlファイルやソース管理に含めないようにするため、Kubernetesデプロイメントではインラインの認証情報ではなくexistingSecretを使用する必要があります。