Importante
¡Agent Control y New Relic Control ahora están disponibles a nivel general para Kubernetes! El soporte para hosts Linux y hosts Windows también se encuentra en el programa de vista previa pública, de conformidad con nuestras políticas de versión preliminar.
Agente Control proporciona un enfoque perfecto para la configuración independientemente del entorno en el que se implementa. Hay dos métodos disponibles para gestionar la configuración del agente:
Configuración local: un archivo
values.yamlcompleto empleado durante la instalación inicial Helm .Configuración remota: una configuración centralizada basada en YAML que usted crea en New Relic Control y que se implementa de forma remota en toda su flota.
La configuración remota es el método recomendado para la gestión diaria. Garantiza un comportamiento consistente del agente en todo su entorno, simplifica la gestión de cambios y le permite escalar sin actualizar manualmente los archivos YAML locales en cada host.
Sugerencia
El archivo values-newrelic.yaml , que tradicionalmente definía la configuración del agente New Relic , ahora también incluye la configuración para el control del agente. El parámetro que defina en este archivo determinará cómo funcionan tanto el agente Control como su agente gestionado. Este archivo se denomina configuración local.
Comprender las dos capas de configuración
La configuración de agente Control se estructura en dos capas:
Configuración principal de Agente Control: estas son las configuraciones de nivel superior que controlan cómo funciona Agente Control, como su conexión a New Relic, su identidad y los detalles de administración de la flota.
Configuración del agente gestionado: Estos son los
chart_valuesindividuales para cada subagente (por ejemplo, agente de infraestructura, Fluent Bit) que el agente Control despliega y gestiona.
Cuando están presentes tanto una configuración local como remota, el Control del agente aplica la siguiente lógica:
- La configuración remota tiene prioridad. Cualquier configuración definida en una configuración remota desde New Relic Control anulará la configuración correspondiente en el archivo local
values.yaml. - Para anular intencionalmente la configuración remota con su configuración local, puede implementar una configuración remota vacía a través de New Relic Control. Este cambio se aplicará a todos los clústeres de la flota seleccionada.
Configuración Kubernetes
Estas instrucciones y ejemplos se aplican al control de agente que se ejecuta en un clúster de Kubernetes.
Configuración local values.yaml para Kubernetes
El archivo de configuración local para Kubernetes, empleado durante la instalación, contiene todas las configuraciones para el agente Control y su agente gestionado.
Este ejemplo muestra las dos capas de configuración dentro de un solo archivo.
El ejemplo demuestra cómo configurar el Agent Control junto con dos agentes gestionados: el agente de infraestructura Kubernetes y Fluent Bit para el reenvío de logs. Por ejemplo, si no desea enviar métricas de estado para su recolector de logs Fluent Bit , simplemente configure sendMetrics: false en el archivo YAML antes de ejecutar el comando de instalación.
Configuración remota para Kubernetes
La configuración remota garantiza un comportamiento consistente del agente en todo su entorno, simplifica la gestión de cambios y le permite escalar la observabilidad sin gestionar manualmente los archivos YAML locales.
Para implementar la configuración de forma centralizada en todo el clúster, defina este mismo contenido YAML en la sección de configuración de Control de flota (Fleet Control). Luego, puede aplicar la configuración a una flota completa de clúster como parte de una implementación remota. Esto se conoce como archivo de configuración remota .
Sugerencia
Cuando define una configuración en la UI de control New Relic , la estructura YAML es diferente. Solo proporciona el YAML que corresponde al bloque content para un solo agente.
Configuración de ejemplo: agente Control en Kubernetes
configuración: agente Control en Kubernetes Los siguientes ejemplos muestran cómo configurar agente Control para gestionar diferentes conjuntos de agentes. Esta configuración se puede emplear durante la instalación inicial o como parte de una configuración remota en control de flota.
Para explorar todas las configuraciones disponibles, consulte values-newrelic.yaml.
Los siguientes ejemplos muestran cómo configurar el control del agente con un conjunto de subagentes empleando el archivo local values.yaml .
Control de agentes con infraestructura New Relic y Fluent Bit
Este ejemplo implementar Agent Control con monitoreo de infraestructura y Fluent Bit para recolección de logs.
Agente Control con OpenTelemetry y configuraciones de recolector personalizadas
con OpenTelemetry y configuraciones de recolector personalizadas Este ejemplo despliega el agente Control con la distribución New Relic del recolector OpenTelemetry (NRDOT) y deshabilita el receptor filelog en el gráfico Helm gestionadonr-k8s-otel-collector .
Importante
Práctica recomendada de seguridad: no almacene valores confidenciales como su clave de licencia directamente en la configuración. Recomendamos emplear un secreto de Kubernetes. Luego, el control del agente puede extraer de forma segura estos valores del secreto en tiempo de ejecución.
Configuración de ejemplo: configuración de agente remoto en Kubernetes
Los siguientes ejemplos muestran cómo configurar agentes individuales de forma remota desde la UI de New Relic Control.
Configuración remota: New Relic Infrastructure
Este ejemplo muestra cómo configurar de forma remota el agente New Relic Infrastructure para Kubernetes usando control de flota. Habilita la recopilación de métricas del proceso configurando enableProcessMetrics: true.
Configuración remota: Fluent Bit
Este ejemplo configuró Fluent Bit de forma remota a través de control de flota. Habilita el reporte métrico de salud desde el recolector de logs configurando sendMetrics: true.
Configuración remota: Prometheus
Este ejemplo configura el agente Prometheus de forma remota usando control de flota. Permite a low-data mode reducir el volumen de telemetría y desactivar la integración predeterminada.
Configuración remota: OpenTelemetry
Este ejemplo configura el recolector OpenTelemetry New Relic y habilita lowDataMode como una opción válida.
Importante
Práctica recomendada de seguridad: no almacene valores confidenciales como su clave de licencia directamente en la configuración. Recomendamos emplear un secreto de Kubernetes. Luego, el control del agente puede extraer de forma segura estos valores del secreto en tiempo de ejecución.
Configuración de proxy para Kubernetes
Agente Control admite la configuración de proxy para enrutar el tráfico a través de servidores proxy corporativos. La configuración del proxy se puede establecer a través de variables de entorno o directamente en el archivo de configuración.
Precedencia de proxy
Agent Control empleará la configuración de proxy en el siguiente orden de precedencia:
proxyampo de configuración en la configuración de Agent ControlHTTP_PROXYVariable ambientalHTTPS_PROXYVariable ambiental
Configuración de proxy con certificados autofirmados
Para configuraciones de proxy que emplean autenticación HTTPS con certificados autofirmados, debe proporcionar el paquete de certificados de CA y configurar la autenticación de proxy:
Configuración de proxy para agente gestionado
Advertencia
La configuración de un proxy en Agent Control no configura automáticamente las mismas configuraciones de proxy para el agente que gestiona. Cada agente tiene su propia configuración de proxy que debe configurar por separado según el formato de configuración y los requisitos específicos de ese agente.
Al emplear un proxy, también debe configurar los ajustes del proxy para cada agente gestionado individualmente. Consulte la documentación específica de cada agente para conocer las opciones de configuración del proxy.
Gestión de secretos
El control del agente proporciona un mecanismo sólido para gestionar datos confidenciales, como contraseñas y claves de API, al recuperarlos de proveedores de secretos dedicados. Esto garantiza que la información confidencial no se codifique de forma rígida directamente en los archivos de configuración. Actualmente, el sistema admite los proveedores descritos en Proveedores de valores.
Configuración del repositorio privado
Agente Control admite la configuración de un repositorio Helm privado para implementar tanto el propio Agente Control como el agente gestionado. Esto permite entornos en los que no se puede acceder directamente a los gráficos de New Relic Helm.
Advertencia
Al emplear el repositorio privado Helm, los gráficos deben ser compatibles y las imágenes referenciadas dentro de los gráficos deben ser accesibles. De lo contrario, el agente no funcionará como se espera.
1. Habilitar repositorio privado para agente
Por razones de seguridad, solo los repositorios explícitamente habilitados se permiten en la configuración remota. Para habilitar un repositorio específico, actualice la configuración del agente Control de la siguiente manera:
La configuración del repositorio permitida se puede usar luego en su configuración remota dentro de New Relic Control. Ejemplo:
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 nameAdemás, debe configurar la instalación Helm del agente Control para emplear su repositorio privado si el gráfico agent-control-bootstrap en sí está en un repositorio privado. Esto es independiente de la configuración del agente gestionado. Consulta el archivo agent-control-bootstrap Helm chart values.yaml para configurar la sección installationJob de la siguiente manera:
chartRepositoryUrl:La URL que contiene la ubicación de su repositorio.chartName:El nombre del gráfico si se emplea un nombre de gráfico diferente.repositorySecretReferenceNameyrepositoryCertificateSecretReferenceName: Los secretos necesarios para autenticar en su repositorio. Consulte la sección de autenticación a continuación para obtener más detalles.
2. Configurar la autenticación para el repositorio privado
Debe configurar recursos adicionales para habilitar la autenticación para acceder a su repositorio privado de la siguiente manera:
Configuración de Linux
Estas son las rutas predeterminadas para la configuración del control del agente:
Localarchivo de configuración:/etc/newrelic-agent-control/config.yamlRemotearchivo de configuración:/var/lib/newrelic-agent-control/config.yaml(si está habilitado mediante control de flota desplegable)- Definición de servicio:
/lib/systemd/system/newrelic-agent-control.service - Archivo de entorno de servicio:
/etc/newrelic-agent-control/newrelic-agent-control.conf
De forma predeterminada, el agente puede orquestar el agente de infraestructura y el recolector OpenTelemetry :
# Configures the integration with Fleet Controlfleet_control: # EU region? Use: https://opamp.service.eu.newrelic.com/v1/opamp # JP region? Use: https://opamp.service.jp.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 # JP region? Use: https://system-identity-oauth.service.jp.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/com.newrelic.opentelemetry.collector:0.1.0"Puede cambiar el nombre o eliminar cualquiera de los agentes según sus requisitos de observabilidad. El nombre del agente debe ser un nombre de etiqueta RFC-1035 válido.
También puede emplear variables de entorno para definir la configuración del agente:
- Emplee el prefijo
NR_(guión bajo único) para apuntar a la configuración principal de Control del agente. - Emplee
__(guiones bajos dobles) para apuntar las configuraciones disponibles en el Control de agente. Esto es necesario para evitar colisiones con claves de configuración que contienen guiones bajos. - Las variables de entorno solo tienen precedencia sobre el archivo de configuración local. Si la configuración remota está habilitada, no se consideran las variables de entorno.
- Por ejemplo, para definir una configuración dinámica para
fleet_control::endpoint, agregueNR_FLEET_CONTROL__ENDPOINT=https://opamp.service.newrelic.com/v1/opampen el archivo de definición de servicio.
Configurar el agente
Actualmente, agente Control puede gestionar los siguientes tipos de agentes predefinidos en el host:
- Agente de infraestructura New Relic :
newrelic/com.newrelic.infrastructure. Se admiten todas las características existentes en el agente de infraestructura, incluida la integración orquestada en el host y nuestro reenviador de integración de logs basado en FluentBit. - Distribución de New Relic para OpenTelemetry:
newrelic/com.newrelic.opentelemetry.collector
Cada tipo de agente ofrece un conjunto de variables opcionales que se pueden personalizar para adaptar su comportamiento. Para personalizar la configuración local del agente:
- Cree un archivo
values.yml: este archivo contendrá los valores de configuración deseados. - Coloque el archivo
values.ymlen el directorio/etc/newrelic-agent-control/fleet/agents.d/YOUR-AGENT-NAME/values/. Aquí,YOUR-AGENT-NAMEes el nombre real de su agente (por ejemplo,nr-infra-agent).
A continuación se muestra una lista de variables disponibles para las últimas versiones del tipo de agente:
- Agente de infraestructura New Relic :
0.1.0 - Distribución de New Relic para OpenTelemetry:
0.1.0
Tipo de agente | Variable | Tipo | Por defecto |
|---|---|---|---|
|
| Un YAML que contiene configuración de agente de infraestructura | (vacío) |
|
| Un mapa YAML (las claves son nombres de archivos) que contiene la configuración de integración en el host | (vacío) |
|
| Un mapa YAML (las claves son nombres de archivos) que contiene el reenvío de configuración de logs | (vacío) |
|
| Puerto para el servidor de estado local del agente de infraestructura |
|
|
| Configuración del recopilador OpenTelemetry (en formato YAML) | (vacío) |
|
| Ruta y puerto para la extensión de verificación del estado del recolector OTel local http extremo |
|
Todos los agentes gestionados |
| Tiempo hasta el próximo reintento si el recolector no se inicia (en segundos). |
|
Sugerencia
Puede configurar los ajustes del agente de infraestructura y los ajustes del recolectorOpenTelemetry según sea necesario siguiendo la configuración compatible.
Configuración de muestra
Configuración remota con control de flota
Los siguientes ejemplos contienen casos de uso comunes que están listos para copiar y pegar como configuración válida para el agente de control y el agente gestionado.
Configuración de Windows
Estas son las rutas predeterminadas para la configuración de Agent Control en Windows:
Localarchivo de configuración:C:\Program Files\New Relic\newrelic-agent-control\local-data\agent-control\local_config.yamlRemotearchivo de configuración:C:\ProgramData\New Relic\newrelic-agent-control\fleet-data\agent-control\remote_config.yaml(sincronizado desde Fleet Control)- Ejecutable del servicio:
C:\Program Files\New Relic\newrelic-agent-control\newrelic-agent-control.exe - Directorio de logs:
C:\ProgramData\New Relic\newrelic-agent-control\logs\
De forma predeterminada, Agent Control en Windows puede orquestar el agente de infraestructura y el colector de OpenTelemetry:
# Configures the integration with Fleet Controlfleet_control: endpoint: https://opamp.service.newrelic.com/v1/opamp headers: api-key: YOUR_INGEST_KEY auth_config: 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/com.newrelic.opentelemetry.collector:0.1.0"Sugerencia
Para cuentas regionales, use el extremo apropiado y token_url:
- Región de la UE:
https://opamp.service.eu.newrelic.com/v1/opampyhttps://system-identity-oauth.service.eu.newrelic.com/oauth2/token - Región de JP:
https://opamp.service.jp.newrelic.com/v1/opampyhttps://system-identity-oauth.service.jp.newrelic.com/oauth2/token
Puede cambiar el nombre o eliminar cualquiera de los agentes según sus requisitos de observabilidad. El nombre del agente debe ser un nombre de etiqueta RFC-1035 válido.
Notas de configuración específicas de Windows
- Las rutas de archivo usan barras invertidas (
\\) y rutas estilo Windows (por ejemplo,C:\\ProgramData\\...) - Los binarios del agente usan extensiones
.exe - El servicio se ejecuta como
LocalSystem— asegúrese de que los archivos de configuración tengan permisos de escritura restringidos - Las plantillas y configuraciones de entornos Linux pueden requerir ajustes de ruta para la compatibilidad con Windows
Configurar agentes
Agent Control en Windows actualmente puede gestionar los siguientes tipos de agentes:
- Agente de infraestructura de New Relic:
newrelic/com.newrelic.infrastructure. Admite integraciones en el host y reenvío de logs a través de Fluent Bit integrado. - Distribución de New Relic para OpenTelemetry:
newrelic/com.newrelic.opentelemetry.collector
Para personalizar la configuración local del agente, coloque un archivo values.yml en el directorio de valores del agente. Las variables disponibles son las mismas que para los hosts de Linux.
Configuración de muestra
Configuración remota con Fleet Control
Proveedores de valores
Los proveedores de valores permiten que el Control del agente resuelva valores de fuentes externas cuando se procesa una configuración, de modo que los datos confidenciales, como las claves de licencia, los tokens o las contraseñas, no tengan que estar codificados de forma rígida en los archivos de configuración.
Los valores se referencian con la sintaxis del marcador de posición ${NAMESPACE:NAME} dentro de las configuraciones del agente. El Control del agente los resuelve cada vez que se aplica una configuración, incluidas las actualizaciones de configuración remotas, por lo que los valores rotados se detectan sin reiniciar el Control del agente.
Importante
Si el Control del agente no puede resolver un valor, la representación de la configuración falla y el agente no se inicia. Esto evita que el agente se ejecute con una configuración incompleta o incorrecta.
Después de una resolución exitosa, Agent Control almacena el resultado renderizado en un secreto de Kubernetes o en un archivo de configuración privado para que lo utilice el agente correspondiente.
Proveedores de valores admitidos
Proveedor | namespace de marcador de posición | Requiere configuración |
|---|---|---|
Variables de entorno |
| No |
HashiCorp Vault |
| Sí |
Archivos locales |
| No |
Secretos de Kubernetes |
| No |
ConfigMaps de Kubernetes |
| No |
Configuración de proveedores de valores
Solo HashiCorp Vault requiere configuración explícita. Defínalo en la clave value_providers de la configuración de Agent Control. La clave legacy secrets_providers aún se acepta como alias.
value_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 client_timeout: 10s
fleet_control: ...
agents: ...Cada entrada en sources define una fuente de Vault con nombre con los siguientes ajustes:
Clave YAML | Requerido | Descripción |
|---|---|---|
| Sí | URL completa de Vault, incluida la ruta |
| Sí | Token utilizado para autenticarse en el extremo. |
| Sí | Versión del motor de secretos: |
| No | Tiempo de espera de HTTP para las requests de Vault. El valor predeterminado es |
Variables de entorno: nr-env
Lee un valor del entorno del host (disponible para el proceso de control del agente).
config_agent: license_key: "${nr-env:NEW_RELIC_LICENSE_KEY}"HashiCorp Vault: nr-vault
Lee una clave de un secreto KV de Vault. Requiere la configuración value_providers.vault descrita anteriormente.
El marcador de posición utiliza este formato:
"${nr-vault:SOURCE_NAME:MOUNT:PATH:KEY}"SOURCE_NAME: nombre de la fuente de Vault definida envalue_providers.MOUNT: nombre del montaje del motor de secretos.PATH: ruta al secreto.KEY: clave dentro del secreto que se va a recuperar.
Por ejemplo:
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}"Aquí, ${nr-vault:local-instance:secret:my_secret:username} recupera el valor de la clave username del secreto en secret/my_secret usando la fuente local-instance, y ${nr-vault:remote:my_mount:my_path:organization} recupera la clave organization de la fuente remote.
Archivos locales: nr-file
Lee el contenido de un archivo local, eliminando los espacios en blanco iniciales y finales.
El marcador de posición toma la ruta absoluta al archivo:
config_agent: license_key: "${nr-file:/etc/newrelic/license.key}"Secretos de Kubernetes: nr-kubesec
Lee una clave de un secreto de Kubernetes. Disponible solo en Kubernetes y no requiere configuración adicional siempre que el pod de Agent Control tenga permisos, a través de una cuenta de servicio y RBAC, para acceder a los secretos y namespace requeridos.
El marcador de posición utiliza este formato:
"${nr-kubesec:NAMESPACE:SECRET_NAME:KEY}"NAMESPACE: namespace donde se encuentra el secreto.SECRET_NAME: nombre del objeto secreto de Kubernetes.KEY: clave dentro del secreto que se va a recuperar.
ConfigMaps de Kubernetes: nr-kubecm
Lee una clave de un ConfigMap de Kubernetes. Disponible solo en Kubernetes y no requiere configuración adicional siempre que el pod de control del agente tenga permisos para acceder a los ConfigMaps y namespace requeridos.
El marcador de posición utiliza este formato:
"${nr-kubecm:NAMESPACE:CONFIGMAP_NAME:KEY}"NAMESPACE: namespace donde se encuentra el ConfigMap.CONFIGMAP_NAME: nombre del objeto ConfigMap de Kubernetes.KEY: clave dentro del ConfigMap que se va a recuperar.