Docs » Splunk Observability Cloud でサポートされているインテグレーション » Collectorコンポーネント: レシーバー » Kubelet統計レシーバー

Kubelet統計レシーバー 🔗

Kubelet statsレシーバーは、kubelet上のKubernetes APIサーバーからポッドメトリクスをプルし、さらなる処理のためにメトリクス・パイプラインを介してそれらを送信します。サポートされているパイプラインタイプは metrics です。詳細は パイプラインでデータを処理する を参照してください。

注釈

このレシーバーは、kubelet-statskubelet-metricskubernetes-volumes Smart Agent モニターに代わるものです。

はじめに 🔗

以下の手順に従って、コンポーネントの設定とアクティベーションを行ってください:

  1. Splunk Distribution of OpenTelemetry Collector をホストまたはコンテナプラットフォームにデプロイします:

  2. 次のセクションで説明するように、Kubelet 統計レシーバーを設定します。

  3. Collector を再起動します。

サンプル構成 🔗

Kubelet 統計レシーバーを有効にするには、設定ファイルの receivers セクションに kubeletstats を追加します:

receivers:
  kubeletstats:

設定を完了するには、設定ファイルの service セクションの metrics パイプラインに、レシーバーを含めます:

service:
  pipelines:
    metrics:
      receivers: [kubeletstats]

Kubelet 統計レシーバー接続を認証する 🔗

KubeletはKubernetesノード上で実行され、Kubelet statsレシーバーが接続するAPIサーバーを持ちます。レシーバーを設定するには、接続と認証の詳細、データを収集して送信する頻度を設定します。

認証には、auth_type フィールドで示されるように、2つの方法があります:

  • tls tells the receiver to use TLS for authentication and requires that the ca_file, key_file, and cert_file fields. See more at Configure TLS.

  • ServiceAccount は、kubelet API の認証にデフォルトのサービス アカウント トークンを使用するよう、このレシーバーに指示します。

TLS認証を設定する 🔗

次の例は、TLS 認証を使用して kubelet stats レシーバーを構成する方法を示しています:

receivers:
  kubeletstats:
    collection_interval: 20s
    auth_type: "tls"
    ca_file: "/path/to/ca.crt"
    key_file: "/path/to/apiserver.key"
    cert_file: "/path/to/apiserver.crt"
    endpoint: "192.168.64.1:10250"
    insecure_skip_verify: true

exporters:
  file:
    path: "fileexporter.txt"

service:
  pipelines:
    metrics:
      receivers: [kubeletstats]
      exporters: [file]

サービスアカウント認証の設定 🔗

次の例は、サービスアカウント認証で kubeletstats レシーバーを設定する方法を示しています。

  1. ポッド仕様でノード名が設定されていることを確認します:

    env:
      - name: K8S_NODE_NAME
        valueFrom:
          fieldRef:
            fieldPath: spec.nodeName
    
  2. Collector をアクティブにして、K8S_NODE_NAME 環境変数を参照します:

receivers:
  kubeletstats:
    collection_interval: 20s
    auth_type: "serviceAccount"
    endpoint: "${K8S_NODE_NAME}:10250"
    insecure_skip_verify: true
exporters:
  file:
    path: "fileexporter.txt"
service:
  pipelines:
    metrics:
      receivers: [kubeletstats]
      exporters: [file]

注意

endpoint 値がないか空の場合、Collector が実行されているホスト名がエンドポイントとして使用されます。hostNetwork フラグが設定されていて、CollectorがPodで実行されている場合、ホスト名はノードのネットワーク名前空間に解決されます。

高度なユースケース 🔗

デフォルトで除外されているメトリクスを追加する 🔗

除外されたメトリクスをインポートするには、次の例のように include_metrics オプションを使用します:

exporters:
  signalfx:
    include_metrics:
      - metric_names:
          - container.memory.rss.bytes
          - container.memory.available.bytes

メタデータ属性の追加 🔗

デフォルトでは、生成されたすべてのメトリクスは、/stats/summary エンドポイントが提供する kubelet に基づくリソース属性を取得します。他のエンドポイントを使用して追加のメタデータ・エンティティを取得し、メトリクス・リソースの追加属性として設定します。

Kubelet統計レシーバーは、以下のメタデータをサポートします:

  • container.id: /pods を使って公開されたコンテナのステータスから得られるコンテナIDラベルで、メトリクスメタデータを豊かにします。

  • k8s.volume.type: /pods を使用して公開されているPod仕様からボリュームタイプを収集し、ボリュームメトリクスの属性として追加します。ボリューム・タイプよりも多くのメタデータが利用可能な場合、レシーバーは利用可能なフィールドとボリュームのタイプに応じて同期します。たとえば、aws.volume.idawsElasticBlockStore から同期され、gcp.pd.namegcePersistentDisk から同期されます。

