Linkerd 메트릭, 트레이스 또는 로그가 뉴렐릭에 표시되지 않는 경우, 확인되는 현상과 일치하는 문제를 해결하십시오.
Linkerd 프록시 메트릭이 뉴렐릭에 도달하는지 확인하십시오:
SELECT count(*) FROM MetricWHERE linkerd_control_plane_ns IS NOT NULL AND k8s.cluster.name = '<YOUR_CLUSTER>'SINCE 5 minutes ago이 값이 0을 반환하면, 수집기 파드가 실행 중인지, 수집기 구성의 Prometheus 스크랩 작업이 올바른 네임스페이스를 타겟으로 하는지 확인하십시오.
워크로드 엔티티에는 kube-state-metrics가 필요합니다. 데이터를 전송하고 있는지 확인하십시오:
SELECT uniques(k8s.deployment.name)FROM MetricWHERE metricName LIKE 'kube_deployment%' AND k8s.cluster.name = '<YOUR_CLUSTER>'SINCE 10 minutes ago비어 있는 경우, kube-state-metrics가 실행 중인지, 수집기 구성의 스크랩 타겟이 올바른 네임스페이스와 서비스 이름을 가리키는지 확인하십시오.
$kubectl get pods -n newrelic$kubectl logs -n newrelic deployment/my-opentelemetry-collector | grep -E "error|warn|Failed" | tail -20$# Verify Java agent loaded (for APM-instrumented app pods)$kubectl logs -n <YOUR_NAMESPACE> deployment/<YOUR_APP> | grep "javaagent"$
$# Verify Linkerd proxy routing for OTLP gRPC (must show appProtocol: grpc)$kubectl get svc -n newrelic my-opentelemetry-collector -o jsonpath='{.spec.ports}'수집기 서비스 포트 4317에는 appProtocol: grpc이(가) 있어야 합니다. 이것이 없으면 Linkerd는 gRPC를 HTTP/1.1로 라우팅합니다. 수정:
$kubectl patch svc -n newrelic my-opentelemetry-collector --type='json' \> -p='[{"op":"add","path":"/spec/ports/1/appProtocol","value":"grpc"}]'k8sattributes/traces 프로세서는 파드 연결을 위해 k8s.pod.ip을(를) 사용합니다. 앱 파드에 downward API 환경 변수가 설정되어 있는지 확인하십시오:
$kubectl exec -n <YOUR_NAMESPACE> deployment/<YOUR_APP> -- env | grep MY_POD_IPMY_POD_IP이(가) 누락된 경우, status.podIP을(를) 가리키는 fieldRef 환경 변수로 파드 사양에 추가하십시오.
filelog 수신기는 linkerd-proxy 컨테이너(OTel Collector Contrib) 또는 모든 컨테이너(NRDOT)로 필터링된 varlogpods hostPath 마운트 아래의 로그 파일을 읽습니다. 마운트가 존재하고 읽을 수 있는지 확인하십시오:
$# OTel Collector Contrib (separate DaemonSet release for logs)$kubectl exec -n newrelic daemonset/my-opentelemetry-collector-logs -- ls /var/log/pods 2>/dev/null | head -5$
$# NRDOT (built-in, same DaemonSet as metrics/traces)$kubectl exec -n newrelic daemonset/nr-k8s-otel-collector-daemonset -- ls /var/log/pods 2>/dev/null | head -5마운트를 읽을 수 있지만 뉴렐릭(OTel Collector Contrib)에 linkerd-proxy 로그 레코드가 표시되지 않는 경우, filter/onlyproxy의 k8s.container.name != "linkerd-proxy" 조건이 파드와 일치하는지 확인하십시오. filelog 수신기의 container 연산자에 있는 add_metadata_from_filepath: true은(는) 로그 파일 경로에서 k8s.container.name을(를) 채우는 요소입니다.