Docs » Splunk Observability Cloud でサポートされているインテグレーション » Collectorコンポーネント: レシーバー » Kubernetes オブジェクトレシーバー

Kubernetes オブジェクトレシーバー 🔗

Kubernetes Objectsレシーバーは、Kubernetes APIサーバーからオブジェクトを収集します。サポートされているパイプラインは logs です。詳細は パイプラインでデータを処理するCollector for Kubernetes のログとイベントを収集する を参照してください。

注釈

このレシーバーは、現時点ではサービスアカウントによる認証にのみ対応しています。

はじめに 🔗

Kubernetes Objectsレシーバーを有効にするには、以下のHelm設定を使用します:

k8sObjects:
  - name: pods
    mode: pull
    label_selector: environment in (production),tier in (frontend)
    field_selector: status.phase=Running
    interval: 15m
  - name: events
    mode: watch
    group: events.k8s.io
    namespaces: [default]

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

logs/objects:
  receivers:
    - k8sObjects

手動でレシーバーを有効化する 🔗

Collectorの設定でKubernetes Objectsレシーバーを手動で有効にするには、次の例に示すように、設定ファイルの k8sobjects セクションに receivers を追加します:

k8sobjects:
  auth_type: serviceAccount
  objects:
    - name: pods
      mode: pull
      label_selector: environment in (production),tier in (frontend)
      field_selector: status.phase=Running
      interval: 15m
    - name: events
      mode: watch
      group: events.k8s.io
      namespaces: [default]

主な設定 🔗

以上がメイン設定プロパティです:

  • auth_type。デフォルトでは serviceAccount です。Kubernetes APIサーバーへの認証方法を決定します。値には、none (認証なし)、 serviceAccount (エージェントポッドに提供される標準サービスアカウントトークンを使用)、または kubeConfig ( ~/.kube/config からの認証情報を使用)があります。

  • name。収集するリソースオブジェクトの名前。

  • mode。オブジェクトの収集方法を定義します:

    • pull モードは、リストAPIを使用するこのタイプのオブジェクトを、ある間隔ですべて読み込みます。

    • watch モードでは、ウォッチAPIを使って長い接続を設定し、アップデートのみを取得します。

  • label_selector。ラベルでオブジェクトを選択します。

  • field_selector。フィールドでオブジェクトを選択します。

  • interval。デフォルトでは、60m (分)です。pull モードでは、オブジェクトが引き出される間隔。

  • exclude_watch_typewatch モードでは、特定のウォッチタイプを除外することができます。有効な値は、ADDEDMODIFIEDDELETEDBOOKMARKERROR です。

  • resource_version。デフォルトでは 1watch モードでは、特定のバージョンから始まるリソースをウォッチできます。指定がない場合、レシーバーはウォッチ開始前に resourceVersion を取得するための初期リストを行います。これが必要な理由については、Kubernetesの Efficient Detection of Change を参照してください。

  • namespaces。デフォルトでは all です。イベントを収集する名前空間の配列。

  • group。オプション。API グループ名。指定したリソースオブジェクトが複数のグループに存在する場合、このフィールドを使用して選択するグループを指定します。デフォルトでは、最初のグループが選択されます。

    • 例えば、events リソースが v1events.k8s.io/v1 APIGroup の両方で利用可能な場合、デフォルトで v1 を選択します。

詳細は、設定 を参照してください。

Kubernetesデプロイのリソースを設定する 🔗

以下のセクションに従って、Collector をレシーバーでデプロイするために必要なさまざまなKubernetesリソースを設定します。

手動デプロイ 🔗

OTLP_ENDPOINT を有効な値に置き換えて、otelcontribcol の設定でConfigMapを作成します。

apiVersion: v1
kind: ConfigMap
metadata:
  name: otelcontribcol
  labels:
    app: otelcontribcol
data:
  config.yaml: |
    receivers:
      k8sobjects:
        objects:
          - name: pods
            mode: pull
          - name: events
            mode: watch
    exporters:
      otlp:
        endpoint: <OTLP_ENDPOINT>
        tls:
          insecure: true

    service:
      pipelines:
        logs:
          receivers: [k8sobjects]
          exporters: [otlp]

チャートのデプロイ 🔗

または、手動デプロイの代わりに、次のHelmチャートデプロイを使用します:

clusterReceiver:
 k8sObjects:
   - name: pods
     mode: pull
     label_selector: environment in (production),tier in (frontend)
     field_selector: status.phase=Running
     interval: 15m
   - name: events
     mode: watch
     group: events.k8s.io
     namespaces: [default]

サービスアカウント 🔗

Collector が使用するサービスアカウントを作成します。

apiVersion: v1
kind: ServiceAccount
metadata:
   labels:
      app: otelcontribcol
   name: otelcontribcol

ロールベースのアクセス制御(RBAC) 🔗

このセクションのコマンドを使用して、必要なアクセス許可を持つ ClusterRole と、前のセクションで作成したサービスアカウントにロールを付与する ClusterRoleBinding を作成します。

注釈

この例では、ポッドとイベントのみを収集します。他のオブジェクトを収集するには、適切なルールを追加します。

watch モードを使用する場合は、list 動詞も指定する必要があります。これにより、resource_version が提供されなかった場合、レシーバーは初期リストを実行するアクセス許可を得たり、410 Gone シナリオから回復するためにリストを使用したりすることができます。詳しくはKubernetes の公式ドキュメント 「410 Gone」 レスポンス を参照してください。

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otelcontribcol
  labels:
    app: otelcontribcol
rules:
- apiGroups:
  - ""
  resources:
  - events
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - "events.k8s.io"
  resources:
  - events
  verbs:
  - watch
  - list
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otelcontribcol
  labels:
    app: otelcontribcol
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otelcontribcol
subjects:
- kind: ServiceAccount
  name: otelcontribcol
  namespace: default

デプロイ 🔗

Collector と Kubernetes オブジェクトレシーバーを 1 つのレプリカとしてデプロイします。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: otelcontribcol
  labels:
     app: otelcontribcol

spec:
   replicas: 1
   selector:
      matchLabels:
      app: otelcontribcol
template:
   metadata:
      labels:
         app: otelcontribcol
   spec:
      serviceAccountName: otelcontribcol
      containers:
      - name: otelcontribcol
        image: otelcontribcol:latest # specify image
        args: ["--config", "/etc/config/config.yaml"]
        volumeMounts:
        - name: config
          mountPath: /etc/config
        imagePullPolicy: IfNotPresent
      volumes:
        - name: config
          configMap:
            name: otelcontribcol

設定 🔗

次の表に、レシーバーの設定オプションを示します:

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

リソースを確実に割り当てる 🔗

レシーバーが以下のようなエラーを返す場合は、ClusterRoleresource が追加されていることを確認してください。

{"kind": "receiver", "name": "k8sobjects", "pipeline": "logs", "resource": "events.k8s.io/v1, Resource=events", "error": "unknown"}

一般的なトラブルシューティング 🔗

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

Splunk Observability Cloudをご利用のお客様

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

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

  • Join the Splunk #observability user group Slack channel to communicate with customers, partners, and Splunk employees worldwide. To join, see Chat groups in the Get Started with Splunk Community manual.

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