ATP가 올바르게 작동하는지 확인하는 방법과 호스트 및 Kubernetes 환경 전반에서 발생하는 일반적인 설정 문제를 해결하는 방법을 알아보세요.
ATP가 제대로 작동하는지 확인하십시오.
ATP를 설치한 후 쿼리 빌더 에서 다음 쿼리를 실행하여 뉴렐릭이 프로세스 데이터를 수신하는지 확인하세요.
최근 처리 과정을 보려면 다음을 참조하십시오.
FROM Metric SELECT *WHERE metricName LIKE 'process.%'LIMIT 100고유한 프로세스 유형을 계산하려면:
FROM Metric SELECT uniqueCount(metricName)WHERE metricName LIKE 'process.%'
클러스터의 최근 프로세스 메트릭을 보려면 다음을 수행하십시오.
FROM Metric SELECT *WHERE k8s.cluster.name='your-cluster-name'AND metricName LIKE 'process.%'LIMIT 100클러스터의 고유 프로세스 메트릭 유형을 계산하려면 다음 단계를 따르세요.
FROM Metric SELECT uniqueCount(metricName)WHERE k8s.cluster.name='your-cluster-name'AND metricName LIKE 'process.%'
ATP 문제 해결
문제: 모든 프로세스 경로가 필터링되지 않고 전송되고 있습니다.
- 파이프라인 프로세서 목록에 ATP가 있는지 확인하십시오.
metric_thresholds구성되어 있는지 확인하십시오.- 프로세스 관련 데이터가 수집되고 있는지 확인하십시오.
- ATP 초기화 오류에 대해서는 수집기 로그를 검토하십시오.
ATP가 활성화되어 있는지 확인하십시오.
bash$kubectl get configmap -n newrelic nr-k8s-otel-collector-daemonset-config -o yaml | grep adaptivetelemetryATP가 파이프라인에 있는지 확인하세요:
metrics/nr파이프라인에서adaptivetelemetry찾으세요올바른 수집기 이미지를 사용하고 있는지 확인하십시오.
bash$kubectl get daemonset -n newrelic nr-k8s-otel-collector-daemonset -o yaml | grep "image:"예상값:
newrelic/nrdot-collector:11.0(또는 그 이후)\ 아니다:newrelic/nrdot-collector-k8s:1.11.0values.yaml또는 ConfigMap에서enable_atptrue로 설정되어 있는지 확인하십시오.
문제: Collector 메모리는 시간이 지남에 따라 증가합니다.
해결 방법: 보존 설정을 조정하세요.
processors: adaptivetelemetry: retention_minutes: 15 # Reduce from default 30문제: 텔레메트리에서 예상되는 프로세스가 누락되었습니다.
해결 방법: 포함 목록에 프로세스를 추가하려면 전체 경로를 사용해야 합니다. 경로 구분 기호가 없는 항목은 어떤 프로세스와도 일치하지 않습니다. 예를 들어:
processors: adaptivetelemetry: include_process_list: - "/usr/bin/myapp" # Always captured regardless of thresholds문제: 이전에는 ATP 데이터가 표시되었지만 지금은 표시되지 않습니다. 이는 카디널리티 제한에 도달했기 때문일 수 있습니다. ATP는 텔레메트리 용량을 줄이기 위해 많은 프로세스를 필터링하지만, 고유 프로세스 수가 매우 많으면 여전히 제한에 걸릴 수 있습니다. 이를 추적하려면 카디널리티 사용량을 모니터링 할 수 있습니다.
해결책:
문제를 해결하려면 뉴렐릭의 카디널리티 관리 페이지 로 이동하여 카디널리티 제한에 도달했는지 확인하십시오. 제한을 초과한 경우 카디널리티 제한을 늘릴 수 있습니다.
팁
이것이 반복되는 문제인 경우 ATP의 metric_thresholds 값을 늘려 더 많은 프로세스를 필터링하고 수신되는 메트릭의 양을 줄일 수도 있습니다. 이렇게 하면 향후 카디널리티 제한에 걸리는 것을 방지하는 데 도움이 될 것입니다. 예를 들어, CPU 및 메모리 사용률을 높여 리소스 집약적인 프로세스만 포착하도록 설정할 수 있습니다.
processors: adaptivetelemetry: metric_thresholds: process.cpu.utilization: 0.10 # Increase from 0.05 to 0.10 (10% CPU) process.memory.utilization: 0.10 # Filter out more processes문제: ATP 로그에 스토리지 관련 오류 또는 스토리지 디렉터리를 생성할 수 없다는 경고가 표시됩니다.
해결책:
ATP는 설치 방법에 따라 스토리지 디렉터리를 자동으로 선택하고 생성합니다. 저장에 실패하는 경우 다음을 확인하십시오:
systemd 설치의 경우: 서비스가
nrdot-collector사용자로 실행되고 systemd 서비스 파일에StateDirectory지시문이 포함되어 있는지 확인하십시오:bash$sudo systemctl cat nrdot-collector.service | grep StateDirectory예상 출력:
StateDirectory=nrdot-collector수동 바이너리 설치의 경우: 사용자가
~/.local/state/에 대한 쓰기 권한이 있는지 확인하십시오:bash$mkdir -p ~/.local/state/nrdot-collector$touch ~/.local/state/nrdot-collector/test && rm ~/.local/state/nrdot-collector/test스토리지 관련 메시지가 있는지 수집기 로그를 확인 하십시오:
bash$sudo journalctl -u nrdot-collector | grep -i storage중요
ATP가 스토리지를 생성하거나 액세스할 수 없는 경우, 자동으로 지속성을 비활성화하고 인메모리 상태로만 계속 작동합니다. ATP의 보존 기능은 수집기의 런타임 동안 정상적으로 계속 작동하지만, 디스크에 저장되지 않기 때문에 수집기를 다시 시작할 때 추적 상태가 손실됩니다.
설정 요구 사항
ATP는 설치 방법에 따라 스토리지 경로를 자동으로 관리합니다:
systemd 서비스 설치(DEB/RPM 패키지)의 경우:
저장소는 다음에서 자동으로 설정됩니다
/var/lib/nrdot-collector/systemd 서비스는
StateDirectory을(를) 사용하여 디렉터리를 생성하고 관리합니다.수동 설정이 필요하지 않습니다
수동 바이너리 설치의 경우:
스토리지는 일반 사용자를 위해
~/.local/state/nrdot-collector/를 사용합니다.스토리지에 루트 권한이 필요하지 않습니다.
쓰기 가능한 경우 디렉터리가 자동으로 생성됩니다.
팁
스토리지를 생성할 수 없는 경우(예: 권한 문제로 인해), ATP는 자동으로 지속성을 비활성화하고 인메모리 상태로만 계속 작동합니다. 보존 기능은 런타임 중에 정상적으로 작동하지만, 수집기를 다시 시작할 때 추적 상태가 손실됩니다. 스토리지 상태를 확인해야 하는 경우 수집기 로그를 확인하세요.
OpenTelemetry 호스트메트릭스 수신기를 통해 disk.io 데이터 수집을 활성화하려면 /proc/[PID]/io 에 저장된 io 데이터에 루트 사용자 액세스가 필요하므로 권한 상승이 필요합니다. 이는 ATP의 필수 요건이 아닙니다. ATP는 OpenTelemetry에서 이미 수집한 데이터만 처리합니다.
Helm 차트에 다음 보안 컨텍스트를 추가하세요.
securityContext: allowPrivilegeEscalation: true privileged: true readOnlyRootFilesystem: false runAsNonRoot: false runAsUser: 0