New RelicHelmOpenTelemetryCollectorは、Kubernetes クラスタ内の に チャート を提供します。このHelmチャートは、さまざまなユースケースの高度な設定など、特定のニーズに合わせてカスタマイズできます。
nr-k8s-otel-collector
Helm チャートはDaemonSet
とDeployment
コレクターの両方をサポートしており、ユースケースに最適なものを選択できます。これらのコレクターは、動作をカスタマイズするように構成できます。New RelicOpenTelemetryCollectorにKubernetes をインストールする方法の詳細については、 インストール ガイド を参照してください。
このドキュメントでは、いくつかの主要な詳細設定オプションの概要を説明します。
GKE Autopilot または Red Hat OpenShift との互換性を有効にする
特定のKubernetes環境との互換性を確保するために、プロバイダー固有の設定を有効にすることができます。 この設定により、これらの環境の特定の制約に適応することで、 OpenTelemetryーの互換性と適切な機能が確保されます。
values.yaml
ファイルでこのオプションを有効にします:
provider: "GKE_AUTOPILOT" # Or "OPEN_SHIFT" if applicable
LowDataModeを有効にする
LowDataMode
オプションはデフォルトで有効になっており、 Kubernetes UI に必要なメトリクスのみを取り込みます。 このモードでは、 Kubernetes監視に不可欠なメトリクスに焦点を当て、収集されるデータの量を削減します。
LowDataMode で追加のメトリクスを追加する
追加のメトリックを取得するには、新しいパイプラインを追加し、 セクションを使用してvalues.yaml
ファイル に適切な レシーバーとプロセッサextraConfig
を構成します。
次の例は、 cadvisor_version_info
メトリクスを新しいパイプラインに追加する方法を示しています。 既存のレシーバーを再利用することも、独自のレシーバーを定義することもできます。特定のメトリクスをフィルタリングし、 Kubernetesプロパティで強化するためにプロセッサが追加されます。
extraConfig: receivers: processors: filter/keep_cadvisor_version_info: metrics: metric: - name != "cadvisor_version_info" # Exclude all metrics except cadvisor_version_info exporters: connectors: pipelines: metrics/additional_metrics: receivers: - prometheus # This references the prometheus receiver defined above processors: - filter/keep_cadvisor_version_info - resource # Essential for basic resource attributes - k8sattributes/ksm # Essential for Kubernetes metadata enrichment - cumulativetodelta # Converts cumulative metrics to delta - batch # For efficient data sending exporters: - otlphttp/newrelic
設定で再利用できるレシーバー、プロセッサー、エクスポーター、パイプラインの包括的なリストについては、 New Relic Helm Charts リポジトリを参照してください。
複数のNew Relicアカウントにデータを送信する
Kubernetesテレメトリー データを複数のNew Relicアカウントに同時に送信するには、セカンダリ インジェスト ライセンスキーをOpenTelemetry Collectorコンテナに挿入し、追加の OTLP エクスポーターを構成します。
セカンダリライセンスキーを挿入するには:
values.yaml
ファイルのenv
セクションで、使用するセカンダリ取り込みライセンスキーごとに次の環境変数を追加します。daemonset:envs:- name: MY_SECONDARY_LICENSE_KEY_VAR # Choose a descriptive environment variable namevalueFrom:secretKeyRef:name: <Your Secret Name> # Name of your Kubernetes Secretkey: <Your Secret Key> # Key within the Secret that holds the license keydeployment:envs:- name: MY_SECONDARY_LICENSE_KEY_VARvalueFrom:secretKeyRef:name: <Your Secret Name>key: <Your Secret Key>values.yaml
ファイルのenvForm
セクションで、使用するセカンダリ ライセンスキーごとに次の環境変数を追加します。daemonset:envsFrom:- secretRef:name: <Your Secret Name>deployment:envsFrom:- secretRef:name: <Your Secret Name>
追加アカウントごとに
extraConfig
セクションにotlphttp
エクスポーターを追加し、挿入された環境変数を参照するには、次のようにします。
daemonset: configMap: extraConfig: exporters: otlphttp/secondAccount: # Unique name for this exporter endpoint: "{{include 'nrKubernetesOtel.endpoint'}}" headers: api-key: ${env:MY_SECONDARY_LICENSE_KEY_VAR} # Reference the env vardeployment: configMap: extraConfig: exporters: otlphttp/secondAccount: # Unique name for this exporter endpoint: "{{include 'nrKubernetesOtel.endpoint'}}" headers: api-key: ${env:MY_SECONDARY_LICENSE_KEY_VAR} # Reference the env var# Important: Add this exporter to the relevant pipelines belowpipelines: metrics: exporters: - otlphttp/newrelic # Original exporter - otlphttp/secondAccount # New exporter traces: exporters: - otlphttp/newrelic - otlphttp/secondAccount logs: exporters: - otlphttp/newrelic - otlphttp/secondAccount
ヒント
また、データがこの新しいエクスポータを介して実際に送信されるようにするには、 daemonset
とdeployment
コレクターの両方について、 extraConfig
内の関連するpipelines
(メトリクス、トレース、ログ) にotlphttp/secondAccount
エクスポータを追加する必要があります。
values.yaml
ファイルを更新したら、変更をクラスターに適用します。
$helm upgrade nr-k8s-otel-collector newrelic/nr-k8s-otel-collector -f your-custom-values.yaml -n newrelic
プロキシ経由でデータを送信する
Kubernetesテレメトリデータをプロキシ経由で送信するには、送信接続に HTTP プロキシを使用するようにOpenTelemetry Collectorを構成できます。 これは、直接のインターネット アクセスが制限されている環境やモニター環境で特に役立ちます。
次のいずれかの方法を使用して、プロキシを使用するように OpenTelemetry Collector を構成できます。
Helmチャートにカスタム設定を追加する
values.yaml
ファイル内のextraConfig
セクションは、 daemonset
とdeployment
コレクターの両方の機能を拡張する強力な方法を提供します。どちらのコレクターを選択して追加の設定を適用することもでき、監視エクスペリエンスをカスタマイズできます。
これらのオプションにより、デフォルトで含まれていない特定の設定を統合する柔軟性が提供されます。
さらにカスタマイズするには、設定で再利用できるレシーバー、プロセッサ、エクスポーター、パイプラインの包括的なリストを参照してください。
パイプラインでいくつかの推奨プロセッサを採用して、テレメトリーデータの効率と関連性を高めることができます。
resource:
メトリクス データに重要なリソース情報が含まれていることを確認して、データ分析の明確さを高めます。k8sattributes:
Kubernetes固有のプロパティをメトリクスに組み込み、クラスタの動作とパフォーマンスの詳細なインサイトを実現します。cumulativetodelta:
累積メトリクスをデルタ メトリクスに変換し、経時的な変化の追跡を改善します。batch:
メトリクスをバッチで処理してエクスポートし、データ収集中のパフォーマンスを最適化します。
これらのプロセッサは連携してデータを精製し、より正確な監視とアラートを実現します。特定のユースケースに応じて設定をカスタマイズし、Kubernetes 環境内でシームレスな Prometheus サービス検出を実現します。
Prometheus サービス検出の有効化セクションでは、 extraConfig
セクションを使用して標準のprometheus.io/scrape
アノテーションを使用してサービス検出を設定する方法の例を示します。
Prometheusサービス検出を有効にする
Kubernetesクラスタ内でPrometheusサービスの検出を有効にするには、 deployment
コレクターの設定のextraConfig
セクションを使用します。 これにより、 OpenTelemetry Collector 、 prometheus.io/scrape
注釈が付けられた Pod からメトリクスを自動的に検出して収集できるようになります。
標準のprometheus.io/scrape
アノテーションを使用してサービス検出を設定するための構成スニペットの例を次に示します。
extraConfig: receivers: prometheus/discover: config: scrape_configs: - job_name: "auto-discovered-services" scrape_interval: 30s # Set the scrape interval to 30 seconds kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true - source_labels: [__meta_kubernetes_pod_label_app] action: drop regex: kube-state-metrics - source_labels: [__address__, __meta_kubernetes_pod_annotation_prometheus_io_port] action: replace target_label: __address__ separator: ; regex: (.+):(?:\d+);(.*) replacement: $1:$2 - action: replace target_label: job_label replacement: auto-discovery processors: exporters: connectors: pipelines: metrics/prom_auto_discover: receivers: - prometheus/discover processors: - resource/metrics - k8sattributes/ksm - cumulativetodelta - batch exporters: - otlphttp/newrelic