Cette page installe le Collector NRDOT à l’aide de manifestes Kubernetes, le configure pour récupérer les métriques du proxy Linkerd et du control plane, et vérifie que les données sont transmises à New Relic. Prévoyez environ 15 minutes pour cette opération.
Compatibilité et exigences
Soutenu
- Cluster Kubernetes (EKS, GKE, AKS, ou autogéré) avec
kubectlconfiguré sur celui-ci - Linkerd installé et sain (
linkerd checkréussites) - Configuration de cluster gérée par manifeste
Vous avez besoin de
Une clé de licence d’ingestionNew Relic
L’installation de base du manifeste Kubernetes OpenTelemetry est terminée
Connectivité réseau vers les points de terminaison OTLP de New Relic
Injection activée sur les espaces de nommage que vous souhaitez observer. Si ce n’est pas le cas, annotez-les et redémarrez-les :
bash$kubectl annotate namespace <YOUR_NAMESPACE> linkerd.io/inject=enabled$kubectl rollout restart deployment -n <YOUR_NAMESPACE>
Installation
Ajoutez la configuration de récupération de Linkerd à la liste
receivers.prometheus.config.scrape_configsdans votredeployment-configmap.yamllocal.- job_name: 'linkerd-controller'kubernetes_sd_configs:- role: podnamespaces: { names: ['linkerd', 'linkerd-viz'] }relabel_configs:- { source_labels: [__meta_kubernetes_pod_container_port_name], action: keep, regex: admin-http }- { source_labels: [__meta_kubernetes_pod_container_name], target_label: component }- { source_labels: [__meta_kubernetes_namespace], target_label: namespace }- { source_labels: [__meta_kubernetes_pod_name], target_label: pod }- job_name: 'linkerd-proxy'kubernetes_sd_configs: [{ role: pod }]relabel_configs:- { source_labels: [__meta_kubernetes_pod_container_name, __meta_kubernetes_pod_container_port_name, __meta_kubernetes_pod_label_linkerd_io_control_plane_ns], action: keep, regex: ^linkerd-proxy;linkerd-admin;linkerd$ }- { source_labels: [__meta_kubernetes_namespace], target_label: namespace }- { source_labels: [__meta_kubernetes_pod_name], target_label: pod }- { source_labels: [__meta_kubernetes_pod_label_linkerd_io_control_plane_ns], target_label: linkerd_control_plane_ns }- { source_labels: [__meta_kubernetes_pod_label_linkerd_io_control_plane_component], target_label: linkerd_control_plane_component }Ajoutez les processeurs et le pipeline
metrics/linkerdau mêmedeployment-configmap.yaml.processors:resource/strip_service:attributes:- { key: service.name, action: delete }- { key: service.instance.id, action: delete }transform/k8s:metric_statements:- context: datapointstatements:- set(attributes["k8s.namespace.name"], attributes["namespace"]) where attributes["namespace"] != nil- set(attributes["k8s.pod.name"], attributes["pod"]) where attributes["pod"] != nil- delete_key(attributes, "instance")transform/deployment:metric_statements:- context: datapointstatements:- set(attributes["k8s.deployment.name"], attributes["k8s.pod.name"]) where attributes["k8s.deployment.name"] == nil and attributes["k8s.pod.name"] != nil- replace_pattern(attributes["k8s.deployment.name"], "-[a-z0-9]+-[a-z0-9]+$", "") where attributes["k8s.deployment.name"] == attributes["k8s.pod.name"]transform/metadata_nullify:metric_statements:- context: metricstatements:- set(description, "")- set(unit, "")filter/drop_unused:error_mode: ignoremetrics:metric:- 'name == "rustls_info" or name == "proxy_build_info"'- 'name == "scrape_series_added"'- 'IsMatch(name, "stack_(poll|create|drop)_total") or name == "stack_poll_total_ms"'- 'IsMatch(name, "tokio_rt_.*")'- 'IsMatch(name, "(inbound|outbound)_http_.*_frame_size_bytes")'- 'IsMatch(name, "(inbound|outbound)_tcp_detect_http_duration_seconds")'- 'IsMatch(name, "outbound_tcp_balancer_queue_.*")'- 'name == "scrape_duration_seconds" or name == "scrape_samples_scraped" or name == "scrape_samples_post_metric_relabeling"'pipelines:metrics/linkerd:receivers: [prometheus]processors: [memory_limiter, resource/strip_service, transform/k8s, transform/deployment, transform/metadata_nullify, filter/drop_unused, resource/newrelic, batch]exporters: [otlp_http/newrelic]Réappliquez la ConfigMap et redémarrez le déploiement du collecteur.
bash$kubectl apply -f rendered/deployment-configmap.yaml -n newrelic$kubectl rollout restart deployment -n newrelic
Trouvez vos données
Allez à one.newrelic.com > All capabilities > All entities.
Recherchez le nom de votre cluster.
Sélectionnez votre entité Linkerd pour ouvrir le dashboard intégré.
Le dashboard intégré couvre le taux de requêtes, la latence p50/p95/p99, le taux de réussite, les connexions TCP, le statut des certificats mTLS, la santé du control plane, et l’inventaire des pods maillés. Pour des informations détaillées, consultez la documentation Trouver les données Linkerd.
Articles connexes
Tracing distribué Linkerd avec OpenTelemetry
Activez l’exportation de trace du proxy et instrumentez vos pods d’application pour corréler les spans du maillage avec les traces APM.
Collecter les logs du proxy Linkerd
Collectez éventuellement les logs du conteneur sidecar
linkerd-proxy
.
Référence des métriques
Liste complète des métriques et des attributs de ressource Linkerd collectés par le Collecteur Otel.