Important
Agent Control et New Relic Control sont désormais disponibles en version générale pour Kubernetes ! La prise en charge des hôtes Linux et Windows fait également partie du programme public preview, conformément à nos politiques de pré-lancement.
Agent Control fournit une approche transparente pour configuration indépendamment de l'environnement dans lequel il est déployé. Deux méthodes de gestion de la configuration de l'agent sont disponibles :
Configuration locale : un fichier
values.yamlcomplet utilisé lors de l'installation initiale Helm .Configuration à distance : une configuration centralisée basée sur YAML que vous créez dans New Relic Control et qui est déployée à distance sur l'ensemble de votre flotte.
La configuration à distance est la méthode recommandée pour la gestion quotidienne. Il garantit un comportement cohérent de l'agent dans votre environnement, simplifie la gestion des changements et vous permet d'évoluer sans mettre à jour manuellement les fichiers YAML locaux sur chaque hôte.
Conseil
Le fichier values-newrelic.yaml , qui définissait traditionnellement les paramètres de l'agent New Relic, inclut désormais également la configuration du contrôle de l'agent. Les paramètres que vous définissez dans ce fichier déterminent le fonctionnement d'Agent Control et de ses agents gérés. Ce fichier est appelé configuration locale.
Comprendre les deux couches de configuration
La configuration d'Agent Control est structurée en deux couches :
Configuration principale d'Agent Control : il s'agit des paramètres de niveau supérieur qui contrôlent le fonctionnement d'Agent Control, tels que sa connexion à New Relic, son identité et les détails de gestion de flotte.
Configuration des agents gérés : il s'agit des
chart_valuesindividuels pour chaque sous-agent (par exemple, agent d'infrastructure, Fluent Bit) que Agent Control déploie et gère.
Lorsqu'une configuration locale et une configuration distante sont toutes deux présentes, Agent Control applique la logique suivante :
- La configuration à distance est prioritaire. Tous les paramètres définis dans une configuration distante à partir de New Relic Control remplaceront les paramètres correspondants dans le fichier
values.yamllocal. - Pour remplacer intentionnellement les paramètres distants par votre configuration locale, vous pouvez déployer une configuration distante vide via New Relic Control. Ce changement s'appliquera à tous les clusters de la flotte sélectionnée.
configurationKubernetes
Ces instructions et exemples s’appliquent à Agent Control exécuté sur un cluster Kubernetes.
configuration locale values.yaml pour Kubernetes
Le fichier de configuration local pour Kubernetes, utilisé lors de l'installation, contient tous les paramètres d'Agent Control et de ses agents gérés.
Cet exemple montre les deux couches de configuration dans un seul fichier.
L'exemple montre comment configurer Agent Control avec deux agents gérés :Kubernetes infrastructure l'agent et Fluent Bit pour le transfert de log . Par exemple, si vous ne souhaitez pas envoyer de mesures de santé pour votre Fluent Bit log collecteur, définissez simplement sendMetrics: false dans le fichier YAML avant d'exécuter la commande d'installation.
configuration à distance pour Kubernetes
La configuration à distance garantit un comportement cohérent de l'agent dans votre environnement, simplifie la gestion des changements et vous permet de faire évoluer l'observabilité sans gérer manuellement les fichiers YAML locaux.
Pour déployer la configuration de manière centralisée sur le cluster, définissez ce même contenu YAML dans la section de Configurations de contrôle de la flotte. Vous pouvez ensuite appliquer la configuration à une flotte entière de clusters dans le cadre d’un déploiement à distance. Il s’agit du fichier de configuration à distance .
Conseil
Lorsque vous définissez une configuration dans l’interface utilisateur de contrôle New Relic, la structure YAML est différente. Vous fournissez uniquement le YAML correspondant au bloc content pour un seul agent.
Exemple de configuration : Contrôle des agents sur Kubernetes
configuration : Agent Control sur Kubernetes Les exemples suivants montrent comment configurer Agent Control pour gérer différents ensembles d'agents. Ces configurations peuvent être utilisées soit lors de l'installation initiale, soit dans le cadre d'une configuration à distance dans le contrôle de la flotte.
Pour explorer tous les paramètres de configuration disponibles, reportez-vous à values-newrelic.yaml.
Les exemples suivants montrent comment configurer Agent Control avec un ensemble de sous-agents à l'aide du fichier values.yaml local.
Contrôle des agents avec New Relic Infrastructure et Fluent Bit
Cet exemple déploie Agent Control avec monitoring d'infrastructure et Fluent Bit pour la collecte log .
Contrôle des agents avec OpenTelemetry et paramètres de collecteur personnalisés
avec OpenTelemetry et les paramètres de collecteur personnalisés Cet exemple déploie Agent Control avec la distribution New Relic d' OpenTelemetry (NRDOT) collecteur et désactive le filelog Récepteur dans le graphique Helm nr-k8s-otel-collector géré.
Important
Meilleure pratique de sécurité : ne stockez pas de valeurs sensibles comme votre clé de licence directement dans la configuration. Nous vous recommandons d’utiliser un secret Kubernetes. Agent Control peut ensuite extraire en toute sécurité ces valeurs du secret au moment de l'exécution.
Exemple de configuration : configuration de l'agent distant sur Kubernetes
Les exemples suivants montrent comment configurer des agents individuels à distance à partir de l'interface utilisateur de New Relic Control .
Configuration à distance : infrastructure New Relic
Cet exemple montre comment configurer à distance l'agent New Relic Infrastructure pour Kubernetes à l'aide du contrôle de la flotte. Il permet la collecte de métriques de processus en définissant enableProcessMetrics: true.
Configuration à distance : Fluent Bit
Cet exemple a configuré Fluent Bit à distance via le contrôle de la flotte. Il active les rapports de métriques de santé à partir du collecteur log en définissant sendMetrics: true.
Configuration à distance : Prometheus
Cet exemple configure l'agent Prometheus à distance à l'aide du contrôle de la flotte. Il permet à low-data mode de réduire le volume de télémétrie et de désactiver l'intégration par défaut.
Configuration à distance : OpenTelemetry
Cet exemple configure le collecteur New Relic OpenTelemetry et active lowDataMode comme option valide.
Important
Meilleure pratique de sécurité : ne stockez pas de valeurs sensibles comme votre clé de licence directement dans la configuration. Nous vous recommandons d’utiliser un secret Kubernetes. Agent Control peut ensuite extraire en toute sécurité ces valeurs du secret au moment de l'exécution.
configuration du proxy pour Kubernetes
Agent Control prend en charge la configuration du proxy pour acheminer le trafic via les proxys d'entreprise. Les paramètres proxy peuvent être définis via des variables d'environnement ou directement dans le fichier de configuration.
Préséance de proxy
Agent Control utilisera les paramètres proxy dans l'ordre de priorité suivant :
proxyChamp de configuration dans la configuration de Agent ControlHTTP_PROXYvariable d'environnementHTTPS_PROXYvariable d'environnement
Configuration du proxy avec des certificats auto-signés
Pour les configurations de proxy utilisant l'authentification HTTPS avec des certificats auto-signés, vous devez fournir le bundle de certificats CA et configurer l'authentification proxy :
Configuration du proxy pour les agents gérés
Prudence
La configuration d'un proxy dans Agent Control ne configure pas automatiquement les mêmes paramètres de proxy pour les agents qu'il gère. Chaque agent possède sa propre configuration proxy qui doit être définie séparément en fonction du format de configuration et des exigences spécifiques de cet agent.
Lorsque vous utilisez un proxy, vous devez également configurer les paramètres de proxy pour chaque agent géré individuellement. Reportez-vous à la documentation spécifique de chaque agent pour les options de configuration du proxy.
Gestion des secrets
Agent Control fournit un mécanisme robuste pour gérer les données sensibles, telles que les mots de passe et les clés API, en les récupérant à partir de fournisseurs de secrets dédiés. Cela garantit que les informations sensibles ne sont pas codées en dur directement dans les fichiers de configuration. Le système prend actuellement en charge les fournisseurs décrits dans Fournisseurs de valeurs.
Configuration du référentiel privé
Agent Control prend en charge la configuration de Helm privé pour déployer à la fois Agent Control lui-même et les agents gérés. Cela permet des environnements dans lesquels les cartes New Relic Helm ne sont pas directement accessibles.
Prudence
Lors de l'utilisation du référentiel privé Helm, les cartes doivent être compatibles et les images référencées dans les cartes doivent être accessibles. Dans le cas contraire, les agents ne fonctionneront pas comme prévu.
1. Activer le référentiel privé pour les agents
Pour des raisons de sécurité, seuls les référentiels explicitement activés sont autorisés en configuration à distance. Pour activer un référentiel spécifique, mettez à jour la configuration du contrôle de l'agent comme suit :
La configuration référentielle autorisée peut ensuite être utilisée dans votre configuration à distance au sein de New Relic Control. Exemple:
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 nameDe plus, vous devez configurer l'installation Helm d'Agent Control pour utiliser votre référentiel privé si le graphique agent-control-bootstrap lui-même se trouve dans un référentiel privé. Ceci est distinct de la configuration des agents gérés. Reportez-vous au fichier agent-control-bootstrap Helm chart values.yaml pour configurer la section installationJob comme suit :
chartRepositoryUrl: L'URL contenant l'emplacement de votre référentiel.chartName: Le nom du graphique si vous utilisez un nom de graphique différent.repositorySecretReferenceNameetrepositoryCertificateSecretReferenceName: les secrets requis pour l’authentification auprès de votre référentiel. Consultez la section authentification ci-dessous pour plus de détails.
2. Configurer l'authentification pour le référentiel privé
Vous devez configurer des ressources supplémentaires pour activer l’authentification afin d’accéder à votre référentiel privé comme suit :
configurationLinux
Voici les chemins par défaut pour la configuration du contrôle des agents :
Localfichier de configuration:/etc/newrelic-agent-control/config.yamlRemotefichier configuration :/var/lib/newrelic-agent-control/config.yaml(si activé via le contrôle de la flotte déployée)- Définition du service :
/lib/systemd/system/newrelic-agent-control.service - Fichier d'environnement de service :
/etc/newrelic-agent-control/newrelic-agent-control.conf
Par défaut, l'agent peut orchestrer l'agent d'infrastructure et le collecteur 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"Vous pouvez renommer ou supprimer l’un ou l’autre des agents en fonction de vos besoins d’observabilité. Le nom de l'agent doit être un nom d'étiquette RFC-1035 valide.
Vous pouvez également utiliser des variables d’environnement pour définir les paramètres de l’agent :
- Utilisez le préfixe
NR_(soulignement simple) pour cibler la configuration principale du contrôle de l'agent. - Utilisez
__(double trait de soulignement) pour cibler les paramètres disponibles dans Agent Control. Ceci est nécessaire pour éviter les collisions avec les clés de configuration qui contiennent des traits de soulignement. - Les variables d'environnement n'ont priorité que sur le fichier de configuration local. Si la configuration à distance est activée, les variables d'environnement ne sont pas prises en compte.
- Par exemple, pour définir une configuration dynamique pour le
fleet_control::endpoint, ajoutez leNR_FLEET_CONTROL__ENDPOINT=https://opamp.service.newrelic.com/v1/opampdans le fichier de définition de service.
Configurer les agents
Agent Control peut actuellement gérer les types d'agents sur hôte prédéfinis suivants :
- Agent d'infrastructure New Relic :
newrelic/com.newrelic.infrastructure. Toutes les fonctionnalités existantes de l' agentinfrastructure sont prises en charge, y compris l'orchestration de l'intégration sur hôte et l'intégration de notre redirecteur de log basé sur FluentBit. - Distribution New Relic pour OpenTelemetry :
newrelic/com.newrelic.opentelemetry.collector
Chaque type d'agent offre un ensemble de variables facultatives qui peuvent être personnalisées pour adapter son comportement. Pour personnaliser la configuration locale de l’agent :
- Créez un fichier
values.yml: ce fichier contiendra les valeurs de configuration souhaitées. - Placez le fichier
values.ymldans le répertoire/etc/newrelic-agent-control/fleet/agents.d/YOUR-AGENT-NAME/values/. Ici,YOUR-AGENT-NAMEest le nom réel de votre agent (par exemple,nr-infra-agent).
Voici une liste des variables disponibles pour les dernières versions de type d'agent :
- Agent d'infrastructure New Relic :
0.1.0 - Distribution New Relic pour OpenTelemetry :
0.1.0
Type d'agent | Variable | Type | Défaut |
|---|---|---|---|
|
| Un YAML contenant la configuration de l'agent infrastructure | (vide) |
|
| Une map YAML (les clés sont des noms de fichiers) contenant la configuration de l'intégration sur hôte | (vide) |
|
| Une carte YAML (les clés sont des noms de fichiers) contenant la configuration du transfert de logs | (vide) |
|
| Port pour le serveur d'état local de l'agent d'infrastructure |
|
|
| configuration du collecteur OpenTelemetry (au format YAML) | (vide) |
|
| Chemin et port pour l' extension de vérification de l'état de santé du Collecteur Otel, point de terminaison http local |
|
Tous les agents gérés |
| Temps jusqu'à la prochaine tentative si le collecteur ne parvient pas à démarrer (en secondes). |
|
Conseil
Vous pouvez configurer les paramètres de l'agent d'infrastructure et les paramètres du collecteur OpenTelemetry selon vos besoins en fonction des configurations prises en charge.
Exemple de configuration
Configuration à distance avec contrôle de la flotte
Les exemples suivants contiennent des cas d’utilisation courants prêts à être copiés et collés en tant que configuration valide pour Agent Control et les agents gérés.
Configuration Windows
Voici les chemins par défaut pour la configuration d'Agent Control sous Windows :
Localfichier de configuration:C:\Program Files\New Relic\newrelic-agent-control\local-data\agent-control\local_config.yamlRemotefichier de configuration :C:\ProgramData\New Relic\newrelic-agent-control\fleet-data\agent-control\remote_config.yaml(synchronisé depuis Fleet Control)- Exécutable du service :
C:\Program Files\New Relic\newrelic-agent-control\newrelic-agent-control.exe - Répertoire des logs :
C:\ProgramData\New Relic\newrelic-agent-control\logs\
Par défaut, Agent Control sous Windows peut orchestrer l'agent d'infrastructure et le collecteur 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"Conseil
Pour les comptes régionaux, utilisez le point de terminaison approprié et token_url:
- Région UE :
https://opamp.service.eu.newrelic.com/v1/opampethttps://system-identity-oauth.service.eu.newrelic.com/oauth2/token - Région Japon :
https://opamp.service.jp.newrelic.com/v1/opampethttps://system-identity-oauth.service.jp.newrelic.com/oauth2/token
Vous pouvez renommer ou supprimer l’un ou l’autre des agents en fonction de vos besoins d’observabilité. Le nom de l'agent doit être un nom d'étiquette RFC-1035 valide.
Notes de configuration spécifiques à Windows
- Les chemins de fichiers utilisent des barres obliques inverses (
\\) et des chemins de type Windows (par exemple,C:\\ProgramData\\...) - Les binaires de l'Agent utilisent des extensions
.exe - Le service s'exécute en tant que
LocalSystem— assurez-vous que les fichiers de configuration ont des permissions d'écriture restreintes - Les modèles et configurations provenant d'environnements Linux peuvent nécessiter des ajustements de chemin pour la compatibilité Windows
Configurer les agents
Agent Control sous Windows peut actuellement gérer les types d'agents suivants :
- Agent d'infrastructure New Relic :
newrelic/com.newrelic.infrastructure. Prend en charge les intégrations sur l'hôte et le transfert de logs via le Fluent Bit intégré. - Distribution New Relic pour OpenTelemetry :
newrelic/com.newrelic.opentelemetry.collector
Pour personnaliser la configuration locale de l'agent, placez un fichier values.yml dans le répertoire values de l'agent. Les variables disponibles sont les mêmes que pour les hôtes Linux.
Exemple de configuration
Configuration à distance avec Fleet Control
Fournisseurs de valeurs
Les fournisseurs de valeurs permettent à Agent Control de résoudre des valeurs provenant de sources externes lorsqu’une configuration est rendue, de sorte que les données sensibles telles que les clés de licence, les jetons, ou les mots de passe n’ont pas besoin d’être codées en dur dans vos fichiers de configuration.
Les valeurs sont référencées avec la syntaxe d’espace réservé ${NAMESPACE:NAME} dans la configuration de l’agent. Agent Control les résout chaque fois qu’une configuration est appliquée, y compris lors des mises à jour de configuration à distance, de sorte que les valeurs soumises à une rotation sont prises en compte sans redémarrer Agent Control.
Important
Si Agent Control ne parvient pas à résoudre une valeur, le rendu de la configuration échoue, et l’agent n’est pas démarré. Cela empêche les agents de s’exécuter avec des configurations incomplètes, ou incorrectes.
Après une résolution réussie, Agent Control stocke le résultat rendu dans un secret Kubernetes ou dans un fichier de configuration privé pour être utilisé par l’agent correspondant.
Fournisseurs de valeurs pris en charge
Fournisseur | Espace de nommage de l’espace réservé | Nécessite une configuration |
|---|---|---|
Variables d'environnement |
| Non |
HashiCorp Vault |
| Oui |
Fichiers locaux |
| Non |
Les secrets de Kubernetes |
| Non |
ConfigMaps Kubernetes |
| Non |
Configuration des fournisseurs de valeurs
Seul HashiCorp Vault nécessite une configuration explicite. Définissez-le sous la clé value_providers de la configuration de Agent Control. La clé legacy secrets_providers est toujours acceptée comme 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: ...Chaque entrée sous sources définit une source Vault nommée avec les paramètres suivants :
Clé YAML | Requis | Description |
|---|---|---|
| Oui | URL complète de Vault, incluant le chemin |
| Oui | Jeton utilisé pour s’authentifier auprès du point de terminaison. |
| Oui | Version du moteur secret : |
| Non | Délai d'attente HTTP pour les requests Vault. La valeur par défaut est |
Variables d'environnement : nr-env
Lit une valeur à partir de l'environnement hôte (disponible pour le processus Agent Control).
config_agent: license_key: "${nr-env:NEW_RELIC_LICENSE_KEY}"HashiCorp Vault : nr-vault
Lit une clé à partir d'un secret KV Vault. Nécessite la configuration value_providers.vault décrite ci-dessus.
L’espace réservé utilise ce format :
"${nr-vault:SOURCE_NAME:MOUNT:PATH:KEY}"SOURCE_NAME: nom de la source Vault définie dansvalue_providers.MOUNT: nom du support moteur secret.PATH: chemin vers le secret.KEY: clé dans le secret à récupérer.
Par exemple:
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}"Ici, ${nr-vault:local-instance:secret:my_secret:username} récupère la valeur de la clé username à partir du secret à secret/my_secret en utilisant la source local-instance, et ${nr-vault:remote:my_mount:my_path:organization} récupère la clé organization à partir de la source remote.
Fichiers locaux : nr-file
Lit le contenu d'un fichier local, en supprimant les espaces de début et de fin.
L'espace réservé prend le chemin absolu vers le fichier :
config_agent: license_key: "${nr-file:/etc/newrelic/license.key}"Secrets Kubernetes : nr-kubesec
Lit une clé à partir d’un secret Kubernetes. Disponible sur Kubernetes uniquement, et ne nécessite aucune configuration supplémentaire tant que le pod Agent Control dispose des autorisations, via un compte de service et le RBAC, pour accéder aux secrets et espaces de nommage requis.
L’espace réservé utilise ce format :
"${nr-kubesec:NAMESPACE:SECRET_NAME:KEY}"NAMESPACE: espace de nommage où se trouve le secret.SECRET_NAME: nom de l’objet secret Kubernetes.KEY: clé dans le secret à récupérer.
ConfigMaps Kubernetes : nr-kubecm
Lit une clé à partir d'un ConfigMap Kubernetes. Disponible uniquement sur Kubernetes, et ne nécessite aucune configuration supplémentaire tant que le pod Agent Control dispose des autorisations pour accéder aux ConfigMaps et espaces de nommage requis.
L’espace réservé utilise ce format :
"${nr-kubecm:NAMESPACE:CONFIGMAP_NAME:KEY}"NAMESPACE: espace de nommage où se trouve le ConfigMap.CONFIGMAP_NAME: nom de l’objet ConfigMap Kubernetes.KEY: clé à récupérer dans la ConfigMap.