第4章 Collector の設定


4.1. Collector の設定

Red Hat build of OpenTelemetry Operator は、Red Hat build of OpenTelemetry リソースを作成およびデプロイするときに使用されるアーキテクチャーと設定を定義するカスタムリソース定義 (CRD) ファイルを使用します。デフォルト設定をインストールすることも、ファイルを変更することもできます。

4.1.1. デプロイメントモード

OpenTelemetryCollector カスタムリソースを使用すると、OpenTelemetry Collector の次のいずれかのデプロイメントモードを指定できます。

Deployment
デフォルトです。
StatefulSet
Collector の File Storage Extension または Tail Sampling Processor を使用する場合など、ステートフルワークロードを実行する必要がある場合は、StatefulSet デプロイメントモードを使用します。
DaemonSet
たとえば、Collector の Filelog Receiver を使用してコンテナーログを読み取るなど、すべてのノードからテレメトリーデータをスクレイプする必要がある場合は、DaemonSet デプロイメントモードを使用します。
サイドカー

コンテナー内のログファイルにアクセスする必要がある場合は、Collector をサイドカーとして注入し、Collector の Filelog Receiver と emptyDir などの共有ボリュームを使用します。

アプリケーションがテレメトリーデータを localhost 経由で送信するように設定する必要がある場合は、Collector をサイドカーとして注入し、暗号化かつ認証された接続を介してテレメトリーデータを外部サービスに転送するように Collector をセットアップします。サイドカーとして注入されると、Collector はアプリケーションと同じ Pod で実行されます。

注記

サイドカーデプロイメントモードを選択した場合は、OpenTelemetryCollector カスタムリソース CR で spec.mode: sidecar フィールドを設定することに加えて、Pod アノテーションまたは namespace アノテーションとして sidecar.opentelemetry.io/inject アノテーションも設定する必要があります。このアノテーションを Pod と namespace の両方に設定すると、false または OpenTelemetryCollector CR 名のいずれかに設定されている場合は、Pod アノテーションが優先されます。

Pod アノテーションとして、sidecar.opentelemetry.io/inject アノテーションはいくつかの値をサポートしています。

apiVersion: v1
kind: Pod
metadata:
  ...
  annotations:
    sidecar.opentelemetry.io/inject: "<supported_value>" 
1

...
1
サポートされる値:
false
Collector を注入しません。アノテーションがない場合、これがデフォルトになります。
true
同じ namespace 内の OpenTelemetryCollector CR の設定を Collector に注入します。
<collector_name>
同じ namespace 内の <collector_name> OpenTelemetryCollector CR の設定を Collector に注入します。
<namespace>/<collector_name>
<namespace> namespace 内の <collector_name> OpenTelemetryCollector CR の設定を Collector に注入します。

4.1.2. OpenTelemetry Collector 設定オプション

OpenTelemetry Collector は、テレメトリーデータにアクセスする 5 種類のコンポーネントで構成されます。

  • レシーバー
  • プロセッサー
  • エクスポーター
  • コネクター
  • 拡張機能

カスタムリソース YAML ファイルで、コンポーネントのインスタンスを複数定義できます。コンポーネントは、設定した後に YAML ファイルの spec.config.service セクションで定義されたパイプラインで有効にする必要があります。ベストプラクティスとしては、必要なコンポーネントのみを有効にします。

OpenTelemetry Collector カスタムリソースファイルの例

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: cluster-collector
  namespace: tracing-system
spec:
  mode: deployment
  observability:
    metrics:
      enableMetrics: true
  config:
    receivers:
      otlp:
        protocols:
          grpc: {}
          http: {}
    processors: {}
    exporters:
      otlp:
        endpoint: otel-collector-headless.tracing-system.svc:4317
        tls:
          ca_file: "/var/run/secrets/kubernetes.io/serviceaccount/service-ca.crt"
      prometheus:
        endpoint: 0.0.0.0:8889
        resource_to_telemetry_conversion:
          enabled: true # by default resource attributes are dropped
    service: 
1

      pipelines:
        traces:
          receivers: [otlp]
          processors: []
          exporters: [otlp]
        metrics:
          receivers: [otlp]
          processors: []
          exporters: [prometheus]

1
コンポーネントが設定されていても、service セクションで定義されていない場合、そのコンポーネントは有効になりません。
Expand
表4.1 Operator が OpenTelemetry Collector を定義するために使用するパラメーター
パラメーター説明デフォルト
receivers:

レシーバーは、データが Collector に到達する方法です。デフォルトでは、レシーバーは設定されていません。設定が有効とみなされるためには、少なくとも 1 つの有効なレシーバーが必要です。レシーバーは、パイプラインに追加して有効にされます。

otlpjaegerprometheuszipkinkafkaopencensus

なし

processors:

プロセッサーは、受信したデータをエクスポートする前に処理します。デフォルトでは、プロセッサーは有効になっていません。

batchmemory_limiterresourcedetectionattributesspank8sattributesfilterrouting

なし

exporters:

エクスポーターは、1 つ以上のバックエンドまたは宛先にデータを送信します。デフォルトでは、エクスポーターは設定されていません。設定が有効とみなされるためには、少なくとも 1 つの有効なエクスポーターが必要です。エクスポーターは、パイプラインに追加して有効にされます。エクスポーターはデフォルト設定で使用できますが、多くの場合、少なくとも宛先およびセキュリティー設定を指定するための設定が必要です。

otlpotlphttpdebugprometheuskafka

なし

connectors:

コネクターはパイプラインのペアを結合します。つまり、パイプラインの終わりのエクスポーターとしてデータを消費し、パイプラインの始まりのレシーバーとしてデータを出力します。コネクターを使用して、消費されたデータを要約、複製、またはルーティングできます。

spanmetrics

なし

extensions:

テレメトリーデータの処理を含まないタスク用のオプションのコンポーネント。

bearertokenauthoauth2clientpprofhealth_checkmemory_ballastzpages

なし

service:
  pipelines:

コンポーネントは、それらを services.pipeline セクションのパイプラインに追加して有効にされます。

  
service:
  pipelines:
    traces:
      receivers:

レシーバーは、それらを service.pipelines.traces セクションに追加してトレース用に有効にします。

 

なし

service:
  pipelines:
    traces:
      processors:

プロセッサーは、それらを service.pipelines.traces セクションに追加してトレース用に有効にします。

 

なし

service:
  pipelines:
    traces:
      exporters:

エクスポーターは、それらを service.pipelines.traces セクションに追加してトレース用に有効にします。

 

なし

service:
  pipelines:
    metrics:
      receivers:

メトリクスのレシーバーを有効にするには、service.pipelines.metrics の下に追加します。

 

なし

service:
  pipelines:
    metrics:
      processors:

メトリクスのプロセッサーを有効にするには、service.pipelines.metrics の下に追加します。

 

なし

service:
  pipelines:
    metrics:
      exporters:

メトリクスのエクスポーターを有効にするには、service.pipelines.metrics の下に追加します。

 

なし

4.1.3. Profile シグナル

Profile シグナルは、コード実行とリソース消費を観測するための新しいテレメトリーデータ形式です。

重要

Profile シグナルはテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat テクノロジープレビュー機能のサポート範囲の詳細は、次のリンクを参照してください。

Profile シグナルを使用すると、特定の関数に至るまで非効率なコードを正確に特定できます。このようなプロファイリングにより、パフォーマンスのボトルネックやリソースの非効率性を特定のコード行まで正確に特定できます。このような高精度なプロファイルデータをトレース、メトリクス、ログと関連づけることで、実稼働環境における包括的なパフォーマンス分析と対象を絞ったコード最適化が可能になります。

プロファイリングは、アプリケーションまたはオペレーティングシステムを対象にすることができます。

  • プロファイリングを使用してアプリケーションを観察すると、開発者はコードのパフォーマンスを検証し、リグレッションを防ぎ、メモリーや CPU の使用率などのリソース消費を監視して、非効率的なコードを特定して改善できます。
  • プロファイリングを使用してオペレーティングシステムを観察すると、インフラストラクチャー、システムコール、カーネル操作、および I/O 待機時間に関する洞察が提供され、その結果、効率とコスト削減用のインフラストラクチャーの最適化に役立ちます。

Profile シグナルが有効になっている OpenTelemetry Collector カスタムリソース

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
name: otel-profiles-collector
  namespace: otel-profile
spec:
 args:
   feature-gates: service.profilesSupport 
1

  config:
    receivers:
      otlp: 
2

        protocols:
          grpc:
           endpoint: '0.0.0.0:4317'
          http:
           endpoint: '0.0.0.0:4318'
    exporters:
       otlp/pyroscope:
           endpoint: "pyroscope.pyroscope-monitoring.svc.cluster.local:4317" 
3

    service:
      pipelines: 
4

         profiles:
           receivers: [otlp]
           exporters: [otlp/pyroscope]
# ...

1
ここに示すように feature-gates フィールドを設定してプロファイルを有効にします。
2
OTLP Receiver を設定して、OpenTelemetry Collector が OTLP 経由でプロファイルデータを受信するようにセットアップします。
3
ストレージなどのプロファイルをエクスポートする場所を設定します。
4
受信したプロファイルデータを Grafana Pyroscope などの OTLP 互換のプロファイリングバックエンドに転送するための設定を含む、プロファイリングパイプラインを定義します。

4.1.4. 必要な RBAC リソースの自動作成

一部の Collector コンポーネントは、RBAC リソースの設定を必要とします。

手順

  • Red Hat build of OpenTelemetry Operator が権限を自動的に作成できるように、opentelemetry-operator-controller-manage サービスアカウントに次の権限を追加します。

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: generate-processors-rbac
    rules:
    - apiGroups:
      - rbac.authorization.k8s.io
      resources:
      - clusterrolebindings
      - clusterroles
      verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
    ---
    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: generate-processors-rbac
    roleRef:
      apiGroup: rbac.authorization.k8s.io
      kind: ClusterRole
      name: generate-processors-rbac
    subjects:
    - kind: ServiceAccount
      name: opentelemetry-operator-controller-manager
      namespace: openshift-opentelemetry-operator

4.1.5. Target Allocator

Target Allocator は、OpenTelemetry Operator のオプションのコンポーネントです。デプロイされた OpenTelemetry Collector インスタンスのフリート全体のスクレイプターゲットをシャード化します。Target Allocator は、Prometheus PodMonitor および ServiceMonitor カスタムリソース (CR) と統合します。Target Allocator が有効な場合、OpenTelemetry Operator が、Target Allocator サービスに接続する有効な prometheus レシーバーに http_sd_config フィールドを追加します。

重要

Target Allocator はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。

Red Hat テクノロジープレビュー機能のサポート範囲の詳細は、次のリンクを参照してください。

Target Allocator が有効な OpenTelemetryCollector CR の例

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel
  namespace: observability
spec:
  mode: statefulset 
1

  targetAllocator:
    enabled: true 
2

    serviceAccount: 
3

    prometheusCR:
      enabled: true 
4

      scrapeInterval: 10s
      serviceMonitorSelector: 
5

        name: app1
      podMonitorSelector: 
6

        name: app2
  config:
    receivers:
      prometheus: 
7

        config:
          scrape_configs: []
    processors:
    exporters:
      debug: {}
    service:
      pipelines:
        metrics:
          receivers: [prometheus]
          processors: []
          exporters: [debug]
# ...

1
Target Allocator が有効な場合、デプロイメントモードを statefulset に設定する必要があります。
2
Target Allocator を有効にします。デフォルトは false です。
3
Target Allocator デプロイメントのサービスアカウント名。サービスアカウントには、収集されたメトリクスにラベルを適切に設定するために、ServiceMonitorPodMonitor カスタムリソース、およびその他のオブジェクトをクラスターから取得するための RBAC が必要です。デフォルトのサービス名は <collector_name>-targetallocator です。
4
Prometheus PodMonitor および ServiceMonitor カスタムリソースとの統合を有効にします。
5
Prometheus ServiceMonitor カスタムリソースのラベルセレクター。空のままにすると、すべてのサービスモニターが有効になります。
6
Prometheus PodMonitor カスタムリソースのラベルセレクター。空のままにすると、すべての Pod モニターが有効になります。
7
最小限の空の scrape_config: [] 設定オプションを指定した Prometheus Receiver。

Target Allocator デプロイメントは、Kubernetes API を使用してクラスターから関連オブジェクトを取得します。そのため、カスタム RBAC 設定が必要です。

Target Allocator のサービスアカウントの RBAC 設定

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-targetallocator
rules:
  - apiGroups: [""]
    resources:
      - services
      - pods
      - namespaces
    verbs: ["get", "list", "watch"]
  - apiGroups: ["monitoring.coreos.com"]
    resources:
      - servicemonitors
      - podmonitors
      - scrapeconfigs
      - probes
    verbs: ["get", "list", "watch"]
  - apiGroups: ["discovery.k8s.io"]
    resources:
      - endpointslices
    verbs: ["get", "list", "watch"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-targetallocator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: otel-targetallocator
subjects:
  - kind: ServiceAccount
    name: otel-targetallocator 
1

    namespace: observability 
2

# ...

1
Target Allocator のサービスアカウントの名前。
2
Target Allocator のサービスアカウントの namespace。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る