Linkerdのメトリクス、トレース、またはログがNew Relicに表示されない場合は、発生している事象に一致する問題に対処してください。
LinkerdプロキシのメトリクスがNew Relicに到達していることを確認します:
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}'コレクターのServiceポート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レシーバーは、varlogpodsのhostPathマウントの下にあるログファイルを読み取り、linkerd-proxyコンテナ(OTel Collector Contrib)またはすべてのコンテナ(NRDOT)に絞り込みます。マウントが存在し、読み取り可能であることを確認します:
$# 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マウントが読み取り可能であるにもかかわらず、New Relic(OTel Collector Contrib)にlinkerd-proxyログレコードが表示されない場合は、filter/onlyproxyのk8s.container.name != "linkerd-proxy"条件がポッドと一致しているか確認してください。filelogレシーバーのcontainerオペレーターのadd_metadata_from_filepath: trueは、ログファイルパスからk8s.container.nameに値を設定するものです。