Monitoree sus contenedores Docker instalando un OpenTelemetry Collector directamente en hosts Linux. Esta guía proporciona instrucciones completas de configuración para recopilar métricas de contenedores y la recolección opcional de logs utilizando el New Relic NRDOT Collector (recomendado) o el OpenTelemetry Collector Contrib.
Antes de que empieces
Una cuenta de New Relic con un
Docker Engine (versión de API 1.25+) instalado y en ejecución
Acceso al socket de Docker (típicamente
/var/run/docker.sock)Uno de los siguientes recopiladores instalados en un host Linux:
- NRDOT Collector (recomendado: distribución de OpenTelemetry de New Relic), o
- OpenTelemetry Collector Contrib (opción alternativa)
Acceso a la red desde el host de Linux a:
- Socket de Docker Engine
- Uno de los endpoints de New Relic OTLP
Para la recopilación de logs: Permisos de lectura para el directorio
/var/lib/docker/containers/(típicamente requiere root o membresía en el grupo docker)
Verifique su configuración
Pasos de integración
Siga estos pasos para configurar el monitoreo de contenedores Docker con OpenTelemetry. Seleccione su tipo de colector a continuación:
Instalar NRDOT Collector
El NRDOT Collector es la distribución de OpenTelemetry de New Relic con configuraciones predefinidas optimizadas para New Relic.
Sugerencia
Si ya tiene instalado NRDOT Collector, puede pasar al Paso 2 para configurarlo para el monitoreo de Docker.
Instalación 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-collectorInstalación de 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-collectorOtras distribuciones de Linux: Para instalaciones de archivo u otros métodos, consulta la guía de instalación de NRDOT.
Verificar la instalación:
$nrdot-collector --versionSalida esperada: Información de la versión
Configure el colector para el monitoreo de Docker
Para NRDOT Collector, cree un archivo de configuración de monitoreo de Docker independiente que reemplace la configuración predeterminada.
Importante
Monitoreo independiente vs. combinado: Esta configuración monitorea únicamente contenedores Docker. Si también necesita métricas de host (CPU, memoria, disco) o logs del sistema, use la configuración predeterminada del NRDOT Collector, que incluye los receptores hostmetrics y filelog, y agregue el receptor docker_stats.
Cree /etc/nrdot-collector/docker-stats-config.yaml con el siguiente contenido:
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]Configurar los permisos del socket de Docker
El colector necesita acceso al socket de Docker para recopilar métricas de contenedores. Otorgue al usuario del recopilador acceso al grupo de 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 el comando de prueba se ejecuta correctamente y muestra sus contenedores, los permisos están configurados correctamente.
Opcional - Configurar la recopilación de logs
También puede recopilar logs de sus contenedores Docker usando el creador de receptores de OpenTelemetry con la extensión de observador de Docker.
Importante
Requisitos para la recolección de logs:
- El proceso del recopilador debe tener permisos de lectura en el directorio
/var/lib/docker/containers/. Por lo general, esto requiere ejecutar el colector como root o agregar el usuario del colector al grupo docker. - Los puertos del contenedor deben estar expuestos para que el creador del receptor descubra y extraiga logs de los contenedores.
Agregue la configuración de recolección de logs a su docker-stats-config.yaml existente.
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]Configurar la autenticación e iniciar el colector
Configure la autenticación agregando su punto final de New Relic y OTLP al servicio del recopilador.
Variables de entorno del Colector NRDOT:
| Variable | Descripción | Por defecto | Requerido |
|---|---|---|---|
NEW_RELIC_LICENSE_KEY | Tu clave de licencia de ingesta de New Relic | Ninguno | Sí |
OTEL_EXPORTER_OTLP_ENDPOINT | Endpoint OTLP de New Relic para su región | https://otlp.nr-data.net (EE. UU.) | No |
Configuración del endpoint:
Región de EE. UU.:
https://otlp.nr-data.net(predeterminado)Región de la UE:
https://otlp.eu01.nr-data.netPara más opciones de endpoint, consulta la documentación de OTLP de New Relic.
Configure el servicio systemd:
Ahora configurará el servicio NRDOT Collector para utilizar su configuración de monitoreo de Docker y las credenciales de autenticación. Esto implica crear una anulación de systemd para especificar el archivo de configuración personalizado y las variables de entorno.
Crea un directorio de anulación de systemd:
bash$sudo mkdir -p /etc/systemd/system/nrdot-collector.service.dCree una configuración de anulación para utilizar la configuración de estadísticas de Docker. Reemplaza
YOUR_LICENSE_KEYpor tu clave de licencia de New Relic yYOUR_OTLP_ENDPOINTpor el endpoint adecuado para tu región: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$EOFRecargue systemd, habilite e inicie el colector:
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 -fSugerencia
La línea
ExecStart=vacía borra el comando predeterminado antes de establecer el nuevo. Esto garantiza que el colector utilice únicamente la configuración de estadísticas de Docker en lugar de la configuración predeterminada.
Instalar OpenTelemetry Collector Contrib
Descargue e instale el OpenTelemetry Collector Contrib siguiendo la guía de instalación oficial.
Sugerencia
Si ya tiene instalado OpenTelemetry Collector Contrib, puede pasar al Paso 2 para configurarlo para el monitoreo de Docker.
Verificar la instalación:
$otelcol-contrib --versionSalida esperada: Información de la versión (mínimo v0.88.0 recomendado)
Configure el colector para el monitoreo de Docker
Para OpenTelemetry Collector Contrib, fusione los receptores, procesadores, exportadores y pipelines de servicio en su archivo de configuración (generalmente /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]Guarde el archivo y asegúrese de que el usuario del sistema otelcol-contrib pueda leerlo.
Configurar los permisos del socket de Docker
El colector necesita acceso al socket de Docker para recopilar métricas de contenedores. Otorgue al usuario del recopilador acceso al grupo de 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 el comando de prueba se ejecuta correctamente y muestra sus contenedores, los permisos están configurados correctamente.
Opcional - Configurar la recopilación de logs
También puede recopilar logs de sus contenedores Docker usando el creador de receptores de OpenTelemetry con la extensión de observador de Docker.
Importante
Requisitos para la recolección de logs:
- El proceso del recopilador debe tener permisos de lectura en el directorio
/var/lib/docker/containers/. Por lo general, esto requiere ejecutar el colector como root o agregar el usuario del colector al grupo docker. - Los puertos del contenedor deben estar expuestos para que el creador del receptor descubra y extraiga logs de los contenedores.
Fusione la siguiente configuración con su archivo de configuración existente en /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]Configurar la autenticación e iniciar el colector
Configure la autenticación agregando su punto final de New Relic y OTLP al servicio del recopilador.
Variables de entorno de OpenTelemetry Collector Contrib:
| Variable | Descripción | Requerido |
|---|---|---|
NEWRELIC_LICENSE_KEY | Tu clave de licencia de ingesta de New Relic | Sí |
NEWRELIC_OTLP_ENDPOINT | Endpoint OTLP de New Relic para su región | Sí |
Configuración del endpoint:
Región de EE. UU.:
https://otlp.nr-data.net:4318Región de la UE:
https://otlp.eu01.nr-data.net:4318Para más opciones de endpoint, consulta la documentación de OTLP de New Relic.
Configure el servicio systemd:
Ahora configurará el servicio OpenTelemetry Collector Contrib con sus credenciales de autenticación. Esto implica configurar variables de entorno para su clave de licencia de New Relic y el endpoint OTLP.
Crea un directorio de anulación de systemd:
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.dCree
environment.confcon su configuración. ReemplaceYOUR_LICENSE_KEYcon su clave de licencia de New Relic yYOUR_OTLP_ENDPOINTcon el endpoint adecuado para su región: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"$EOFRecargue systemd y reinicie el recopilador:
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
Ver tus datos en New Relic
Una vez que se complete la integración y el recopilador esté en ejecución, debería empezar a ver datos en New Relic en unos pocos minutos:
- Vaya a one.newrelic.com > All capabilities > All entities.
- Busque su host de Docker por nombre de host o nombre de contenedor.
- Haga clic en su entidad para ver las métricas y los detalles del contenedor Docker.
- Explore la página Summary para ver las métricas de rendimiento, el uso de recursos y la salud de los contenedores.
Las métricas de contenedores Docker se adjuntan al tipo de evento Metric. Puede consultar estos datos para la resolución de problemas o para crear gráficos y dashboards personalizados.
Resolución de problemas
Si tiene problemas durante la configuración, consulte la guía de solución de problemas de monitoreo de Docker para obtener pasos de diagnóstico detallados y soluciones a problemas comunes, incluyendo:
- Problemas de inicio y configuración del colector
- Métricas faltantes o problemas de conectividad de datos
- Errores de permiso denegado
- Optimización del rendimiento
- Solución de problemas de recopilación de logs
Próximos pasos
Ahora que tiene configurado el monitoreo de contenedores Docker, puede mejorar su pila de observabilidad:
- Crea dashboards personalizados: Construye dashboards personalizados usando NRQL para analizar patrones de rendimiento de contenedores
- Configura alertas: Crea un monitoreo proactivo con condiciones de alerta para métricas críticas de contenedores
- Explora las métricas: Consulta la referencia completa de métricas de Docker para obtener descripciones detalladas de las métricas y recomendaciones de alertas
- Fundamentos de OpenTelemetry: Profundice su comprensión con OpenTelemetry en New Relic
- Explore ejemplos adicionales de configuración de Docker OpenTelemetry en el repositorio de ejemplos de New Relic OpenTelemetry