メトリクススに container.id ラベルを追加するには、extra_metadata_labels フィールドを設定します。例:

receivers:
  kubeletstats:
    collection_interval: 10s
    auth_type: "serviceAccount"
    endpoint: "${K8S_NODE_NAME}:10250"
    insecure_skip_verify: true
    extra_metadata_labels:
      - container.id

extra_metadata_labels が設定されていない場合、メタデータを受け取るための追加のAPIコールは行われません。

追加のボリューム・メタデータを収集する 🔗

永続ボリューム・クレームを扱う場合、基礎となるストレージ・リソースからメタデータを同期できます。例:

receivers:
  kubeletstats:
    collection_interval: 10s
    auth_type: "serviceAccount"
    endpoint: "${K8S_NODE_NAME}:10250"
    insecure_skip_verify: true
    extra_metadata_labels:
      - k8s.volume.type
    k8s_api_config:
      auth_type: serviceAccount

k8s_api_config が設定されている場合、レシーバーは永続ボリューム請求の基礎となるストレージリソースからメタデータの収集を試みます。たとえば、Pod が AWS 上の Elastic Block Store(EBS)インスタンスに裏付けされた永続ボリュームクレームを使用している場合、レシーバーは persistentVolumeClaim ではなく awsElasticBlockStorek8s.volume.type ラベルを設定します。

メトリクス・グループの設定 🔗

メトリクス・グループは、コンポーネント・タイプ別のメトリクスの集まりです。デフォルトでは、コンテナ、ポッド、およびノードからのメトリクスが収集されます。metric_groups を設定すると、リストされたグループからのメトリクスのみが収集されます。有効なグループは、containerpodnodevolume です。

例えば、レシーバーからノードとポッドのメトリクスだけを収集します:

receivers:
  kubeletstats:
    collection_interval: 10s
    auth_type: "serviceAccount"
    endpoint: "${K8S_NODE_NAME}:10250"
    insecure_skip_verify: true
    metric_groups:
      - node
      - pod

オプションパラメーターの設定 🔗

また、以下のオプション・パラメーターも設定できます:

  • collection_interval これはデータを収集する間隔です。デフォルト値は 10s です。

  • insecure_skip_verify これは、サーバー証明書チェーンとホスト名の検証を省略するかどうかを指定します。デフォルト値は false です。

設定 🔗

次の表に、Kubelet 統計レシーバーの構成オプションを示します:

メトリクス 🔗

以下のメトリクス、リソース属性、および属性が使用できます。

注釈

SignalFxエクスポーターは、デフォルトでいくつかの利用可能なメトリクスを除外します。デフォルトのメトリクス・フィルターについては、デフォルトで除外されるメトリクスのリスト を参照してください。

特定のメトリクスをアクティブまたは非アクティブにする 🔗

各メトリクスの metrics セクションの enabled フィールドを設定することで、特定のメトリクスをアクティブまたは非アクティブにできます。例:

receivers:
  samplereceiver:
    metrics:
      metric-one:
        enabled: true
      metric-two:
        enabled: false

以下は、アクティブ化されたメトリクスを持つホスト・メトリクス・レシーバーの構成例です:

receivers:
  hostmetrics:
    scrapers:
      process:
        metrics:
          process.cpu.utilization:
            enabled: true

注釈

無効化されたメトリクスは Splunk Observability Cloud に送信されません。

Billing 🔗

  • If you’re in a MTS-based subscription, all metrics count towards metrics usage.

  • ホストベースのプランに加入している場合、このドキュメントでアクティブ(Active: Yes)と記載されているメトリクスはデフォルトとみなされ、無料で含まれます。

Learn more at Infrastructure Monitoringのサブスクリプション使用状況(ホストとメトリクスのプラン).

トラブルシューティング 🔗

Splunk Observability Cloudをご利用のお客様で、Splunk Observability Cloudでデータを確認できない場合は、以下の方法でサポートを受けることができます。

Splunk Observability Cloudをご利用のお客様

見込み客および無料トライアルユーザー様

  • Splunk Answers のコミュニティサポートで質問し、回答を得る

  • Splunk #observability ユーザーグループの Slack チャンネルに参加して、世界中の顧客、パートナー、Splunk 社員とのコミュニケーションを図る。参加するには、Get Started with Splunk Community マニュアルの チャットグループ を参照してください。

このページは 2024年12月12日 に最終更新されました。