New Relic eBPF エージェントをKubernetesクラスタにインストールして、システム全体の健全性を監視できます。 eBPF エージェントは、コードの変更やデプロイ言語固有のエージェントを必要とせずに、アプリケーションのパフォーマンスを詳細に可視化します。
New Relic eBPF エージェントをインストールする あなたが始める前に KubernetesクラスタのeBPF 互換性と要件の ドキュメントに記載されている前提条件を満たす必要があります。
eBPF エージェントをインストールする eBPF エージェントをインストールするには:
New Relic のアカウントにログインします。
左側のナビゲーション ペイン > + Integration & Agents > eBPF Agent に移動します。
Select [アカウントの選択] 画面で、eBPF エージェントをインストールするアカウントを選択し、 Continue [続行]をクリックします。
Select [インストール方法の選択] ページで、 Kubernetes を選択し、 Continue [続行]をクリックします。
「ユーザー キーを入力」画面で、次のいずれかのオプションを選択し、Continue [続行]をクリックします。
既存のキーを使用する : すでにユーザー キーがある場合は、そのユーザー キーを指定します。 詳細については、 「ユーザー キー」 を参照してください。新しいキーを作成する : ユーザー キーがない場合は、 Create a new key [新しいキーの作成]をクリックして作成します。Kubernetesインテグレーションの構成] 画面で:
Kubernetes のデプロイメント名を入力します。 (オプション) 統合のネームスペースを入力します。 デフォルトのネームスペースはnewrelicです。 Click Continue . ヒント New Relic計装にカスタムのネームスペースを選択した場合(デフォルトのnewrelicの代わりに)、そのネームスペースをdropDataForNamespaces設定に追加して監視から除外することをお勧めします。 これにより、eBPF エージェントは計装ポッド自体を監視できなくなります。 たとえば、ネームスペースとしてnewrelic-monを使用する場合は、 dropDataForNamespaces: ["kube-system", "newrelic-mon"]を設定します。
Kubernetesインテグレーションのインストール] 画面で:
表示されたコマンドをコピーして貼り付け、 Helmを使用してKubernetesクラスタに eBPF エージェントをインストールします。
(オプション) values.yaml設定ファイルをダウンロードするには、 Download [ダウンロード]をクリックします。 設定の問題の詳細については、 「K8s 設定の問題」 を参照してください。
(オプション) 必要に応じてvalues.yamlファイルを更新し、保存します。
(オプション) 設定の変更を適用するには、次のコマンドを実行します。
$ helm repo update ; helm upgrade --install nr-ebpf-agent newrelic/nr-ebpf-agent -n newrelic --values values.yaml
インストールを確認するには、次のコマンドを実行します。
$ kubectl get pods -n newrelic
New RelicでeBPFデータにアクセスする eBPF エージェントがインストールされると、Linux ホストからのデータの収集が自動的に開始されます。このデータには、New Relic の OpenTelemetry UI からアクセスできます。New Relic OpenTelemetry UI の詳細については、 OpenTelemetry APM UI を 参照してください。
New Relic で eBPF データを表示するには:
one.newrelic.com > APM & Services に移動します。検索バナーで、検索条件をinstrumentation.name = nr_ebpfとして設定します。
/* アプリがインストルメントされ、データをNew Relicにエクスポートするように設定されると、 New Relic UIでデータを見つけることができるようになります。 * <DNT>**すべてのエンティティ > サービス - OpenTelemetry</DNT> でエンティティを見つけます。 エンティティ名はアプリの `service.name` の値に設定されますリソース属性。New Relicサービス エンティティがOpenTelemetryリソースのプロパティからどのように派生するかについて詳しくは、[Services](/docs/OpenTelemetry/ベストプラクティス/OpenTelemetry-ベストプラクティス-resources/#services) を参照してください。 * [ NRQL ](/docs/ NRQL /get-started/introduction-NRQL(New Relic 書き込み言語)/) を使用して、直接書きます[トレース](https\://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0) aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnXXSI6IkZST00gU3BhbiBTRUxFQ1QgY291bnQoKikgd2hlcmU gbmV3cmVsaWMuc291cmNlPSclb3RscCUnIFRJTUVTRVJJRVMifV0sImluaXRpYWxDaGFydFNldHRpbmdzIjp7ImNoYXJ0VHlwZSI6IkNIQVJUX0xJTkUiLCJsaW1pdCI6NzU0MiwibGlua2VkRW50aXR5R3VpZCI6bnVsbCwibGlua2VkRGFzaGJvYXJkSWQiOm51bGwsInlTY2FsZSI6eyJzdGF0aWMiOmZhbHNlLCJkb21haW4iOltudWxsLG51bGxdfSwieVplcm8iOnRydWV9fQo=)、 [メトリクス](https\://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gTWV0cmljIFNFTEVDVCBjb3VudCgqKSB3aGVyZS BuZXdyZWxpYy5zb3VyY2UgTElLRSAnJW90bHAlJyBUSU1FU0VSSUVTIn1dLCJpbml0aWFsQ2hhcnRTZXR0aW5ncyI6eyJjaGFydFR5cGUiOiJDSEFSVF9MSU5FIiwibGltaXQiOjc1NDIsImxpbmtlZEVudGl0eUd1aWQiOm51bGwsImxpbmtlZERhc2hib2FyZElkIjpudWxsLCJ5U2NhbGUiOnsic3RhdGljIjpmYWxzZSwiZG9tYWluIjpbbnVsbCxudWxsXX0sInlaZXJvIjp0cnVlfX0K)、および[ログ](https\://one.newrelic.com/launcher/nr1-core.explorer?overlay=eyJuZXJkbGV0SWQiOiJkYXRhLWV4cGxvcmF0aW9uLnF1ZXJ5LWJ1aWxkZXIiLCJpbml0aWFsQWN0aXZlSW50ZXJmYWNlIjoibnJxbEVkaXRvciIsImluaXRpYWxOcnFsVmFsdWUiOiIiLCJpbml0aWFsUXVlcmllcyI6W3sibnJxbCI6IkZST00gTG9nIFNFTEVDVCBjb3VudCgqKSB3aGVyZSB uZXdyZWxpYy5zb3VyY2U9JyVvdGxwJScgVElNRVNFUklFUyJ9XSwiaW5pdGlhbENoYXJ0U2V0dGluZ3MiOnsiY2hhcnRUeXBlIjoiQ0hBUlRfTElORSIsImxpbWl0Ijo3NTQyLCJsaW5rZWRFbnRpdHlHdWlkIjpudWxsLCJsaW5rZWREYXNoYm9hcmRJZCI6bnVsbCwieVNjYWxlIjp7InN0YXRpYyI6ZmFsc2UsImRvbWFpbiI6W251bGwsbnVsbF19LCJ5WmVybyI6dHJ1ZX19Cg==)。* 詳細については、[ OpenTelemetry APM UI ](/docs/OpenTelemetry/get-started/APM-監視/OpenTelemetry-APM-UI) を参照してください。 エンティティが見つからず、 NRQLでデータが表示されない場合は、[OTLP トラブルシューティング](/docs/OpenTelemetry/ベストプラクティス/OpenTelemetry-otlp-トラブルシューティング) を参照してください。 eBPF エージェントによって収集されたデータは、New Relic Opentelementry UI で確認できます。 */
eBPF エージェントをアップグレードする KubernetesクラスタでeBPFエージェントをアップグレードするには:
標準アップグレードの場合 : 次の Helm コマンドを使用して最新バージョンにアップグレードします。$ KSM_IMAGE_VERSION = "v2.13.0" && helm repo add newrelic https://helm-charts.newrelic.com && helm repo update && kubectl create namespace "newrelic" ; helm upgrade --install nr-ebpf-agent newrelic/nr-ebpf-agent --set licenseKey = < key > --set cluster = "<cluster-name>" --namespace = newrelic
特定のバージョンへのアップグレードの場合: 特定のバージョンにアップグレードするには、 --versionフラグを使用します。$ KSM_IMAGE_VERSION = "v2.13.0" && helm repo add newrelic https://helm-charts.newrelic.com && helm repo update && kubectl create namespace "newrelic" ; helm upgrade --install nr-ebpf-agent newrelic/nr-ebpf-agent --set licenseKey = < key > --set cluster = "<cluster-name>" --namespace = newrelic --version = 0.2 .5
<key> New Relicライセンスキーに置き換え、 <cluster-name>クラスタ名に置き換えます。
設定パラメーター values.yaml ファイルには、次の設定セクションが含まれています。
一般設定 これらの課題は、eBPF エージェントのコア ID とデータ送信先を制御します。
パラメータ
説明
データタイプ
例
cluster
Kubernetesクラスタの名前を指定します。 このフィールドは必須です。
String
"production-cluster"
licenseKey
New Relicライセンスキーを指定します。
customSecretName
が使用されていない場合は必須です。
String
"8356...FFFFNRAL"
nrStaging
true
の場合、New Relic のステージング環境にデータを送信します。
Boolean
true
customSecretName
ライセンスキーを含むKubernetesシークレットの名前を指定します。 キーを直接提供しないようにするには、これを使用します。
String
"newrelic-license-secret"
customSecretLicenseKey
ライセンスキーの値が保存されるシークレット内のキーを指定します。
customSecretName
で使用されます。
String
"license"
region
New Relic アカウントのリージョン (
US
または
EU
) を指定します。
customSecretName
を使用する場合は必須です。
String
"US"
proxy
すべての送信エージェント データをルーティングするプロキシ サーバーの URL (ポートを含む) を指定します。
String
"http://user:pass@host:port"
logLevel
エージェントのログの詳細レベルを定義します。有効なオプション:
OFF
、
FATAL
、
ERROR
、
WARNING
、
INFO
、
DEBUG
。
String
"INFO"
logFilePath
ログ出力用のエージェント コンテナ内のファイル パスを指定します。パスが無効な場合、ログは stdout に送信されます。
String
"/var/log/nr-ebpf-agent.log"
downloadedPackagedHeadersPath
eBPF エージェントが使用するために必要な Linux ヘッダーが手動でダウンロードされ配置される完全なディレクトリの絶対パスを設定します。これは、エージェントが必要な Linux ヘッダーをダウンロードできない制限された環境で役立ちます。必要なヘッダーは、カーネル バージョンに基づいてエージェントによって識別されます。K8s の場合の絶対パスにも、必要に応じて /host を先頭に追加する必要があります。NR サポートの推奨後にのみ使用してください。
String
"/path/to/downloaded/headers/dir"
distroKernelHeadersPath
eBPF エージェントが使用する Linux ヘッダーが存在する完全なディレクトリの絶対パスを設定します。これは、必要な Linux ヘッダーをインストールできなかったり、パスを決定できなかったりする場合に役立ちます。K8s の場合の絶対パスにも、必要に応じて /host を先頭に追加する必要があります。NR サポートの推奨後にのみ使用してください。
String
"/host/usr/src/linux-headers-6.8.0-pl"
vizierPort
エージェントがクライアントから pxl スクリプトを受信する Vizier サーバー ポート。デフォルトは12345
String
"12345"
tableStoreDataLimitMB
エージェントの内部データ ストアのメモリ制限をメガバイト (MiB) 単位で定義します。これは RAM 使用量の主な制御です。
String
"250"
apmDataReporting
APMデータレポートを有効にします。 有効にすると、エージェントはアプリケーションパフォーマンス監視データを収集して報告します。
String
true
networkMetricsReporting
ネットワーク メトリクス レポートを有効にします。 有効にすると、エージェントは TCP 統計を含むネットワーク メトリクスを収集して報告します。
tcpStatsReporting
から名前が変更されました。古い名前は非推奨ですが、下位互換性はサポートされています。
String
true
すべてのデータフィルター このセクションでは、提供された設定に基づいて、あらゆる種類のネットワーク メトリクスおよびAPMデータをドロップするフィルターを構成します。
パラメータ
説明
データタイプ
例
allDataFilters.dropNewRelicBundle
newrelic ネームスペースおよび newrelic-bundle サービスからデータをドロップします。 (わかりやすくするために
dropDataNewRelic
から名前を変更しました。古い名前は非推奨ですが、下位互換性のために引き続きサポートされています。
Boolean
true
allDataFilters.dropNamespaces
エージェントによってすべてのデータが削除される必要があるKubernetesネームスペースのリスト。 (わかりやすくするために
dropDataForNamespaces
から名前を変更しました。古い名前は非推奨ですが、下位互換性のために引き続きサポートされています。
List
["kube-system"]
allDataFilters.dropServiceNameRegex
ドロップする k8s サービス名に一致する正規表現を定義します。例
"kube-dns|otel-collector|\\bblah\\b"
(わかりやすくするために
dropDataServiceNameRegex
から名前が変更されました。古い名前は非推奨ですが、下位互換性のために引き続きサポートされています。
String
""
allDataFilters.keepServiceNameRegex
この構成は、
dropServiceNameRegex
構成のバイパスとして機能します。この正規表現に一致するサービス名のデータは、
dropServiceNameRegex
によって削除されません。(わかりやすくするために
allowServiceNameRegex
から名前を変更しました。古い名前は非推奨ですが、下位互換性のために引き続きサポートされています。
String
""
allDataFilters.dropApmAgentEnabledEntity
NewRelic または OTEL APMエージェントが実行されているアプリケーションまたはエンティティのデータをすべて削除します。
Boolean
"false"
APMデータフィルター 提供された構成に基づいて ebpf APM データをドロップするようにフィルターを構成する
パラメータ
説明
データタイプ
例
apmDataFilters.apmAgentEnabledEntity
NewRelic APM/OTel エージェントが実行されているアプリケーション/エンティティの eBPF APM データをドロップします。
Boolean
false
apmDataFilters.dropPodLabels
APM データをフィルタリングするために一致するポッド ラベル。空のマップは、ラベルベースのフィルタリングがないことを意味します。(例: dropPodLabels:
{ "app": "frontend", "env": "production" }
)
String
{}
apmDataFilters.dropEntityName
ebpf APM データを削除するエンティティ名のリスト
List
[]
apmDataFilters.keepEntityName
APM データを常に保持するエンティティ名のリスト。デフォルトでは、すべてのエンティティが保持/有効化されます。この構成は
dropEntityName
フィルターをバイパスします。
List
[]
ネットワークメトリクスデータフィルター 提供された構成に基づいてネットワーク メトリクス データをドロップ/保持するようにフィルターを構成します
パラメータ
説明
データタイプ
例
networkMetricsDataFilter.dropPodLabels
ネットワーク メトリクス データをフィルタリングするために照合するポッド ラベル。 空のマップは、ラベルベースのフィルタリングがないことを意味します。(例: dropPodLabels:
{ "app": "frontend", "env": "production" }
)
String
{}
networkMetricsDataFilter.dropEntityName
ネットワーク メトリクス データをドロップするエンティティ名のリスト
List
[]
networkMetricsDataFilter.keepEntityName
ネットワーク メトリクス データを常に保持するエンティティ名のリスト。 デフォルトでは、すべてのエンティティが保持/有効化されます。この構成は
dropEntityName
フィルターをバイパスします。
List
[]
プロトコルトレース設定 このセクションでは、特定のネットワーク プロトコルの監視を有効にし、トレース データ (スパン) の収集方法を構成できます。HTTP、 MySQLなどのプロトコルの監視を有効または無効にし、レイテンシまたはエラー率に基づいてスパン収集の監視を設定できます。 次のプロトコルがサポートされています。
HTTP
MySQL
PostgreSQL
MongoDB
Apacheカサンドラ
Redis
カフカ
DNS
パラメータ
説明
データタイプ
例
protocols.<protocol-name>.enabled
true
の場合、指定されたプロトコル(
http
、
mysql
など)の監視が有効になります。
Boolean
true
protocols.<protocol-name>.spans.enabled
true
場合は、有効なプロトコルのトレース範囲をエクスポートします。
Boolean
true
protocols.<protocol-name>.spans.samplingLatency
スパンをエクスポートするためのレイテンシベースのサンプリング値を定義します。 有効なオプション:
p1
、
p10
、
p50
、
p90
、
p99
。
String
"p90"
protocols.http.spans.samplingErrorRate
HTTP のみ。エラー率が指定されたパーセンテージ (1 ~ 100) を超えるルートからスパンをエクスポートします。
String
"5"
DaemonSetの設定 これらのセクションでは、ソリューションの主要コンポーネントのデプロイメント設定を制御します。 アスタリスク(*)コンポーネント名を示します。
パラメータ
説明
データタイプ
例
*.image.repository
コンポーネントのコンテナ イメージ リポジトリを指定します。
String
"docker.io/newrelic/newrelic-ebpf-agent"
*.image.pullPolicy
コンテナ イメージのプル ポリシーを定義します。
String
"IfNotPresent"
*.image.tag
デプロイするコンテナ イメージのバージョン タグを指定します。
String
"agent-0.2.4"
*.resources.limits.memory
コンテナが使用できる最大メモリを定義します。
String
"2Gi"
*.resources.limits.cpu
コンテナが使用できる最大 CPU を定義します。
String
"1"
*.resources.requests.memory
起動時にコンテナに要求される最小メモリを定義します。
String
"250Mi"
*.resources.requests.cpu
起動時にコンテナに要求される最小 CPU を定義します。
String
"100m"
*.tolerations
特定の汚染を持つノードでのスケジュールを可能にするためにポッド許容を定義します。
Objects
[{"key": "special", "operator": "Exists"}]
*.affinity
スケジュールのポッド アフィニティ ルールと非アフィニティ ルールを定義します。
Object
{}
*.podAnnotations
コンポーネントのポッドに追加するカスタム注釈を指定します。
Object
{"iam.amazonaws.com/role": "my-role"}
グローバルポッドとスケジュール設定 これらの論点は、コンポーネント固有の設定によってオーバーライドされない限り、 Helmチャートによるすべての Pod デプロイに適用されます。
パラメータ
説明
データタイプ
例
podLabels
チャートによってデプロイされるすべてのポッドに適用する追加のラベルを指定します。
Object
{"team": "observability"}
priorityClassName
すべてのポッドの
PriorityClass
指定します。
String
"high-priority"
nodeSelector
一致するラベルを持つノードでのみポッドが実行されるように制限します。
Object
{"disktype": "ssd"}
TLS設定 このセクションでは、eBPF エージェントとクライアント コンポーネント間の安全な通信を構成します。
パラメータ
説明
データタイプ
例
tls.enabled
true
場合、コンポーネント間の内部通信に TLS が有効になります。
Boolean
true
tls.autoGenerateCert.enabled
true
場合、Helm に TLS の自己署名証明書を自動的に生成するように指示します。
Boolean
true
tls.autoGenerateCert.recreate
true
場合、
helm upgrade
ごとに新しい証明書が生成されます。
Boolean
false
tls.autoGenerateCert.certPeriodDays
自動生成された証明書の有効期間を日数で定義します。
Integer
730
tls.certFile
カスタム PEM エンコード証明書ファイルへのパスを指定します。
autoGenerateCert.enabled
false
である必要があります。
String
"my-certs/tls.crt"
tls.keyFile
カスタム PEM エンコードされた秘密キー ファイルへのパスを指定します。
String
"my-certs/tls.key"
tls.caFile
カスタム証明機関 (CA) 証明書ファイルへのパスを指定します。
String
"my-certs/ca.crt"
eBPF エージェントをアンインストールする Kubernetesクラスタから eBPF エージェントをアンインストールするには:
$ helm uninstall nr-ebpf-agent -n newrelic
ヒント このコマンドは、クラスターからすべての eBPF エージェント コンポーネントを削除します。ネームスペースは明示的に削除しない限り残ります。