Linux 호스트에 OpenTelemetry Collector 직접 설치하여 도커 컨테이너를 모니터링하세요. 이 가이드는 데이터 수집을 위한 완전한 설정 지침과 뉴렐릭 NRDOT Collector (권장) 또는 OpenTelemetry Collector Contrib를 사용한 선택적 로그 수집에 대한 지침을 제공합니다.
시작하기 전에
도커 엔진(API 버전 1.25 이상)이 설치되어 실행 중입니다.
도커 소켓(일반적으로
/var/run/docker.sock)에 대한 접근Linux 호스트에 다음 수집기 중 하나가 설치되어 있어야 합니다.
- NRDOT Collector (권장 - 뉴렐릭의 OpenTelemetry 배포판) 또는
- OpenTelemetry Collector Contrib (대체 옵션)
Linux 호스트에서 네트워크 액세스 대상:
- 도커 엔진 소켓
- 뉴렐릭 OTLP 엔드포인트 중 하나
로그 수집을 위해:
/var/lib/docker/containers/디렉터리에 대한 읽기 권한이 필요합니다(일반적으로 루트 또는 docker 그룹 멤버십 필요).
설정을 확인하세요
통합 단계
OpenTelemetry 사용하여 도커 모니터링을 구성하려면 다음 단계를 따르세요. 아래에서 수집기 유형을 선택하세요.
NRDOT Collector설치하세요
NRDOT Collector 는 뉴렐릭에 최적화된 사전 구성 설정이 포함된 뉴렐릭의 OpenTelemetry 배포판입니다.
팁
이미 NRDOT Collector 설치되어 있는 경우 2단계 로 건너뛰어 도커 모니터링을 설정할 수 있습니다.
DEB 설치(데비안/우분투):
$# 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-collectorRPM 설치(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-collector기타 Linux 배포판: 아카이브 설치 또는 기타 방법은 NRDOT 설치 가이드를 참조하십시오.
설치 상태를 확인하세요:
$nrdot-collector --version예상 출력: 버전 정보
도커 모니터링을 위한 수집기 구성
NRDOT Collector 의 경우 기본 설정을 대체하는 독립 실행형 도커 모니터링 설정 파일을 만듭니다.
중요
독립형 vs. 결합형 시뮬레이션: 이 설정은 도커 컨테이너에만 해당됩니다. 호스트 범위(CPU, 메모리, 디스크) 또는 시스템 로그도 필요한 경우 hostmetrics 및 filelog 수신기가 포함된 NRDOT Collector 의 기본 설정을 사용하고 docker_stats 수신기를 추가하세요.
다음 내용으로 /etc/nrdot-collector/docker-stats-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: # 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]도커 소켓 권한 구성
수집기는 컨테이너 지표를 수집하기 위해 도커 소켓에 액세스해야 합니다. 수집기 사용자에게 도커 그룹에 대한 액세스 권한을 부여합니다.
$# 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 ps테스트 명령이 성공하고 컨테이너가 표시되면 권한이 올바르게 구성된 것입니다.
(선택 사항) - 로그 수집 구성
도커 관찰자 확장 기능이 OpenTelemetry 있는 수신기 생성기를 사용하여 도커 컨테이너에서 로그를 수집할 수도 있습니다.
중요
로그 수집을 위한 요구 사항:
- 수집기 프로세스는
/var/lib/docker/containers/디렉터리에 대한 읽기 권한이 있어야 합니다. 일반적으로 이를 위해서는 수집기를 루트 권한으로 실행하거나 수집기 사용자를 docker 그룹에 추가해야 합니다. - 컨테이너 포트는 수신자 생성자가 컨테이너에서 로그를 검색하고 스크랩할 수 있도록 노출되어야 합니다.
기존 docker-stats-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, batch] exporters: [otlp_http]인증을 구성하고 수집기를 시작하세요.
수집기 서비스에 뉴렐릭 및 OTLP 포인트 포인트를 추가하여 인증을 구성하세요.
NRDOT Collector 환경 변수:
| 변하기 쉬운 | 설명 | 기본값 | 필수의 |
|---|---|---|---|
NEW_RELIC_LICENSE_KEY | 귀하의 뉴렐릭 수집 볼륨 키 | 없음 | 네 |
OTEL_EXPORTER_OTLP_ENDPOINT | 해당 지역의 뉴렐릭 OTLP 포인트포인트 | https://otlp.nr-data.net (우리를) | 아니요 |
엔드포인트 설정:
미국 지역:
https://otlp.nr-data.net(기본값)EU 지역:
https://otlp.eu01.nr-data.net더 많은 엔드포인트 옵션을 보려면 뉴렐릭 OTLP 문서를 참조하세요.
systemd 서비스를 구성합니다.
이제 도커 모니터링 설정 및 인증 자격 증명을 사용하도록 NRDOT Collector 서비스를 구성합니다. 이 과정에는 사용자 지정 구성 파일과 환경 변수를 지정하기 위한 systemd 오버라이드를 생성하는 것이 포함됩니다.
systemd 오버라이드 디렉터리를 생성합니다.
bash$sudo mkdir -p /etc/systemd/system/nrdot-collector.service.d도커 통계 설정을 사용하도록 재정의 설정을 생성합니다.
YOUR_LICENSE_KEY뉴렐릭 클러스터 키로 바꾸고,YOUR_OTLP_ENDPOINT해당 지역에 적합한 엔드포인트로 바꿉니다.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$EOFsystemd 다시 로드하고, 수집기를 활성화하고 시작하세요.
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 -f팁
빈
ExecStart=줄은 새 명령을 설정하기 전에 기본 명령을 지웁니다. 이를 통해 수집기는 기본 설정 대신 도커 통계 설정만 사용합니다.
도커 모니터링을 위한 수집기 구성
OpenTelemetry Collector Contrib의 경우 수신자, 처리자, 내보내기 도구 및 서비스 파이프라인을 설정 파일(일반적으로 /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]파일을 저장하고 otelcol-contrib 시스템 사용자가 해당 파일을 읽을 수 있도록 하십시오.
도커 소켓 권한 구성
수집기는 컨테이너 지표를 수집하기 위해 도커 소켓에 액세스해야 합니다. 수집기 사용자에게 도커 그룹에 대한 액세스 권한을 부여합니다.
$# 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 ps테스트 명령이 성공하고 컨테이너가 표시되면 권한이 올바르게 구성된 것입니다.
(선택 사항) - 로그 수집 구성
도커 관찰자 확장 기능이 OpenTelemetry 있는 수신기 생성기를 사용하여 도커 컨테이너에서 로그를 수집할 수도 있습니다.
중요
로그 수집을 위한 요구 사항:
- 수집기 프로세스는
/var/lib/docker/containers/디렉터리에 대한 읽기 권한이 있어야 합니다. 일반적으로 이를 위해서는 수집기를 루트 권한으로 실행하거나 수집기 사용자를 docker 그룹에 추가해야 합니다. - 컨테이너 포트는 수신자 생성자가 컨테이너에서 로그를 검색하고 스크랩할 수 있도록 노출되어야 합니다.
/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]인증을 구성하고 수집기를 시작하세요.
수집기 서비스에 뉴렐릭 및 OTLP 포인트 포인트를 추가하여 인증을 구성하세요.
OpenTelemetry Collector Contrib 환경 변수:
| 변하기 쉬운 | 설명 | 필수의 |
|---|---|---|
NEWRELIC_LICENSE_KEY | 귀하의 뉴렐릭 수집 볼륨 키 | 네 |
NEWRELIC_OTLP_ENDPOINT | 해당 지역의 뉴렐릭 OTLP 포인트포인트 | 네 |
엔드포인트 설정:
미국 지역:
https://otlp.nr-data.net:4318EU 지역:
https://otlp.eu01.nr-data.net:4318더 많은 엔드포인트 옵션을 보려면 뉴렐릭 OTLP 문서를 참조하세요.
systemd 서비스를 구성합니다.
이제 인증 자격 증명을 사용하여 OpenTelemetry Collector Contrib 서비스를 구성합니다. 여기에는 뉴렐릭 클러스터 키 및 OTLP 엔드포인트에 대한 환경 변수 설정이 포함됩니다.
systemd 오버라이드 디렉터리를 생성합니다.
bash$sudo mkdir -p /etc/systemd/system/otelcol-contrib.service.d사용자 설정으로
environment.conf생성하세요.YOUR_LICENSE_KEY뉴렐릭 클러스터 키로 바꾸고YOUR_OTLP_ENDPOINT해당 지역에 적합한 엔드포인트로 바꾸세요.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"$EOFsystemd 다시 로드하고 수집기를 재시작하세요.
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
New Relic에서 데이터 보기
통합이 완료되고 수집기가 실행되면 몇 분 안에 뉴럴릭에서 데이터를 볼 수 있을 것입니다.
- one.newrelic.com > All capabilities > All entities 으)로 이동합니다.
- 호스트명 또는 컨테이너 이름으로 도커 호스트를 검색하세요.
- 귀하의 도메인을 클릭하시면 도커 카테고리 및 세부정보를 보실 수 있습니다.
- Summary [요약] 페이지를 탐색하여 성능 지표, 리소스 사용량 및 구성 상태를 확인하세요.
도커 컨테이너 지표는 Metric 이벤트 유형 에 연결됩니다. 문제 해결, 해결 목적으로 이 데이터를 쿼리 하거나 사용자 정의 차트 및 대시보드를 생성할 수 있습니다.
문제점 해결
설정 중에 문제가 발생하는 경우 도커 모니터링 문제 해결, 해결 가이드 에서 다음을 포함한 일반적인 문제에 대한 자세한 진단 단계 및 해결 방법을 참조하세요.
- Collector 시작 및 설정 문제
- 누락된 데이터 또는 데이터 연결 문제
- 권한 거부 오류
- 성능 최적화
- 로그 수집 문제 해결, 해결
다음 단계
이제 도커 컨테이너 전망 설정이 완료되었으므로 옵저버빌리티 그리드를 향상할 수 있습니다.
- 맞춤형 대시보드 생성: NRQL 사용하여 컨테이너 성능 패턴을 분석하는 맞춤형 대시보드 구축
- 알림 설정: 중요한 컨테이너 지표에 대한 공지 조건을 사용하여 사전 모니터링 생성
- 도커 살펴보기: 자세한 도커 설명과 알림 권장 사항을 보려면 전체 도커 참조 자료를 검토하십시오.
- OpenTelemetry 기초: 뉴럴릭에서OpenTelemetry 에 대한 이해를 심화하세요
- 뉴렐릭 OpenTelemetry 예제에서 추가 도커 OpenTelemetry 설정 예제를 살펴보세요.