Esta página instala o NRDOT Collector usando manifestos do Kubernetes, configura-o para coletar métricas do proxy e do plano de controle do Linkerd e verifica se os dados estão fluindo para o New Relic. Isso deve levar cerca de 15 minutos.
Compatibilidade e requisitos
Suportado
- Cluster do Kubernetes (EKS, GKE, AKS ou autogerenciado) com
kubectlconfigurado nele - Linkerd instalado e íntegro (
linkerd checkaprovado) - Configuração de cluster gerenciada por manifesto
Você precisa
Uma chave de licença de ingestãoda New Relic
A instalação base do manifesto do OpenTelemetry para Kubernetes foi concluída
Conectividade de rede para os endpoints OTLP da New Relic
Injeção habilitada nos namespaces que você deseja observar. Se não estiver, anote e reinicie-os:
bash$kubectl annotate namespace <YOUR_NAMESPACE> linkerd.io/inject=enabled$kubectl rollout restart deployment -n <YOUR_NAMESPACE>
Instalar
Adicione a configuração de scrape do Linkerd à lista
receivers.prometheus.config.scrape_configsno seudeployment-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 }Adicione os processadores e o pipeline
metrics/linkerdao mesmodeployment-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]Reaplique o ConfigMap e reinicie a implantação do coletor.
bash$kubectl apply -f rendered/deployment-configmap.yaml -n newrelic$kubectl rollout restart deployment -n newrelic
Encontre seus dados
Vá para one.newrelic.com > All capabilities > All entities.
Pesquise o nome do seu cluster.
Selecione sua entidade do Linkerd para abrir o dashboard integrado.
O dashboard integrado abrange a taxa de requisições, latência p50/p95/p99, taxa de sucesso, conexões TCP, status do certificado mTLS, integridade do plano de controle e inventário de pods na malha. Para obter informações detalhadas, consulte a documentação Find Linkerd data.
Artigos relacionados
Linkerd distributed tracing com OpenTelemetry
Ative a exportação de trace de proxy e instrumente os pods do seu aplicativo para correlacionar spans de malha com traces de APM.
Colete logs do proxy do Linkerd
Opcionalmente, colete os logs do contêiner sidecar
linkerd-proxy
.
Referência de métricas
Lista completa de métricas e atributos de recursos do Linkerd coletados pelo OTel Collector.