• /
  • EnglishEspañolFrançais日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

Linkerd監視のインストールと設定:Helmを使用したNRDOT

|View as Markdown (English)

このページでは、Helmを使用してNRDOT Collectorをインストールし、Linkerdプロキシおよびコントロール・プレーンのメトリクスをスクレイプするように設定し、データがNew Relicに送信されていることを確認します。これには約15分かかります。

互換性と要件

サポート対象

  • kubectlが設定されたKubernetesクラスタ(EKS、GKE、AKS、または自己管理型)
  • Linkerdがインストールされ、正常に動作していること(linkerd checkがパスすること)
  • Helm管理のクラスタ設定

必要なこと

  • New RelicのIngestライセンスキー

  • ベースとなるKubernetes OpenTelemetry Helmインストレーションが完了していること

  • New Relic OTLPエンドポイントへのネットワーク接続

  • 監視対象のネームスペースでインジェクションが有効になっていること。有効になっていない場合は、アノテーションを追加して再起動してください:

    bash
    $
    kubectl annotate namespace <YOUR_NAMESPACE> linkerd.io/inject=enabled
    $
    kubectl rollout restart deployment -n <YOUR_NAMESPACE>

ヒント

NRDOT Helmチャートにはkube-state-metricsがバンドルされており、デフォルトで有効になっているため、KubernetesワークロードのエンティティはすでにLinkerdのメトリクスと関連付けられています。追加の設定は必要ありません。

インストール

  1. values.yamlにクラスタ名を設定してください。

    deployment:
    envs:
    - name: OTEL_RESOURCE_ATTRIBUTES
    value: "k8s.cluster.name=<YOUR_CLUSTER_NAME>"
  2. のdeployment.configMap.extraConfig values.yamlに、Linkerdのスクレイプ設定とプロセッサを追加します。

    receivers:
    prometheus:
    config:
    scrape_configs:
    - job_name: 'linkerd-controller'
    kubernetes_sd_configs:
    - role: pod
    namespaces: { 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 }
    processors:
    resource/strip_service:
    attributes:
    - { key: service.name, action: delete }
    - { key: service.instance.id, action: delete }
    transform/k8s:
    metric_statements:
    - context: datapoint
    statements:
    - 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: datapoint
    statements:
    - 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: metric
    statements:
    - set(description, "")
    - set(unit, "")
    filter/drop_unused:
    error_mode: ignore
    metrics:
    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]

    pipelines: service:の下にネストするのではなく、extraConfigのルートで定義する必要があります。Helmチャートテンプレートは、extraConfig.pipelinesをservice.pipelinesにマッピングします。

設定

  1. 次の表に従ってvalues.yamlファイルを更新してください:

    パラメータ説明
    OTEL_RESOURCE_ATTRIBUTESNew Relicでの識別のために、k8s.cluster.nameをKubernetesクラスタ名に設定します。
    filter/drop_unusedデフォルトでは、価値の低いLinkerdプロキシのメトリクスをドロップします。これらを再度有効にするには、このリストからエントリを削除してください
  2. 更新した値を実行中のHelmリリースに適用してください。

    bash
    $
    helm upgrade nr-k8s-otel-collector newrelic/nr-k8s-otel-collector \
    >
    --namespace newrelic --reuse-values -f values.yaml

データを検索する

  1. one.newrelic.com > All capabilities > All entitiesに移動します。

  2. クラスタ名を検索します。

  3. Linkerdエンティティを選択して、組み込みダッシュボードを開きます。

    組み込みダッシュボードは、リクエスト率、レイテンシp50/p95/p99、成功率、TCP接続、mTLS証明書ステータス、コントロールプレーンのヘルス、およびメッシュ化されたポッドのインベントリをカバーします。詳細については、Linkerdデータの検索ドキュメントを参照してください。

OpenTelemetryを使用したLinkerdディストリビューティッド(分散)トレーシング

メッシュスパンをAPMのトレースと関連付けるには、プロキシのトレースエクスポートを有効にし、アプリケーションのポッドを計装してください。

Linkerdプロキシログを収集する

オプションで

linkerd-proxy

サイドカーコンテナのログを収集します。

メトリクスリファレンス

OTel Collectorによって収集されるLinkerdメトリクスとリソース属性の完全なリスト。

Copyright © 2026 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.