L'agent infrastructure pour Linux prend en charge les environnements de conteneurs par défaut. Si vous exécutez un système d’exploitation conteneurisé ou si vous avez des restrictions qui nécessitent d’utiliser l’agent en tant que conteneur, vous pouvez exécuter une version conteneurisée de notre agent infrastructure . Cela peut monitorer les métriques du conteneur lui-même, ainsi que l'hôte sous-jacent.
L’utilisation de la configuration personnalisée (recommandée) ou de base permet à l’agent d’infrastructure de s’exécuter dans un environnement de conteneur. Un hôte ne peut exécuter qu'une seule instance de l'agent à la fois, qu'il s'agisse de l'agent conteneurisé ou de la version non conteneurisée.
Ce dont vous avez besoin
La version conteneurisée de l'agent d'infrastructure nécessite Docker 1.12 ou supérieur.
À partir de la version 1.42, l'agent d'infrastructure prend en charge containerd
, il peut donc être utilisé dans Kubernetes v1.24+, qui a supprimé la prise en charge de Dockershim ou de toute autre solution basée sur containerd
. Si les sockets d'exécution containerd
et dockerd
sont tous deux disponibles, l'agent d'infrastructure fonctionnera avec le socket d'exécution containerd
. Le conteneur doit s'exécuter sur une distribution Linux et une version prise en charge par l'agent d'infrastructure. L'image du conteneur est disponible et prise en charge sur les architectures AMD64 et ARM64.
Le redirecteur de logn'est pas inclus avec l'agent conteneurisé. Nous vous recommandons d'installer l'agent sur l'hôte sous-jacent qui fournit toutes les fonctionnalités.
Configuration personnalisée (recommandée)
Voici les instructions de base pour créer une image Docker personnalisée sur Linux. Cela vous permet d'utiliser l'agent infrastructure comme un conteneur pouvant monitorer son hôte sous-jacent.
Recommandation : étendez l’ imagenewrelic/infrastructure
et utilisez votre propre fichier de configuration d’agent newrelic-infra.yml
. Une fois votre image construite, vous pouvez facilement lancer un conteneur sans avoir à fournir plus de configuration de temps de lancement. Ne fournissez pas de secrets à l’aide de variables d’environnement avec Docker.
Interface de ligne de commande Docker
Créez le fichier de configuration de l'agent
newrelic-infra.yml
avec votre New Relic . Pour les explications des options de configuration, voir les paramètres de configuration.license_key: YOUR_LICENSE_KEYCréez l'extension
Dockerfile
de l'imagenewrelic/infrastructure
et ajoutez votre configuration à/etc/newrelic-infra.yml
:FROM newrelic/infrastructure:latestADD newrelic-infra.yml /etc/newrelic-infra.ymlCréez et tag votre image :
bash$docker build -t YOUR_IMAGE_NAME .Exécutez le conteneur à partir de l'image que vous avez créée avec les indicateurs d'exécution requis :
bash$docker run \>-d \>--name newrelic-infra \>--network=host \>--cap-add=SYS_PTRACE \>--privileged \>--pid=host \>--cgroupns=host \ # required on cgroup v2>-v "/:/host:ro" \>-v "/var/run/docker.sock:/var/run/docker.sock" \>YOUR_IMAGE_NAMEPour connaître les prochaines étapes potentielles, comme la façon d'afficher les données dans l'UI, consultez Quelle est la prochaine étape ?
Docker Compose
Créez un dossier pour stocker les fichiers de configuration :
bash$mkdir ~/newrelic-infra-setupChangez de répertoire pour celui que vous venez de créer :
bash$cd ~/newrelic-infra-setupCréez le fichier de configuration de l'agent
newrelic-infra.yml
avec votre New Relic . Pour les explications des options de configuration, voir les paramètres de configuration.bash$echo "license_key: YOUR_LICENSE_KEY" > newrelic-infra.ymlCréez l'extension
newrelic-infra.dockerfile
de l'imagenewrelic/infrastructure
et ajoutez votre configuration à/etc/newrelic-infra.yml
:bash$touch newrelic-infra.dockerfilebash$vim newrelic-infra.dockerfile # you can use any text editorMettez le contenu suivant dans le fichier :
FROM newrelic/infrastructure:latestADD newrelic-infra.yml /etc/newrelic-infra.ymlCréer
docker-compose.yaml
:bash$touch docker-compose.yamlbash$vim docker-compose.yaml # you can use any text editorMettez le contenu suivant dans le fichier :
version: '3'services:agent:container_name: newrelic-infrabuild:context: .dockerfile: newrelic-infra.dockerfilecap_add:- SYS_PTRACEnetwork_mode: hostpid: hostprivileged: truevolumes:- "/:/host:ro"- "/var/run/docker.sock:/var/run/docker.sock"restart: unless-stoppedConstruire et démarrer
docker-compose
:bash$docker-compose -f docker-compose.yaml up -dPour connaître les prochaines étapes potentielles, comme la façon d'afficher les données dans l'UI, consultez Quelle est la prochaine étape ?
Configuration de base
Pour utiliser la configuration de base avec une image de base de l'infrastructure New Relic :
Interface de ligne de commande Docker
Exécutez le conteneur avec les indicateurs d’exécution requis:
bash$docker run \>-d \>--name newrelic-infra \>--network=host \>--cap-add=SYS_PTRACE \>--privileged \>--pid=host \>--cgroupns=host \ # required on cgroup v2>-v "/:/host:ro" \>-v "/var/run/docker.sock:/var/run/docker.sock" \>-e NRIA_LICENSE_KEY=YOUR_LICENSE_KEY \>newrelic/infrastructure:latestPour connaître les prochaines étapes potentielles, comme la façon d'afficher les données dans l'UI, consultez Quelle est la prochaine étape ?
Docker Compose
Créer
docker-compose.yaml
:bash$touch docker-compose.yamlbash$vim docker-compose.yaml # you can use any text editorMettez le contenu suivant dans le fichier :
version: '3'services:agent:container_name: newrelic-infraimage: newrelic/infrastructure:latestcap_add:- SYS_PTRACEnetwork_mode: hostpid: hostprivileged: truevolumes:- "/:/host:ro"- "/var/run/docker.sock:/var/run/docker.sock"environment:NRIA_LICENSE_KEY: "YOUR_LICENSE_KEY"restart: unless-stoppedConstruire et démarrer
docker-compose
:bash$docker-compose -f docker-compose.yaml up -dPour connaître les prochaines étapes potentielles, comme la façon d'afficher les données dans l'UI, consultez Quelle est la prochaine étape ?
Privilèges de conteneur requis
En raison de l'isolement des ressources de l'hôte et des autres conteneurs via l'espace de nommage Linux, un conteneur a par défaut une vue et un contrôle très restreints des ressources de son hôte sous-jacent. Sans ces privilèges supplémentaires, l'agent infrastructure ne peut pas monitorer l'hôte et son conteneur.
L'agent d'infrastructure collecte des données sur son hôte à l'aide de fichiers système et d'appels système. Pour plus d'informations sur la manière dont l'agent infrastructure collecte les données, consultez notre documentation sur monitoring d'infrastructure et la sécurité. Les privilèges requis incluent :
Obligatoire lors de l'utilisation de Docker sur cgroup v2 car il est privé par défaut. Cela permet à l'agent de collecter les métriques du conteneur. Il est disponible depuis l'API du moteur Docker v1.41.
Privilège | Description |
---|---|
| Définit l'espace de nommage réseau du conteneur sur l'espace de nommage réseau de l'hôte. Cela permet à l'agent de collecter les métriques réseau sur l'hôte. |
| Bind monte le volume racine de l'hôte sur le conteneur. Cet accès en lecture seule à la racine de l'hôte permet à l'agent de collecter les métriques de processus et de stockage ainsi que les données d'inventaire de l'hôte. |
| Ajoute la capacité Linux à trace les processus système. Cela permet à l'agent de collecter des données sur les processus en cours d'exécution sur l'hôte. Lire la suite ici. |
| |
| |
| |
| Bind monte le socket du daemon Docker de l'hôte sur le conteneur. Cela permet à l'agent de se connecter à l'API Engine via le socket du daemon Docker pour collecter les données du conteneur de l'hôte. Si vous interagissez plutôt avec l'environnement d'exécution |
Ce document vous a-t-il aidé lors de votre installation ?
Prochaines étapes après l'installation
Pour connaître les étapes suivantes une fois l’installation terminée, consultez Quelle est la prochaine étape ?
Inventaire collecté
L'inventaire est collecté à partir du collecteur de données intégré de l'agent infrastructure . L'agent infrastructure collecte ces données pour le système Linux exécuté avec conteneur.
Catégorie | Source | Données collectées à l'aide de |
---|---|---|
|
| Fichier de configuration complet de l'agent |
|
|
données du conteneur
Une fois que l'agent infrastructure est exécuté dans un conteneur Docker , il peut collecter les mêmes données de calcul d'hôte et les mêmes données d'événement que l'agent infrastructure est capable de collecter lorsqu'il s'exécute nativement sur un hôte. Pour plus d'informations, consultez notre documentation sur la façon d' afficher les données de votre conteneur Docker.
Image d'agent conteneurisé
L'image de l'agent conteneurisé est construite à partir d'une image de base Alpine.
Vérifiez le code source
Cette intégration est un logiciel open source. Vous pouvez parcourir son code source et envoyer des améliorations, ou créer votre propre fork et le construire.