重要
Agent Control と New Relic Control が Kubernetes で一般提供されました。Linux ホストのサポートも、弊社のプレリリース ポリシーに従ってパブリック プレビュープログラムで提供されます。
Agent Control 、展開されている環境に依存しない設定のためのシームレスなアプローチを提供します。 エージェント設定の管理には 2 つの方法があります。
ローカル設定:初期Helmインストレーション中に使用される包括的な
values.yaml
ファイル。リモート設定: New Relic Control で作成する集中型の YAML ベースの設定で、フリート全体にリモートで展開されます。
日常の管理にはリモート設定が推奨されます。 これにより、環境全体で一貫したエージェントの動作が保証され、変更管理が簡素化され、各ホスト上のローカル YAML ファイルを手動で更新することなくスケーリングが可能になります。
ヒント
従来New Relicエージェント設定を定義していたvalues-newrelic.yaml
ファイルには、 Agent Controlの設定も含まれるようになりました。 このファイルで定義する問題により、 Agent Controlとその管理対象エージェントの両方がどのように動作するかが決まります。 このファイルはローカル設定と呼ばれます。
設定の 2 つの層を理解する
Agent Controlの設定は 2 つの層で構成されています。
Agent Controlのコア設定:これらは、 New Relicへの接続、ID、フリート管理の詳細など、 Agent Control動作を制御する最上位の設定です。
管理エージェントの設定:これらは、 Agent Controlコントロール デプロイが管理する各サブエージェント (インフラストラクチャエージェント、 Fluent Bit ) の個別の
chart_values
です。
ローカル設定とリモート設定の両方が存在する場合、 Agent Control次のロジックを適用します。
- リモート設定が優先されます。 New Relic Control からのリモート構成で定義された設定は、ローカル
values.yaml
ファイル内の対応する設定を上書きします。 - リモート設定をローカル設定で意図的にオーバーライドするには、 New Relic Control を介して空のリモート設定をデプロイできます。 この変更は、選択したフリート内のすべてのクラスターに適用されます。
Kubernetes設定
これらの手順と例は、 Kubernetesクラスタ上で実行されているAgent Controlに適用されます。
Kubernetesのローカルvalues.yaml
設定
インストール中に使用されるKubernetesのローカル設定ファイルには、 Agent Controlとその管理対象エージェントのすべての設定が含まれています。
この例では、1 つのファイル内に 2 つの設定レイヤーを示します。
このサンプルでは、Agent Control インフラストラクチャエージェントと転送ログ用の 2 つのマネージド エージェントとともにKubernetes Fluent Bitを構成する方法を示します。たとえば、 Fluent Bit Collector にヘルス メトリクスを送信したくない場合は、インストール コマンドを実行する前に YAML ファイルにsendMetrics: false
を設定するだけです。
Kubernetesのリモート設定
リモート設定により、環境全体でエージェントの一貫した動作が保証され、変更管理が簡素化され、ローカル YAML ファイルを手動で管理することなく監視を拡張できるようになります。
プロイ設定をクラスタ全体で一元的に展開するには、 の Configurations [設定]Fleet Control セクションでこれと同じ YAML コンテンツを定義します。その後、その設定をリモート展開の一部としてクラスタのフリート全体に適用できます。 これはリモート設定ファイルと呼ばれます。
callout.warning
New Relic Control UIで設定を定義する場合、YAML 構造は異なります。 単一のエージェントのcontent
ブロックに対応する YAML のみを提供します。
サンプル設定: KubernetesでのAgent Control
設定: Kubernetes上のAgent Control次の例は、さまざまなエージェント セットを管理するようにAgent Controlを構成する方法を示しています。 これらの設定は、初期導入中、またはFleet Controlのリモート設定の一部として使用できます。
利用可能なすべての構成設定を確認するには、 values-newrelic.yaml
を参照してください。
次の例は、ローカルvalues.yaml
ファイルを使用してサブエージェントのセットでAgent Controlを構成する方法を示しています。
New Relic InfrastructureとFluent BitによるAgent Control
この例では、インフラストラクチャ監視とログ収集用の 備えたデプロイAgent Control Fluent Bit使用します。
OpenTelemetryおよびカスタム コレクター設定を使用したAgent Control
OpenTelemetry とカスタム コレクター設定を使用した例 この例では、New Relic ディストリビューションの OpenTelemetry (NRDOT) コレクターを使用して Agent Control をデプロイし、管理対象のnr-k8s-otel-collector
Helm チャートでfilelog
レシーバーを無効にします。
重要
セキュリティのベスト プラクティス: ライセンスキーなどの機密性の高い値を設定に直接保存しないでください。 Kubernetes シークレットの使用をお勧めします。Agent Control 、実行時にシークレットからこれらの値を安全に取得できます。
サンプル設定: Kubernetesでのリモートエージェント設定
次の例は、New Relic Control UI から個々のエージェントをリモートで構成する方法を示しています。
リモート設定: New Relicインフラストラクチャ
この例では、New Relic Kubernetesを使用して の Infrastructure エージェントをリモートで設定する方法を示します。Fleet ControlenableProcessMetrics: true
設定することでプロセス メトリクス収集を有効にします。
リモート設定: Fluent Bit
この例では、Fleet Control を介して Fluent Bit をリモートで構成しました。sendMetrics: true
設定すると、ログコレクターからのヘルス メトリクス レポートが有効になります。
リモート設定: Prometheus
この例では、Fleet Control を使用して Prometheus エージェントをリモートで構成します。これにより、 low-data mode
テレメトリーの音量を下げ、デフォルトの統合を無効にすることができます。
リモート設定: OpenTelemetry
この例では、New Relic OpenTelemetry コレクターを設定し、 lowDataMode
有効なオプションとして有効にします。
重要
セキュリティのベスト プラクティス: ライセンスキーなどの機密性の高い値を設定に直接保存しないでください。 Kubernetes シークレットの使用をお勧めします。Agent Control 、実行時にシークレットからこれらの値を安全に取得できます。
Kubernetesのプロキシ設定
Agent Control 、トラフィックを企業プロキシ経由でルーティングするためのプロキシ設定をサポートします。 プロキシ設定は、環境変数を通じて、または構成ファイルで直接設定できます。
プロキシの優先順位
Agent Control次の優先順位でプロキシ設定を使用します。
proxy
Agent Control設定の設定フィールドHTTP_PROXY
環境変数HTTPS_PROXY
環境変数
重要
プロキシ設定は現在、署名検証用の証明書の取得と互換性がありません。 プロキシを設定する必要がある場合は、次のオプションがあります。
- ファイアウォール例外を
https://newrelic.com
に追加して、そのエンドポイントへのrequestsプロキシをスキップできるようにします (推奨) fleet_control.signature_validation.certificate_pem_file_path
を通じてローカル証明書を使用します (証明書のローテーションは手動で処理する必要があります)fleet_control.signature_validation.enabled: false
を設定して署名検証を無効にします (セキュリティ上の理由から強く推奨されません)
自己署名証明書を使用したプロキシ設定
自己署名証明書による HTTPS 認証を使用するプロキシ設定の場合、CA 証明書バンドルを提供し、プロキシ認証を構成する必要があります。
マネージドエージェント用プロキシ設定
注意
Agent Controlでプロキシを構成しても、管理するエージェントに対して同じプロキシ設定が自動的に構成されるわけではありません。 各エージェントには独自のプロキシ設定があり、そのエージェント固有の設定形式と要件に従って個別に設定する必要があります。
プロキシを使用する場合は、管理対象エージェントごとにプロキシ設定を個別に構成する必要があります。プロキシ設定オプションについては、各エージェントの固有のドキュメントを参照してください。
秘密管理
Agent Control専用のシークレット プロバイダーからパスワードやAPIキーなどの機密データを取得して管理するための堅牢なメカニズムを提供します。 これにより、機密情報が設定ファイルに直接ハードコードされなくなります。 システムは現在、次のシークレット プロバイダーをサポートしています。
- HashiCorp Vault: 設定では
nr-vault
と呼ばれます。 - Kubernetes Secrets: 設定では
nr-kubesec
と呼ばれます。
設定でシークレットを定義する
シークレットを利用するには、次の手順に従って、エージェント コントロール設定 YAML ファイル内でシークレットを定義します。
secrets_providers
セクションを定義します。このセクションでシークレット プロバイダーを集中的に構成します。各エントリがサポートされているプロバイダーに対応していることを確認します。- シークレット ソースを構成する:プロバイダーごとに、1 つ以上のソースを指定します。ソースには、エージェント制御がシークレットのグループに接続して取得するために必要な設定の詳細 (例: URL、VPN) が含まれています。
- エージェント設定でプレースホルダーを使用する:実際の機密データの代わりに、エージェントの設定内でプレースホルダー文字列を使用します。 エージェント コントロールは、レンダリング プロセス中にこれらのプレースホルダーを取得したシークレットに自動的に置き換えます。
重要
エージェント コントロールがシークレットの取得に失敗した場合、設定のレンダリングは失敗し、エージェントは実行されません。 これは、エージェントが不完全または間違った設定で実行されるのを防ぐための重要なセキュリティ機能です。
次のエージェント制御設定例は、 secrets_providers
セクション内の 2 つの Vault ソースからシークレットを取得するように設定する方法を示しています。
secrets_providers: vault: sources: local-instance: url: http://localhost:8200/v1/ token: root engine: kv2 remote: url: http://my-remote-server:8200/v1/ token: root engine: kv1
fleet_control: ...
agents: ...
エージェント設定でのシークレットの使用
ソースを定義した後、エージェント設定で、正しいパスを持つ特定のプレースホルダー構文を使用してボールトを参照できます。 エージェント コントロールはシークレットを取得し、それを使用してエージェントが使用する最終設定ファイルをレンダリングします。
vault プレースホルダーを使用したエージェント設定の例:
config_agent: |+ enable_process_metrics: true custom_attributes: username: "${nr-vault:local-instance:secret:my_secret:username}" organization: "${nr-vault:remote:my_mount:my_path:organization}"
この例では
プレースホルダー${nr-vault:local-instance:secret:my_secret:username}
は、ローカル インスタンス ボールト ソースを使用してパスsecret/my_secret
のシークレットからキー ユーザー名に関連付けられた値を取得するようにエージェント コントロールに指示します。 プレースホルダー${nr-vault:remote:my_mount:my_path:organization}
も同様に、リモート ソースから組織キーの値を取得します。
取得が成功すると、エージェント コントロールは指定されたソースとパスからこれらのシークレットをレンダリングし、対応するエージェントが使用できるように結果を K8s シークレットまたはプライベート構成ファイルに保存します。
ヴォールトの秘密
次の設定で Vault ソースを設定します。
YAMLキー | 説明 |
---|---|
| データを要求するURL |
| エンドポイントへの認証に使用されます。 |
|
|
構成ファイルでは、次のプレースホルダーを設定することで、Vault に保存されている各シークレットにアクセスできます。
- source_name :
secrets_providers
で定義された Vault ソースの名前。 - mount [マウント]: シークレットエンジンマウントの名前。
- path : シークレットへの特定のパス。
- specific key [特定のキー]: 取得するシークレット内の特定のキー。
完全なプレースホルダー形式の例:
"${nr-vault:source_name:my_mount:my_path:my_value}"
Kubernetesの秘密
エージェント コントロールのポッドが、サービス アカウントやロールベースのアクセス制御 (RBAC) などを介して、必要なシークレットとネームスペースにアクセスする権限を持っている場合、エージェント コントロールは、別のソース設定を必要とせずに、 Kubernetes APIからシークレットに直接アクセスできます。
エージェント設定ファイルで、次を指定するプレースホルダーを使用して各シークレット値を取得します。
- namespace [ネームスペース]: シークレットが存在するKubernetesネームスペース。
- name : Kubernetes シークレット オブジェクトの名前。
- specific key [特定のキー]: 値を取得するシークレット内の特定のキー。
たとえば、次のプレースホルダー形式を使用します。
"${nr-kubesec:my_namespace:my_secret:my_value}"
プライベートリポジトリ設定
Agent Control は、Agent Control 自体と管理対象エージェントの両方をデプロイするためのプライベート Helm リポジトリの構成をサポートしています。これにより、New Relic Helm チャートに直接アクセスできない環境が可能になります。
注意
プライベート Helm リポジトリを使用する場合、チャートは互換性があり、チャート内の参照イメージにアクセスできる必要があります。そうしないと、エージェントは期待どおりに動作しません。
1. エージェントのプライベートリポジトリを有効にする
セキュリティ上の理由から、リモート設定では明示的に有効化されたリポジトリのみが許可されます。 特定のリポジトリを有効にするには、 Agent Control設定を更新する必要があります。
許可されたリポジトリ設定は、 New Relic Control 内のリモート設定で使用できるようになります。 例:
chart_version: "1.2.3"chart_repository: url: "https://my-private-repository-1" name: "my-chart-name" # Optional: use only if the chart name doesn't match New Relic's chart name
さらに、 agent-control-bootstrap
チャート自体がプライベート リポジトリにある場合は、プライベート リポジトリを使用するようにAgent ControlのHelmを構成する必要があります。 マネージドエージェントの設定とは別のものです。 installationJob
セクションを設定するには、 agent-control-bootstrap
Helm チャートvalues.yamlを参照してください。具体的には:
chartRepositoryUrl
リポジトリのURLを含むname
別のチャート名を使用する場合repositorySecretReferenceName
認証にはrepositoryCertificateSecretReferenceName
使用します(詳細は以下の認証セクションを参照してください)
2. プライベートリポジトリの認証を設定する
プライベート リポジトリにアクセスするための認証を有効にするには、追加のリソースを設定する必要があります。
Linuxの設定
Agent Control設定のデフォルト パスは次のとおりです。
Local
設定ファイル:/etc/newrelic-agent-control/config.yaml
Remote
設定ファイル:/var/lib/newrelic-agent-control/config.yaml
( Fleet Controlデプロイメント経由で有効な場合)- サービス定義:
/lib/systemd/system/newrelic-agent-control.service
- サービス環境ファイル:
/etc/newrelic-agent-control/newrelic-agent-control.conf
デフォルトでは、エージェントはインフラストラクチャエージェントとOpenTelemetryを調整します。
# Configures the integration with Fleet Controlfleet_control: # EU region? Use: https://opamp.service.eu.newrelic.com/v1/opamp endpoint: https://opamp.service.newrelic.com/v1/opamp headers: api-key: YOUR_INGEST_KEY auth_config: # EU region? Use: https://system-identity-oauth.service.eu.newrelic.com/oauth2/token token_url: "https://system-identity-oauth.service.newrelic.com/oauth2/token" client_id: "YOUR_CLIENT_ID provider: "local" private_key_path: "path/to/key"
# Configures the agents to be supervised by Agent Controlagents: # Agent name (RFC-1035 valid label) nr-infra-agent: # The supported agent type and agent type version agent_type: "newrelic/com.newrelic.infrastructure:0.1.0" nr-otel-collector: agent_type: "newrelic/io.opentelemetry.collector:0.1.0"
監視要件に基づいて、いずれかのエージェントの名前を変更または削除できます。 エージェント名は有効な RFC-1035ラベル名である必要があります。
環境変数を使用してエージェント設定を定義することもできます。
- メインのAgent Control設定をターゲットにするには、
NR_
(単一のアンダースコア) プレフィックスを使用します。 - Agent Controlで使用可能な設定を対象にするには、
__
(二重アンダースコア) を使用します。 これは、アンダースコアを含む設定キーとの衝突を避けるために必要です。 - 環境変数はローカル設定ファイルよりも優先されます。 リモート設定が有効になっている場合、環境変数は考慮されません。
- たとえば、
fleet_control::endpoint
動的な設定を定義するには、サービス定義ファイルにNR_FLEET_CONTROL__ENDPOINT=https://opamp.service.newrelic.com/v1/opamp
を追加します。
エージェントの設定
agents: # Agent name (RFC-1035 valid label) nr-infra-agent: # The supported agent type and agent type version agent_type: "newrelic/com.newrelic.infrastructure:0.1.0" nr-otel-collector: agent_type: "newrelic/io.opentelemetry.collector:0.1.0"
監視要件に基づいて、いずれかのエージェントの名前を変更または削除できます。 エージェント名は有効な RFC-1035ラベル名である必要があります。
環境変数を使用してエージェント設定を定義することもできます。
- メインのAgent Control設定をターゲットにするには、
NR_
(単一のアンダースコア) プレフィックスを使用します。 - Agent Controlで使用可能な設定を対象にするには、
__
(二重アンダースコア) を使用します。 これは、アンダースコアを含む設定キーとの衝突を避けるために必要です。 - 環境変数はローカル設定ファイルよりも優先されます。 リモート設定が有効になっている場合、環境変数は考慮されません。
- たとえば、
fleet_control::endpoint
動的な設定を定義するには、サービス定義ファイルにNR_FLEET_CONTROL__ENDPOINT=https://opamp.service.newrelic.com/v1/opamp
を追加します。
エージェントを構成する
Agent Control現在、ホスト上で次の事前定義されたエージェント タイプを管理できます。
- New Relicインフラストラクチャ エージェント:
newrelic/com.newrelic.infrastructure
。 FluentBit に基づく オンホスト インワー テグレーションやログフォダー インテグレーションのオーケストレーションなど、インフラストラクチャ エージェント の 既存の機能がすべてサポートされています。 - OpenTelemetry の New Relic ディストリビューション:
newrelic/io.opentelemetry.collector
各エージェント タイプには、その動作に合わせてカスタマイズできるオプションの変数のセットが用意されています。エージェントのローカル設定をカスタマイズするには:
values.yml
ファイルを作成します: このファイルには必要な設定値が含まれます。values.yml
ファイルを/etc/newrelic-agent-control/fleet/agents.d/YOUR-AGENT-NAME/values/
ディレクトリに配置します。ここで、YOUR-AGENT-NAME
エージェントの実際の名前です (例:nr-infra-agent
)。
最新のエージェント タイプ バージョンで使用可能な変数のリストは次のとおりです。
- New Relicインフラストラクチャ エージェント:
0.1.0
- OpenTelemetry の New Relic ディストリビューション:
0.1.0
エージェントタイプ | 変数 | タイプ | デフォルト |
---|---|---|---|
|
| インフラストラクチャエージェント設定を含むファイル | (空の) |
|
| オンホストインテグレーション設定を含む文字列マップ | (空の) |
|
| ログ転送設定を含む文字列マップ | (空の) |
|
| インフラストラクチャエージェントのローカルステータスサーバー用のポート |
|
|
| OpenTelemetryコレクター設定(yaml形式) | (空の) |
|
| OTel コレクターヘルスチェック拡張機能ローカル http エンドポイントのパスとポート |
|
すべての管理対象エージェント |
| コレクターの起動に失敗した場合の次回の再試行までの時間 (秒単位)。 |
|
ヒント
サポートされている設定に従って、必要に応じてインフラストラクチャエージェント設定とOpenTelemetry設定を構成できます。
サンプル設定
Fleet Controlによるリモート設定
次の例には、 Agent Controlおよびマネージド エージェントの有効な設定としてコピー アンド ペーストできる一般的な使用例が含まれています。