Elasticsearch OpenTelemetry 통합 설치 또는 Kubernetes 설치 를 완료했지만 뉴렐릭에 데이터가 표시되지 않는 경우, 아래에서 문제를 확인하고 해결 단계를 따르세요.
호스트 기반 구현, 배포
확인 방법
$sudo systemctl status otelcol-contrib해결
- 서비스가 비활성화된 경우 서비스를 시작하십시오.
sudo systemctl start otelcol-contrib - 서비스 이용에 실패한 경우, 설정 오류를 수정하고 다시 시작하십시오.
sudo systemctl restart otelcol-contrib
확인 방법
$sudo journalctl -u otelcol-contrib.service -f해결
로그 출력을 검토하고 근본 원인(예: 연결 문제, 인증 실패 또는 권한 문제)을 해결하십시오.
오류 예시:
dial tcp [::1]:9200: connect: connection refused
해결
의config.yaml
endpoint이 Elasticsearch 호스트 및 포트와 일치하는지 확인하십시오.- 수집기 호스트에서 Elasticsearch가 실행 중이고 접근 가능한지 확인하십시오.
오류 예시:
permanent error: 403 Forbidden
해결
/etc/systemd/system/otelcol-contrib.service.d/environment.conf에서NEWRELIC_LICENSE_KEY확인합니다.systemd 다시 로드하고 수집기를 재시작하세요.
bash$sudo systemctl daemon-reload$sudo systemctl restart otelcol-contrib
오류 샘플:
permission denied
또는
cannot open file
해결
- Elasticsearch 그룹에 수집기 사용자를 추가합니다.bash$sudo usermod -a -G elasticsearch otelcol-contrib
- 수집기를 재시작하세요:
sudo systemctl restart otelcol-contrib
확인 방법
$# Unsecured cluster$curl -I http://localhost:9200$
$# With authentication$curl -u username:password -k https://localhost:9200해결
클러스터가 정상인지, 자격 증명이 유효한지, 방화벽 또는 보안 설정에서 액세스가 허용되는지 확인하십시오.
해결
- 모든 메트릭 파이프라인에
resourcedetection프로세서가 포함되어 있는지 확인하십시오. 프로세서를 통해resource/cluster_name_override
elasticsearch.cluster.name설정되었는지 확인합니다.
해결
수신 경로가 올바르고 절대 경로인지 확인하십시오.filelog
- 로그 파이프라인에
filelog수신자와otlphttp수출자가 모두 포함되어 있는지 확인하십시오.
Kubernetes 구현, 배포
확인 방법
$# Verify your Elasticsearch pods have the required label$kubectl get pods -n <namespace> -l app=elasticsearch --show-labels해결
반환되는 파드가 없으면 Elasticsearch 파드에 필수
app=elasticsearch
레이블이 누락된 것입니다. receiver_creator는 일치하는 레이블이 없으면 파드를 검색할 수 없습니다.
- StatefulSet/배포의 경우 파드 템플릿에 레이블을 추가합니다:spec:template:metadata:labels:app: elasticsearch
- 기존 파드의 경우 라벨을 추가하고 다시 시작합니다:bash$kubectl label pods -l <your-selector> app=elasticsearch -n <namespace>$kubectl rollout restart statefulset/elasticsearch -n <namespace>
- 사용자 지정 레이블을 사용하는 경우, 레이블과 일치하도록 values.yaml의 수신자 규칙을 업데이트하십시오:rule: type == "pod" && labels["app"] == "your-custom-label"
확인 방법
$kubectl get pods -n newrelic$kubectl describe pod <collector-pod-name> -n newrelic해결
- 파드 이벤트에서 오류를 확인하세요:
kubectl describe pod - 수집기 로그 검토:bash$kubectl logs -n newrelic -l app.kubernetes.io/name=opentelemetry-collector
- 시크릿이 존재하는지 확인합니다:bash$kubectl get secret newrelic-licenses -n newrelic
- 리소스 제한이 너무 낮지 않은지 확인하십시오.
확인 방법
$# Check collector logs for discovery errors$kubectl logs -n newrelic -l app.kubernetes.io/name=opentelemetry-collector | grep "receiver_creator"해결
- RBAC 권한이 올바르게 설정되었는지 확인하세요:bash$kubectl get clusterrole | grep opentelemetry$kubectl describe clusterrole <role-name>
- 수집기에 파드, 노드 및 엔드포인트를 감시할 수 있는 권한이 있는지 확인하세요.
- 구성에서 k8s_observer 확장이 활성화되어 있는지 확인합니다.
확인 방법
$# Check network policies$kubectl get networkpolicies -n <namespace>$
$# Test connectivity from collector to Elasticsearch$kubectl exec -n newrelic <collector-pod> -- curl http://<es-pod-ip>:9200해결
- 네트워크 정책이 newrelic 네임스페이스에서 Elasticsearch 네임스페이스로의 트래픽을 허용하는지 확인합니다.
- Elasticsearch 파드가 올바른 포트를 노출하는지 확인합니다(기본값: 9200)
- 방화벽 규칙이 파드 간 통신을 차단하지 않는지 확인하세요.
오류 예시:
permanent error: 403 Forbidden
해결
- 시크릿에 올바른 라이선스 키가 포함되어 있는지 확인하세요:bash$kubectl get secret newrelic-licenses -n newrelic -o jsonpath='{.data.NEWRELIC_LICENSE_KEY}' | base64 -d
- OTLP 엔드포인트가 해당 리전에 올바른지 확인하세요.
- 수집기 파드에 시크릿이 마운트되어 있는지 확인합니다:bash$kubectl describe pod <collector-pod> -n newrelic | grep -A5 "Environment"
해결
를 사용 중인지 확인합니다(배포 모드에서는 노드 로그에 액세스할 수 없습니다)mode: daemonset
- 볼륨 마운트가 올바르게 구성되었는지 확인하세요:bash$kubectl describe pod <collector-pod> -n newrelic | grep -A10 "Mounts"
- 파일 로그 수신기 경로가 Elasticsearch 파드 로그와 일치하는지 확인합니다:bash$kubectl exec -n newrelic <collector-pod> -- ls /var/log/pods/*/elasticsearch*/*.log
- 수집기에 호스트 로그 디렉터리에 대한 읽기 권한이 있는지 확인하십시오.
해결
- values.yaml에
K8S_CLUSTER_NAME환경 변수가 설정되어 있는지 확인합니다. 프로세서가 메트릭 파이프라인에 있는지 확인합니다.resource/cluster
- 확인할 쿼리:FROM Metric SELECT * WHERE metricName LIKE 'elasticsearch.%' LIMIT 1
속성이 존재하는지 확인합니다.k8s.cluster.name