第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

...
Copy to Clipboard Toggle word wrap
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]
Copy to Clipboard Toggle word wrap

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

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

otlpjaegerprometheuszipkinkafkaopencensus

なし

processors:
Copy to Clipboard Toggle word wrap

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

batchmemory_limiterresourcedetectionattributesspank8sattributesfilterrouting

なし

exporters:
Copy to Clipboard Toggle word wrap

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

otlpotlphttpdebugprometheuskafka

None

connectors:
Copy to Clipboard Toggle word wrap

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

spanmetrics

なし

extensions:
Copy to Clipboard Toggle word wrap

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

bearertokenauthoauth2clientpprofhealth_checkmemory_ballastzpages

なし

service:
  pipelines:
Copy to Clipboard Toggle word wrap

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

  
service:
  pipelines:
    traces:
      receivers:
Copy to Clipboard Toggle word wrap

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

 

なし

service:
  pipelines:
    traces:
      processors:
Copy to Clipboard Toggle word wrap

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

 

None

service:
  pipelines:
    traces:
      exporters:
Copy to Clipboard Toggle word wrap

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

 

None

service:
  pipelines:
    metrics:
      receivers:
Copy to Clipboard Toggle word wrap

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

 

None

service:
  pipelines:
    metrics:
      processors:
Copy to Clipboard Toggle word wrap

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

 

None

service:
  pipelines:
    metrics:
      exporters:
Copy to Clipboard Toggle word wrap

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

 

None

4.1.3. profile signal

Profile シグナルは、コードの実行とリソース消費を監視するための新しい Telemetry データ形式です。

重要

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

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

プロファイル信号を使用すると、非効率的なコードを特定機能に特定できます。このようなプロファイリングにより、コードの特定の行までパフォーマンスのボトルネックやリソースの効率を正確に特定できます。このような高速プロファイルデータをトレース、メトリック、およびログに関連付けることで、実稼働環境での包括的なパフォーマンス分析とターゲット型コードの最適化が可能になります。

プロファイリングは、アプリケーションまたはオペレーティングシステムをターゲットにできます。

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

プロファイルシグナルが有効になっている 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]
# ...
Copy to Clipboard Toggle word wrap

1
以下に示すように feature-gates フィールドを設定してプロファイルを有効にします。
2
OTLP Receiver を設定して、OTLP 経由でプロファイルデータを受信するように OpenTelemetry Collector をセットアップします。
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
    Copy to Clipboard Toggle word wrap

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]
# ...
Copy to Clipboard Toggle word wrap

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

# ...
Copy to Clipboard Toggle word wrap

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

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat