Monitorez vos conteneurs Docker en installant un collecteur OpenTelemetry directement sur les hôtes Linux. Ce guide fournit des instructions de configuration complètes pour la collecte des métriques de conteneurs et la collecte facultative de logs à l'aide du New Relic NRDOT Collector (recommandé) ou de l'OpenTelemetry Collector Contrib.
Avant de commencer
Un compte New Relic avec un
Docker Engine (version d'API 1.25+) installé et en cours d'exécution
Accès au socket Docker (généralement
/var/run/docker.sock)L'un des collecteurs suivants installés sur un hôte Linux :
- NRDOT Collector (recommandé - distribution OpenTelemetry de New Relic), ou
- OpenTelemetry Collector Contrib (option alternative)
Accès réseau de l'hôte Linux vers :
- Socket Docker Engine
- L'un des points de terminaison New Relic OTLP
Pour la collecte de logs : droits de lecture sur le répertoire
/var/lib/docker/containers/(nécessite généralement d'être root ou membre du groupe docker)
Vérifiez votre configuration
Étapes d'intégration
Suivez ces étapes pour configurer la supervision des conteneurs Docker avec OpenTelemetry. Choisissez votre type de collecteur ci-dessous :
Installer le collecteur NRDOT
Le NRDOT Collector est la distribution New Relic d'OpenTelemetry avec des paramètres préconfigurés optimisés pour New Relic.
Conseil
Si NRDOT Collector est déjà installé, vous pouvez passer à l'étape 2 pour le configurer pour le monitoring de Docker.
Installation DEB (Debian/Ubuntu) :
$# Example version - check releases for latest: https://github.com/newrelic/nrdot-collector-releases/releases$export collector_version="1.10.0"$export collector_arch="amd64" # or arm64$
$curl -L "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/nrdot-collector_${collector_version}_linux_${collector_arch}.deb" -o collector.deb$sudo dpkg -i collector.deb$
$# Disable auto-start until configuration is complete$sudo systemctl disable nrdot-collector$sudo systemctl stop nrdot-collectorInstallation RPM (RHEL/CentOS/Fedora) :
$# Example version - check releases for latest: https://github.com/newrelic/nrdot-collector-releases/releases$export collector_version="1.10.0"$export collector_arch="x86_64" # or arm64$
$curl -L "https://github.com/newrelic/nrdot-collector-releases/releases/download/${collector_version}/nrdot-collector_${collector_version}_linux_${collector_arch}.rpm" -o collector.rpm$sudo rpm -i collector.rpm$
$# Disable auto-start until configuration is complete$sudo systemctl disable nrdot-collector$sudo systemctl stop nrdot-collectorAutres distributions Linux: Pour les installations par archive ou d'autres méthodes, consultez le guide d'installation NRDOT.
Vérifier l'installation :
$nrdot-collector --versionSortie attendue : Informations de version
Configurer le collecteur pour le monitoring de Docker
Pour NRDOT Collector, créez un fichier de configuration de monitoring Docker autonome qui remplace la configuration par défaut.
Important
Monitoring autonome vs combiné: cette configuration monitore uniquement les conteneurs Docker. Si vous avez également besoin de métriques d'hôte (CPU, mémoire, disque) ou de logs système, utilisez la configuration par défaut du NRDOT Collector qui inclut les récepteurs hostmetrics et filelog, et ajoutez-y le récepteur docker_stats.
Créez /etc/nrdot-collector/docker-stats-config.yaml avec le contenu suivant :
receivers: # Docker Stats Receiver - collects container metrics docker_stats: endpoint: unix:///var/run/docker.sock collection_interval: 15s timeout: 5s api_version: "1.25" # Most metrics required for New Relic UI are enabled by default: # CPU: container.cpu.usage.total, container.cpu.utilization # Memory: container.memory.usage.total, container.memory.percent # Network: container.network.io.usage.tx_bytes, container.network.io.usage.rx_bytes # container.network.io.usage.tx_dropped, container.network.io.usage.rx_dropped # Storage: container.blockio.io_service_bytes_recursive # # The following metrics need to be explicitly enabled: metrics: # Required for New Relic UI container.pids.count: enabled: true # Additional network error metrics container.network.io.usage.tx_errors: enabled: true container.network.io.usage.rx_errors: enabled: true
processors: # Batch processor optimizes data transmission batch: timeout: 10s send_batch_size: 1024
# Transform processor - removes descriptions and units transform: metric_statements: - context: metric statements: - set(description, "") - set(unit, "")exporters: otlp_http: endpoint: ${env:OTEL_EXPORTER_OTLP_ENDPOINT:-https://otlp.nr-data.net} headers: api-key: ${env:NEW_RELIC_LICENSE_KEY} compression: gzip
service: pipelines: metrics/docker: receivers: [docker_stats] processors: [transform, batch] exporters: [otlp_http]Configurer les permissions du socket Docker
Le collecteur a besoin d'accéder au socket Docker pour collecter les métriques des conteneurs. Accordez à l'utilisateur du collecteur l'accès au groupe Docker.
$# Add nrdot-collector user to docker group$sudo usermod -aG docker nrdot-collector$
$# Verify the user was added$groups nrdot-collector$
$# Restart Docker to apply group changes$sudo systemctl restart docker$
$# Test Docker socket access$sudo -u nrdot-collector docker psSi la commande de test réussit et affiche vos conteneurs, les permissions sont correctement configurées.
Facultatif - Configurer la collecte de logs
Vous pouvez également collecter les logs de vos conteneurs Docker en utilisant le créateur de récepteur OpenTelemetry avec l'extension observateur Docker.
Important
Prérequis pour la collecte de logs :
- Le processus du collecteur doit disposer des droits de lecture sur le répertoire
/var/lib/docker/containers/. Cela nécessite généralement d'exécuter le collecteur en tant que root ou d'ajouter l'utilisateur du collecteur au groupe docker. - Les ports des conteneurs doivent être exposés pour que le créateur de récepteurs puisse découvrir et collecter les logs des conteneurs.
Ajoutez la configuration de la collecte de logs à votre fichier docker-stats-config.yaml existant.
extensions: # Docker observer - discovers running containers docker_observer: endpoint: unix:///var/run/docker.sock use_hostname_if_present: true
receivers: # Your existing dockerstats receiver...
# Receiver creator - dynamically creates filelog receivers for discovered containers receiver_creator: watch_observers: [docker_observer] receivers: filelog: rule: type == "container" config: include: - /var/lib/docker/containers/`container_id`/`container_id`-json.log poll_interval: 200ms start_at: end include_file_name: false include_file_path: false operators: - id: container-parser type: container format: docker add_metadata_from_filepath: false
processors: # Your existing processors...
# Add entity type attribute for logs (required for New Relic entity correlation) attributes/logs: actions: - key: nr.entity_type value: CONTAINER action: upsert
service: extensions: [docker_observer] pipelines: # Your existing metrics pipeline...
logs: receivers: [receiver_creator] processors: [attributes/logs, batch] exporters: [otlp_http]Configurer l'authentification et démarrer le collecteur
Configurez l'authentification en ajoutant votre point de terminaison New Relic et OTLP au service du collecteur.
Variables d'environnement du NRDOT Collector :
| Variable | Description | Défaut | Requis |
|---|---|---|---|
NEW_RELIC_LICENSE_KEY | Votre clé de licence d'ingestion New Relic | Aucun | Oui |
OTEL_EXPORTER_OTLP_ENDPOINT | Point de terminaison OTLP New Relic pour votre région | https://otlp.nr-data.net (É.-U.) | Non |
Configuration du point de terminaison :
Région États-Unis:
https://otlp.nr-data.net(par défaut)Région UE:
https://otlp.eu01.nr-data.netPour plus d'options de point de terminaison, consultez la documentation OTLP New Relic.
Configurer le service systemd :
Vous allez maintenant configurer le service NRDOT Collector pour utiliser votre configuration de supervision Docker et vos identifiants d'authentification. Cela implique de créer une surcharge systemd pour spécifier le fichier de configuration personnalisé et les variables d'environnement.
Créer un répertoire de remplacement systemd :
bash$sudo mkdir -p /etc/systemd/system/nrdot-collector.service.dCréez une configuration de surcharge pour utiliser la configuration des statistiques Docker. Remplacez
YOUR_LICENSE_KEYpar votre clé de licence New Relic etYOUR_OTLP_ENDPOINTpar le point de terminaison approprié pour votre région :bash$cat <<EOF | sudo tee /etc/systemd/system/nrdot-collector.service.d/override.conf$[Service]$Environment="NEW_RELIC_LICENSE_KEY=YOUR_LICENSE_KEY"$Environment="OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTLP_ENDPOINT"$ExecStart=$ExecStart=/usr/bin/nrdot-collector --config=/etc/nrdot-collector/docker-stats-config.yaml$EOFRechargez systemd, activez et démarrez le collecteur :
bash$sudo systemctl daemon-reload$sudo systemctl enable nrdot-collector$sudo systemctl start nrdot-collector$$# Verify the collector is running$sudo systemctl status nrdot-collector$$# Check logs for any errors$journalctl -u nrdot-collector -fConseil
La ligne
ExecStart=vide efface la commande par défaut avant de définir la nouvelle. Cela garantit que le collecteur utilise uniquement la configuration des statistiques Docker au lieu de la configuration par défaut.
Installer OpenTelemetry Collector Contrib
Téléchargez et installez OpenTelemetry Collector Contrib en suivant le guide d'installation officiel.
Conseil
Si vous avez déjà installé OpenTelemetry Collector Contrib, vous pouvez passer à l'étape 2 pour le configurer pour le monitoring Docker.
Vérifier l'installation :
$otelcol-contrib --versionSortie attendue : Informations de version (v0.88.0 minimum recommandée)
Configurer le collecteur pour le monitoring de Docker
Pour OpenTelemetry Collector Contrib, fusionnez les récepteurs, les processeurs, les exportateurs et les pipelines de service dans votre fichier de configuration (généralement /etc/otelcol-contrib/config.yaml).
receivers: # Docker Stats Receiver - collects container metrics docker_stats: endpoint: unix:///var/run/docker.sock collection_interval: 15s timeout: 5s api_version: "1.25" # Most metrics required for New Relic UI are enabled by default: # CPU: container.cpu.usage.total, container.cpu.utilization # Memory: container.memory.usage.total, container.memory.percent # Network: container.network.io.usage.tx_bytes, container.network.io.usage.rx_bytes # container.network.io.usage.tx_dropped, container.network.io.usage.rx_dropped # Storage: container.blockio.io_service_bytes_recursive # # The following metrics need to be explicitly enabled: metrics: # Required for New Relic UI container.pids.count: enabled: true # Additional network error metrics container.network.io.usage.tx_errors: enabled: true container.network.io.usage.rx_errors: enabled: true
processors: # Resource detection - adds host metadata resourcedetection: detectors: [system, docker] system: resource_attributes: host.name: enabled: true host.id: enabled: true # Batch processor - optimizes data transmission batch: timeout: 30s send_batch_size: 512 # Transform processor - removes descriptions and units transform: metric_statements: - context: metric statements: - set(description, "") - set(unit, "")exporexporters: # New Relic OTLP Exporter otlp_http/newrelic: endpoint: ${env:NEWRELIC_OTLP_ENDPOINT} headers: api-key: ${env:NEWRELIC_LICENSE_KEY} compression: gzip timeout: 30s retry_on_failure: enabled: true initial_interval: 5s max_interval: 30s max_elapsed_time: 300s
service: pipelines: metrics: receivers: [docker_stats] processors: [resourcedetection, transform, batch] exporters: [otlp_http/newrelic]Enregistrez le fichier et assurez-vous que l'utilisateur système otelcol-contrib peut le lire.
Configurer les permissions du socket Docker
Le collecteur a besoin d'accéder au socket Docker pour collecter les métriques des conteneurs. Accordez à l'utilisateur du collecteur l'accès au groupe Docker.
$# Add otelcol-contrib user to docker group$sudo usermod -aG docker otelcol-contrib$
$# Verify the user was added$groups otelcol-contrib$
$# Restart Docker to apply group changes$sudo systemctl restart docker$
$# Test Docker socket access$sudo -u otelcol-contrib docker psSi la commande de test réussit et affiche vos conteneurs, les permissions sont correctement configurées.
Facultatif - Configurer la collecte de logs
Vous pouvez également collecter les logs de vos conteneurs Docker en utilisant le créateur de récepteur OpenTelemetry avec l'extension observateur Docker.
Important
Prérequis pour la collecte de logs :
- Le processus du collecteur doit disposer des droits de lecture sur le répertoire
/var/lib/docker/containers/. Cela nécessite généralement d'exécuter le collecteur en tant que root ou d'ajouter l'utilisateur du collecteur au groupe docker. - Les ports des conteneurs doivent être exposés pour que le créateur de récepteurs puisse découvrir et collecter les logs des conteneurs.
Fusionnez la configuration suivante avec votre fichier de configuration existant à /etc/otelcol-contrib/config.yaml.
extensions: # Docker observer - discovers running containers docker_observer: endpoint: unix:///var/run/docker.sock use_hostname_if_present: true
receivers: # Your existing dockerstats receiver...
# Receiver creator - dynamically creates filelog receivers for discovered containers receiver_creator: watch_observers: [docker_observer] receivers: filelog: rule: type == "container" config: include: - /var/lib/docker/containers/`container_id`/`container_id`-json.log poll_interval: 200ms start_at: end include_file_name: false include_file_path: false operators: - id: container-parser type: container format: docker add_metadata_from_filepath: false
processors: # Your existing processors...
# Add entity type attribute for logs (required for New Relic entity correlation) attributes/logs: actions: - key: nr.entity_type value: CONTAINER action: upsert
service: extensions: [docker_observer] pipelines: # Your existing metrics pipeline...
logs: receivers: [receiver_creator] processors: [attributes/logs] exporters: [otlp_http/newrelic]Configurer l'authentification et démarrer le collecteur
Configurez l'authentification en ajoutant votre point de terminaison New Relic et OTLP au service du collecteur.
Variables d'environnement OpenTelemetry Collector Contrib :
| Variable | Description | Requis |
|---|---|---|
NEWRELIC_LICENSE_KEY | Votre clé de licence d'ingestion New Relic | Oui |
NEWRELIC_OTLP_ENDPOINT | Point de terminaison OTLP New Relic pour votre région | Oui |
Configuration du point de terminaison :
Région US:
https://otlp.nr-data.net:4318Région UE:
https://otlp.eu01.nr-data.net:4318Pour plus d'options de point de terminaison, consultez la documentation OTLP New Relic.
Configurer le service systemd :
Vous allez maintenant configurer le service OpenTelemetry Collector Contrib avec vos identifiants d'authentification. Cela implique de définir des variables d'environnement pour votre clé de licence New Relic et votre point de terminaison OTLP.
Créer un répertoire de remplacement systemd :
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.dCréez
environment.confavec votre configuration. RemplacezYOUR_LICENSE_KEYpar votre clé de licence New Relic etYOUR_OTLP_ENDPOINTpar le point de terminaison approprié pour votre région :bash$cat <<EOF | sudo tee /etc/systemd/system/otelcol-contrib.service.d/environment.conf$[Service]$Environment="NEWRELIC_LICENSE_KEY=YOUR_LICENSE_KEY"$Environment="NEWRELIC_OTLP_ENDPOINT=YOUR_OTLP_ENDPOINT"$EOFRechargez systemd et redémarrez le collecteur :
bash$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contrib$$# Verify the collector is running$sudo systemctl status otelcol-contrib$$# Check logs for any errors$journalctl -u otelcol-contrib -f
Affichez vos données dans New Relic
Une fois l'intégration terminée et le collecteur en cours d'exécution, vous devriez commencer à voir des données dans New Relic en quelques minutes :
- Allez à one.newrelic.com > All capabilities > All entities.
- Recherchez votre hôte Docker par nom d'hôte ou nom de conteneur.
- Cliquez sur votre entité pour afficher les métriques et les détails du conteneur Docker.
- Explorez la page Summary pour consulter les métriques de performance, l'utilisation des ressources et la santé des conteneurs.
Les métriques de conteneur Docker sont associées au type d'événement Metric. Vous pouvez interroger ces données à des fins de dépannage ou pour créer des graphiques et des dashboards personnalisés.
Dépannage
Si vous rencontrez des problèmes lors de la configuration, consultez le guide de dépannage du monitoring Docker pour obtenir des étapes de diagnostic détaillées et des solutions aux problèmes courants, notamment :
- Problèmes de démarrage et de configuration du collecteur
- Métriques manquantes ou problèmes de connectivité des données
- Erreurs de permission refusée
- Optimisation des performances
- Dépannage de la collecte de logs
Prochaines étapes
Maintenant que vous avez configuré le monitoring des conteneurs Docker, vous pouvez enrichir votre pile d'observabilité :
- Créez des dashboards personnalisés: Créez des dashboards personnalisés à l'aide de NRQL pour analyser les modèles de performance des conteneurs
- Configurer des alertes: Créez un monitoring proactif avec des conditions d'alerte pour les métriques critiques des conteneurs
- Explorer les métriques: Consultez la référence complète des métriques Docker pour des descriptions détaillées des métriques et des recommandations d'alerte
- Fondamentaux d'OpenTelemetry: Approfondissez vos connaissances avec OpenTelemetry dans New Relic
- Découvrez d'autres exemples de configuration Docker OpenTelemetry dans le dépôt d'exemples New Relic OpenTelemetry