Collector の設定


Red Hat build of OpenTelemetry 3.8

レシーバー、プロセッサー、エクスポーター、コネクター、および拡張機能を使用した Telemetry データパイプラインの設定

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、カスタムリソース定義を使用して OpenTelemetry Collector を設定する方法について説明します。Telemetry データを取り込むためのプロセッサー、データを変換およびフィルタリングするためのプロセッサー、エクスポートャーを設定して監視バックエンド、パイプラインをリンクするコネクター、および認証などの機能を追加する拡張機能について説明します。デプロイメントモード、設定オプション、および RBAC 設定が含まれます。

第1章 Collector の設定

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

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 に注入します。

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
表1.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

なし

connectors:
Copy to Clipboard Toggle word wrap

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

spanmetrics

なし

extensions:
Copy to Clipboard Toggle word wrap

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

bearertokenauthoauth2clientpprofhealth_checkmemory_ballastzpages

None

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 セクションに追加してトレース用に有効にします。

 

なし

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

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

 

なし

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

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

 

なし

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

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

 

なし

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

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

 

None

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 互換プロファイリングバックエンドに転送する設定を含む、プロファイリングパイプラインを定義します。

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

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。

第2章 レシーバー

レシーバーはデータを Collector に入れます。レシーバーはプッシュベースまたはプルベースにすることができます。通常、レシーバーは指定された形式のデータを受け入れて内部形式に変換し、それを適用可能なパイプラインで定義されるプロセッサーおよびエクスポーターに渡します。デフォルトでは、レシーバーは設定されていません。1 つまたは複数のレシーバーを設定する必要があります。レシーバーは 1 つ以上のデータソースをサポートします。

現在、Red Hat build of OpenTelemetry では、次の一般提供およびテクノロジープレビューのレシーバーが利用可能です。

2.1. OTLP Receiver

OTLP Receiver は、OpenTelemetry Protocol (OTLP) を使用してトレース、メトリクス、およびログを取り込みます。

OTLP Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317 
1

            tls: 
2

              ca_file: ca.pem
              cert_file: cert.pem
              key_file: key.pem
              client_ca_file: client.pem 
3

              reload_interval: 1h 
4

          http:
            endpoint: 0.0.0.0:4318 
5

            tls: {} 
6


    service:
      pipelines:
        traces:
          receivers: [otlp]
        metrics:
          receivers: [otlp]
# ...
Copy to Clipboard Toggle word wrap

1
OTLP gRPC エンドポイント。省略した場合、デフォルトの 0.0.0.0:4317 が使用されます。
2
サーバー側の TLS 設定。TLS 証明書へのパスを定義します。省略した場合、TLS は無効になります。
3
サーバーがクライアント証明書を検証する TLS 証明書へのパス。これにより、TLSConfigClientCAs および ClientAuth の値が RequireAndVerifyClientCert に設定されます。詳細は、Config of the Golang TLS package を参照してください。
4
証明書をリロードする間隔を指定します。この値が設定されていない場合、証明書はリロードされません。reload_interval フィールドは、nsusmssmh などの有効な時間単位が含まれる文字列を受け入れます。
5
OTLP HTTP エンドポイント。デフォルト値は 0.0.0.0:4318 です。
6
サーバー側の TLS 設定。詳細は、grpc プロトコル設定セクションを参照してください。

2.2. Jaeger Receiver

Jaeger Receiver は、Jaeger 形式でトレースを取り込みます。

Jaeger Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      jaeger:
        protocols:
          grpc:
            endpoint: 0.0.0.0:14250 
1

          thrift_http:
            endpoint: 0.0.0.0:14268 
2

          thrift_compact:
            endpoint: 0.0.0.0:6831 
3

          thrift_binary:
            endpoint: 0.0.0.0:6832 
4

          tls: {} 
5


    service:
      pipelines:
        traces:
          receivers: [jaeger]
# ...
Copy to Clipboard Toggle word wrap

1
Jaeger gRPC エンドポイント。省略した場合、デフォルトの 0.0.0.0:14250 が使用されます。
2
Jaeger Thrift HTTP エンドポイント。省略した場合、デフォルトの 0.0.0.0:14268 が使用されます。
3
Jaeger Thrift Compact エンドポイント。省略した場合、デフォルトの 0.0.0.0:6831 が使用されます。
4
Jaeger Thrift Binary エンドポイント。省略した場合、デフォルトの 0.0.0.0:6832 が使用されます。
5
サーバー側の TLS 設定。詳細は、OTLP Receiver 設定セクションを参照してください。

2.3. Host Metrics Receiver

Host Metrics Receiver は、OTLP 形式でメトリクスを取り込みます。

Host Metrics Receiver が有効になっている OpenTelemetry Collector カスタムリソース

apiVersion: v1
kind: ServiceAccount
metadata:
  name: otel-hostfs-daemonset
  namespace: <namespace>
# ...
---
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
allowHostDirVolumePlugin: true
allowHostIPC: false
allowHostNetwork: false
allowHostPID: true
allowHostPorts: false
allowPrivilegeEscalation: true
allowPrivilegedContainer: true
allowedCapabilities: null
defaultAddCapabilities:
- SYS_ADMIN
fsGroup:
  type: RunAsAny
groups: []
metadata:
  name: otel-hostmetrics
readOnlyRootFilesystem: true
runAsUser:
  type: RunAsAny
seLinuxContext:
  type: RunAsAny
supplementalGroups:
  type: RunAsAny
users:
- system:serviceaccount:<namespace>:otel-hostfs-daemonset
volumes:
- configMap
- emptyDir
- hostPath
- projected
# ...
---
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel
  namespace: <namespace>
spec:
  serviceAccount: otel-hostfs-daemonset
  mode: daemonset
  volumeMounts:
    - mountPath: /hostfs
      name: host
      readOnly: true
  volumes:
    - hostPath:
        path: /
      name: host
  config:
    receivers:
      hostmetrics:
        collection_interval: 10s 
1

        initial_delay: 1s 
2

        root_path: / 
3

        scrapers: 
4

          cpu: {}
          memory: {}
          disk: {}
    service:
      pipelines:
        metrics:
          receivers: [hostmetrics]
# ...
Copy to Clipboard Toggle word wrap

1
ホストメトリクス収集の時間間隔を設定します。省略した場合、デフォルト値は 1m です。
2
ホストメトリクス収集の初期時間遅延を設定します。省略した場合、デフォルト値は 1s です。
3
Host Metrics Receiver がルートファイルシステムの場所を認識できるように、root_path を設定します。Host Metrics Receiver のインスタンスを複数実行する場合は、各インスタンスに同じ root_path 値を設定します。
4
有効なホストメトリクススクレーパーをリストします。使用可能なスクレーパーは、cpudiskloadfilesystemmemorynetworkpagingprocesses、および process です。

2.4. Kubernetes Objects Receiver

Kubernetes Objects Receiver は、Kubernetes API サーバーから収集されるオブジェクトをプルまたは監視します。このレシーバーは、主に Kubernetes イベントを監視しますが、あらゆる種類の Kubernetes オブジェクトを収集できます。このレシーバーはクラスター全体のテレメトリーを収集するため、すべてのデータを収集するにはこのレシーバーのインスタンスが 1 つあれば十分です。

重要

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

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

Kubernetes Objects Receiver が有効になっている OpenTelemetry Collector カスタムリソース

apiVersion: v1
kind: ServiceAccount
metadata:
  name: otel-k8sobj
  namespace: <namespace>
# ...
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-k8sobj
  namespace: <namespace>
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: otel-k8sobj
subjects:
  - kind: ServiceAccount
    name: otel-k8sobj
    namespace: <namespace>
roleRef:
  kind: ClusterRole
  name: otel-k8sobj
  apiGroup: rbac.authorization.k8s.io
# ...
---
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel-k8s-obj
  namespace: <namespace>
spec:
  serviceAccount: otel-k8sobj
  mode: deployment
  config:
    receivers:
      k8sobjects:
        auth_type: serviceAccount
        objects:
          - name: pods 
1

            mode: pull 
2

            interval: 30s 
3

            label_selector: 
4

            field_selector: 
5

            namespaces: [<namespace>,...] 
6

          - name: events
            mode: watch
    exporters:
      debug:
    service:
      pipelines:
        logs:
          receivers: [k8sobjects]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
このレシーバーが監視するリソース名。たとえば、podsdeploymentsevents などです。
2
このレシーバーが使用する観測モード。pull または watch です。
3
プルモードにのみ適用されます。オブジェクトをプルする要求の間隔です。省略した場合、デフォルト値は 1h です。
4
ターゲットを定義するためのラベルセレクター。
5
ターゲットをフィルタリングするためのフィールドセレクター。
6
イベントを収集する namespace のリスト。省略した場合、デフォルト値は all です。

2.5. Kubelet Stats Receiver

Kubelet Stats Receiver は、kubelet の API サーバーからノード、Pod、コンテナー、ボリュームに関連するメトリクスを抽出します。これらのメトリクスは、さらなる分析のためにメトリクス処理パイプラインに送られます。

Kubelet Stats Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      kubeletstats:
        collection_interval: 20s
        auth_type: "serviceAccount"
        endpoint: "https://${env:K8S_NODE_NAME}:10250"
        insecure_skip_verify: true
    service:
      pipelines:
        metrics:
          receivers: [kubeletstats]
  env:
    - name: K8S_NODE_NAME 
1

      valueFrom:
        fieldRef:
          fieldPath: spec.nodeName
# ...
Copy to Clipboard Toggle word wrap

1
API に認証するために K8S_NODE_NAME を設定します。

Kubelet Stats Receiver には、OpenTelemetry Collector の実行に使用されるサービスアカウントに対する追加の権限が必要です。

サービスアカウントに必要な権限

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-collector
rules:
  - apiGroups: ['']
    resources: ['nodes/stats']
    verbs: ['get', 'watch', 'list']
  - apiGroups: [""]
    resources: ["nodes/proxy"] 
1

    verbs: ["get"]
# ...
Copy to Clipboard Toggle word wrap

1
extra_metadata_labels または request_utilization または limit_utilization メトリクスを使用するときに必要な権限。

2.6. Prometheus Receiver

Prometheus Receiver はメトリクスエンドポイントをスクレイプします。

Prometheus Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
        prometheus:
          config:
            scrape_configs: 
1

              - job_name: 'my-app'  
2

                scrape_interval: 5s 
3

                static_configs:
                  - targets: ['my-app.example.svc.cluster.local:8888'] 
4

    service:
      pipelines:
        metrics:
          receivers: [prometheus]
# ...
Copy to Clipboard Toggle word wrap

1
Prometheus 形式を使用して設定をスクレイプします。
2
Prometheus のジョブ名。
3
メトリクスデータをスクレイプする間隔。時間単位を受け入れます。デフォルト値は 1m です。
4
メトリクスが公開されるターゲット。この例では、example プロジェクトの my-app アプリケーションからメトリクスをスクレイプします。

2.7. OTLP JSON File Receiver

OTLP JSON File Receiver は、OpenTelemetry Protocol 仕様に準拠した、ProtoJSON 形式のデータを含むファイルからパイプライン情報を抽出します。処理対象ファイルの作成や修正などの変更がないか、指定されたディレクトリーを監視します。

重要

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

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

OTLP JSON File Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    otlpjsonfile:
      include:
        - "/var/log/*.log" 
1

      exclude:
        - "/var/log/test.log" 
2

# ...
Copy to Clipboard Toggle word wrap

1
監視するファイルパスの glob パターンのリスト。
2
無視するファイルパスの glob パターンのリスト。

2.8. Zipkin Receiver

Zipkin Receiver は、Zipkin v1 および v2 形式でトレースを取り込みます。

Zipkin Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      zipkin:
        endpoint: 0.0.0.0:9411 
1

        tls: {} 
2

    service:
      pipelines:
        traces:
          receivers: [zipkin]
# ...
Copy to Clipboard Toggle word wrap

1
Zipkin HTTP エンドポイント。省略した場合、デフォルトの 0.0.0.0:9411 が使用されます。
2
サーバー側の TLS 設定。詳細は、OTLP Receiver 設定セクションを参照してください。

2.9. Kafka Receiver

Kafka Receiver は、Kafka からトレース、メトリクス、ログを OTLP 形式で受信します。

重要

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

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

Kafka Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      kafka:
        brokers: ["localhost:9092"] 
1

        protocol_version: 2.0.0 
2

        topic: otlp_spans 
3

        auth:
          plain_text: 
4

            username: example
            password: example
          tls: 
5

            ca_file: ca.pem
            cert_file: cert.pem
            key_file: key.pem
            insecure: false 
6

            server_name_override: kafka.example.corp 
7

    service:
      pipelines:
        traces:
          receivers: [kafka]
# ...
Copy to Clipboard Toggle word wrap

1
Kafka ブローカーのリスト。デフォルトは localhost:9092 です。
2
Kafka プロトコルのバージョン。たとえば、2.0.0 などです。これは必須フィールドです。
3
読み取り元の Kafka トピックの名前。デフォルトは otlp_spans です。
4
プレーンテキスト認証設定。省略した場合、プレーンテキスト認証は無効になります。
5
クライアント側の TLS 設定。TLS 証明書へのパスを定義します。省略した場合、TLS 認証は無効になります。
6
サーバーの証明書チェーンとホスト名の検証を無効にします。デフォルトは false です。
7
ServerName は、仮想ホスティングをサポートするためにクライアントによって要求されたサーバーの名前を示します。

2.10. Kubernetes Cluster Receiver

Kubernetes Cluster Receiver は、Kubernetes API サーバーからクラスターメトリクスとエンティティーイベントを収集します。このレシーバーは、Kubernetes API を使用して更新に関する情報を受信します。このレシーバーの認証は、サービスアカウントを通じてのみサポートされます。

重要

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

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

Kubernetes Cluster Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      k8s_cluster:
        distribution: openshift
        collection_interval: 10s
    exporters:
      debug: {}
    service:
      pipelines:
        metrics:
          receivers: [k8s_cluster]
          exporters: [debug]
        logs/entity_events:
          receivers: [k8s_cluster]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

このレシーバーには、設定済みのサービスアカウント、クラスターロールの RBAC ルール、および RBAC をサービスアカウントにバインドするクラスターロールバインディングが必要です。

ServiceAccount オブジェクト

apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: otelcontribcol
  name: otelcontribcol
# ...
Copy to Clipboard Toggle word wrap

ClusterRole オブジェクトの RBAC ルール

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otelcontribcol
  labels:
    app: otelcontribcol
rules:
- apiGroups:
  - quota.openshift.io
  resources:
  - clusterresourcequotas
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - events
  - namespaces
  - namespaces/status
  - nodes
  - nodes/spec
  - pods
  - pods/status
  - replicationcontrollers
  - replicationcontrollers/status
  - resourcequotas
  - services
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - apps
  resources:
  - daemonsets
  - deployments
  - replicasets
  - statefulsets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - extensions
  resources:
  - daemonsets
  - deployments
  - replicasets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - batch
  resources:
  - jobs
  - cronjobs
  verbs:
  - get
  - list
  - watch
- apiGroups:
    - autoscaling
  resources:
    - horizontalpodautoscalers
  verbs:
    - get
    - list
    - watch
# ...
Copy to Clipboard Toggle word wrap

ClusterRoleBinding オブジェクト

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

2.11. OpenCensus Receiver

OpenCensus Receiver は、OpenCensus プロジェクトとの下位互換性を提供し、計装済みのコードベースの移行を容易にします。gRPC または HTTP および JSON を介して OpenCensus 形式でメトリクスとトレースを受信します。

警告

OpenCensus Receiver が非推奨になり、今後のリリースで削除される可能性があります。

OpenCensus Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      opencensus:
        endpoint: 0.0.0.0:9411 
1

        tls: 
2

        cors_allowed_origins: 
3

          - https://*.<example>.com
    service:
      pipelines:
        traces:
          receivers: [opencensus]
# ...
Copy to Clipboard Toggle word wrap

1
OpenCensus エンドポイント。省略した場合、デフォルトは 0.0.0.0:55678 です。
2
サーバー側の TLS 設定。詳細は、OTLP Receiver 設定セクションを参照してください。
3
HTTP JSON エンドポイントを使用して、オプションで CORS を設定することもできます。これは、このフィールドで許可される CORS オリジンのリストを指定することで有効になります。* を含むワイルドカードは、cors_allowed_origins で受け入れられます。任意のオリジンと一致させるには、* のみを入力します。

2.12. Filelog Receiver

Filelog Receiver はファイルからログを追跡して解析します。

重要

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

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

テキストファイルを追跡する Filelog Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      filelog:
        include: [ /simple.log ] 
1

        operators: 
2

          - type: regex_parser
            regex: '^(?P<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) (?P<sev>[A-Z]*) (?P<msg>.*)$'
            timestamp:
              parse_from: attributes.time
              layout: '%Y-%m-%d %H:%M:%S'
            severity:
              parse_from: attributes.sev
# ...
Copy to Clipboard Toggle word wrap

1
読み取り対象のファイルパスにマッチするファイル glob パターンのリスト。
2
演算子の配列。各演算子は、タイムスタンプや JSON の解析などの単純なタスクを実行します。必要な形式へのログインを処理するには、演算子をチェーンします。

このレシーバーを使用して、次の 2 つの方法のいずれかで Pod ファイルシステムからログを収集できます。

  • アプリケーション Pod と一緒に実行されるサイドカーコンテナーでレシーバーを設定します。
  • Kubernetes ログにアクセスするための適切なパーミッションを持つホストマシンにレシーバーを DaemonSet としてデプロイ。

アプリケーションコンテナーからログを収集するには、サイドカーインジェクションでこのレシーバーを使用できます。Red Hat build of OpenTelemetry Operator を使用すると、OpenTelemetry Collector をサイドカーコンテナーとしてアプリケーション Pod に挿入できます。このアプローチは、アプリケーションがコンテナーファイルシステム内のファイルにログを書き込む場合に便利です。次に、このレシーバーはログファイルを調整し、演算子を適用してログを解析できます。

このレシーバーをサイドカーモードで使用してアプリケーションコンテナーからログを収集するには、OpenTelemetryCollector カスタムリソースでボリュームマウントを設定する必要があります。アプリケーションコンテナーとサイドカー Collector の両方が、emptyDir などの同じ共有ボリュームをマウントする必要があります。アプリケーションの Pod 仕様でボリュームを定義します。以下の例を参照してください。

サイドカーモードで設定された Filelog Receiver が含まれる OpenTelemetry Collector カスタムリソース

apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: filelog
  namespace: otel-logging
spec:
  mode: sidecar
  volumeMounts: 
1

  - name: logs
    mountPath: /var/log/app
  config:
    receivers:
      filelog:
        include: 
2

        - /var/log/app/*.log
        operators:
        - type: regex_parser
          regex: '^(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}) \[(?P<level>\w+)\] (?P<message>.*)$'
          timestamp:
            parse_from: attributes.timestamp
            layout: '%Y-%m-%d %H:%M:%S'
    processors: {}
    exporters:
      debug:
        verbosity: detailed
    service:
      pipelines:
        logs:
          receivers: [filelog]
          processors: []
          exporters: [debug]
Copy to Clipboard Toggle word wrap

1
サイドカーコレクターがターゲットログファイルにアクセスするために使用するボリュームマウントを定義します。このボリュームは、アプリケーションのデプロイメントで定義されたボリューム名と一致する必要があります。
2
ログファイルを調整するためのファイル glob パターンを指定します。このレシーバーは、これらのパスに新しいログエントリーの有無を監視します。

2.13. Journald Receiver

Journald Receiver は、systemd ジャーナルから journald イベントを解析し、ログとして送信します。

重要

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

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

Journald Receiver が有効になっている OpenTelemetry Collector カスタムリソース

apiVersion: v1
kind: Namespace
metadata:
  name: otel-journald
  labels:
    security.openshift.io/scc.podSecurityLabelSync: "false"
    pod-security.kubernetes.io/enforce: "privileged"
    pod-security.kubernetes.io/audit: "privileged"
    pod-security.kubernetes.io/warn: "privileged"
# ...
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: privileged-sa
  namespace: otel-journald
# ...
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: otel-journald-binding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: system:openshift:scc:privileged
subjects:
- kind: ServiceAccount
  name: privileged-sa
  namespace: otel-journald
# ...
---
apiVersion: opentelemetry.io/v1beta1
kind: OpenTelemetryCollector
metadata:
  name: otel-journald-logs
  namespace: otel-journald
spec:
  mode: daemonset
  serviceAccount: privileged-sa
  securityContext:
    allowPrivilegeEscalation: false
    capabilities:
      drop:
      - CHOWN
      - DAC_OVERRIDE
      - FOWNER
      - FSETID
      - KILL
      - NET_BIND_SERVICE
      - SETGID
      - SETPCAP
      - SETUID
    readOnlyRootFilesystem: true
    seLinuxOptions:
      type: spc_t
    seccompProfile:
      type: RuntimeDefault
  config:
    receivers:
      journald:
        files: /var/log/journal/*/*
        priority: info 
1

        units: 
2

          - kubelet
          - crio
          - init.scope
          - dnsmasq
        all: true 
3

        retry_on_failure:
          enabled: true 
4

          initial_interval: 1s 
5

          max_interval: 30s 
6

          max_elapsed_time: 5m 
7

    processors:
    exporters:
      debug: {}
    service:
      pipelines:
        logs:
          receivers: [journald]
          exporters: [debug]
  volumeMounts:
  - name: journal-logs
    mountPath: /var/log/journal/
    readOnly: true
  volumes:
  - name: journal-logs
    hostPath:
      path: /var/log/journal
  tolerations:
  - key: node-role.kubernetes.io/master
    operator: Exists
    effect: NoSchedule
# ...
Copy to Clipboard Toggle word wrap

1
メッセージの優先度または優先度の範囲で出力をフィルタリングします。デフォルト値は info です。
2
エントリーの読み取り元のユニットをリストします。空の場合、すべてのユニットからエントリーが読み取られます。
3
非常に長いログや出力できない文字を含むログを含めます。デフォルト値は false です。
4
true に設定すると、ダウンストリームのコンポーネントからエラーが発生した場合に、レシーバーがファイルの読み取りを一時停止し、現在のログのバッチを再送信しようとします。デフォルト値は false です。
5
最初の失敗から再試行するまで待機する時間の間隔。デフォルト値は 1s です。単位は mssmh です。
6
再試行バックオフ間隔の上限。この値に達すると、その後の再試行間の間隔がこの値で一定に保たれます。デフォルト値は 30s です。サポートされている単位は mssmh です。
7
ログバッチをダウンストリームのコンシューマーに送信する試行の最大時間間隔 (再試行を含む)。この値に達すると、データが破棄されます。設定値が 0 の場合、再試行が停止しません。デフォルト値は 5m です。サポートされている単位は mssmh です。

2.14. Kubernetes Events Receiver

Kubernetes Events Receiver は、Kubernetes API サーバーからイベントを収集します。収集されたイベントはログに変換されます。

重要

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

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

Kubernetes Events Receiver に必要な OpenShift Container Platform の権限

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: otel-collector
  labels:
    app: otel-collector
rules:
- apiGroups:
  - ""
  resources:
  - events
  - namespaces
  - namespaces/status
  - nodes
  - nodes/spec
  - pods
  - pods/status
  - replicationcontrollers
  - replicationcontrollers/status
  - resourcequotas
  - services
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - apps
  resources:
  - daemonsets
  - deployments
  - replicasets
  - statefulsets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - extensions
  resources:
  - daemonsets
  - deployments
  - replicasets
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - batch
  resources:
  - jobs
  - cronjobs
  verbs:
  - get
  - list
  - watch
- apiGroups:
    - autoscaling
  resources:
    - horizontalpodautoscalers
  verbs:
    - get
    - list
    - watch
# ...
Copy to Clipboard Toggle word wrap

Kubernetes Event Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  serviceAccount: otel-collector 
1

  config:
    receivers:
      k8s_events:
        namespaces: [project1, project2] 
2

    service:
      pipelines:
        logs:
          receivers: [k8s_events]
# ...
Copy to Clipboard Toggle word wrap

1
必要な ClusterRole otel-collector RBAC を持つ Collector のサービスアカウント。
2
イベントを収集する namespace のリスト。デフォルト値は空です。その場合、すべての namespace が収集されます。

2.15. Prometheus Remote Write Receiver

Prometheus Remote Write Receiver は、Remote Write プロトコルを使用して Prometheus からメトリクスを受信し、それらを OpenTelemetry 形式に変換します。このレシーバーは Prometheus Remote Write v2 プロトコルのみをサポートします。

重要

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

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

Prometheus Remote Write Receiver が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      prometheusremotewrite:
        endpoint: 0.0.0.0:9090 
1

    # ...
    service:
      pipelines:
        metrics:
          receivers: [prometheusremotewrite]
# ...
Copy to Clipboard Toggle word wrap

1
受信側が Prometheus リモート書き込み要求をリッスンするエンドポイント。

以下は、Prometheus でこのレシーバーを使用するための前提条件です。

  • Prometheus は、メタデータ WAL レコード機能フラグを有効にして開始されます。
  • Prometheus リモート書き込み v2 プロトコル が Prometheus リモート書き込み設定で有効になっている。
  • ネイティブヒストグラムは、機能フラグを使用して Prometheus で有効になります。
  • Prometheus は、従来のヒストグラムをネイティブのヒストグラムに変換するように設定されています。

これらの Prometheus 機能の有効化についての詳細は、Prometheus のドキュメント を参照してください。

第3章 プロセッサー

プロセッサーは、データを受信してからエクスポートするまでにデータを処理します。プロセッサーはオプションです。デフォルトでは、プロセッサーは有効になっていません。プロセッサーは、すべてのデータソースに対して有効にする必要があります。すべてのプロセッサーがすべてのデータソースをサポートするわけではありません。データソースによっては、複数のプロセッサーが有効になっている可能性があります。プロセッサーの順序が重要であることに注意してください。

現在、Red Hat build of OpenTelemetry では、次の一般提供およびテクノロジープレビューのプロセッサーが利用可能です。

3.1. Batch Processor

Batch Processor は、トレースとメトリクスをバッチ処理して、テレメトリー情報を転送するために必要な送信接続の数を減らします。

Batch Processor を使用する場合の OpenTelemetry Collector カスタムリソースの例

# ...
  config:
    processors:
      batch:
        timeout: 5s
        send_batch_max_size: 10000
    service:
      pipelines:
        traces:
          processors: [batch]
        metrics:
          processors: [batch]
# ...
Copy to Clipboard Toggle word wrap

Expand
表3.1 Batch Processor で使用されるパラメーター
パラメーター説明デフォルト

timeout

バッチサイズに関係なく、特定の期間後にバッチを送信します。

200ms

send_batch_size

指定された数のスパンまたはメトリクスの後にテレメトリーデータのバッチを送信します。

8192

send_batch_max_size

バッチの最大許容サイズ。send_batch_size 以上である必要があります。

0

metadata_keys

アクティブにすると、client.Metadata で見つかった一意の値セットごとにバッチャーインスタンスが作成されます。

[]

metadata_cardinality_limit

metadata_keys を設定すると、プロセス中に処理されるメタデータのキーと値の組み合わせの数が制限されます。

1000

3.2. Memory Limiter Processor

Memory Limiter Processor は、Collector のメモリー使用量を定期的にチェックし、ソフトメモリーリミットに達したときにデータ処理を一時停止します。このプロセッサーは、トレース、メトリクス、およびログをサポートします。先行コンポーネント (通常はレシーバー) は、同じデータの送信を再試行することが想定されており、受信データにバックプレッシャーを適用する場合があります。メモリー使用量がハードリミットを超えると、Memory Limiter Processor によってガベージコレクションが強制的に実行されます。

Memory Limiter Processor を使用する場合の OpenTelemetry Collector カスタムリソースの例

# ...
  config:
    processors:
      memory_limiter:
        check_interval: 1s
        limit_mib: 4000
        spike_limit_mib: 800
    service:
      pipelines:
        traces:
          processors: [batch]
        metrics:
          processors: [batch]
# ...
Copy to Clipboard Toggle word wrap

Expand
表3.2 Memory Limiter Processor で使用されるパラメーター
パラメーター説明デフォルト

check_interval

メモリー使用量の測定間の時間。最適な値は 1s です。トラフィックが急増するパターンの場合は、check_interval を減らすか、spike_limit_mib を増やすことができます。

0s

limit_mib

ハードリミット。ヒープに割り当てられるメモリーの最大量 (MiB 単位)。通常、OpenTelemetry Collector の合計メモリー使用量は、この値より約 50 MiB 大きくなります。

0

spike_limit_mib

スパイクリミット。これは、予想されるメモリー使用量の最大スパイク (MiB 単位) です。最適な値は、limit_mib の約 20% です。ソフトリミットを計算するには、limit_mib から spike_limit_mib を減算します。

limit_mib の 20%

limit_percentage

limit_mib と同じですが、使用可能な合計メモリーのパーセンテージとして表されます。limit_mib 設定は、この設定よりも優先されます。

0

spike_limit_percentage

spike_limit_mib と同じですが、使用可能な合計メモリーのパーセンテージとして表されます。limit_percentage 設定と併用することを目的としています。

0

3.3. Resource Detection Processor

Resource Detection Processor は、OpenTelemetry のリソースセマンティック標準に合わせて、ホストリソースの詳細を識別します。このプロセッサーは、検出された情報を使用して、テレメトリーデータ内のリソース値を追加または置き換えることができます。このプロセッサーはトレースとメトリクスをサポートします。このプロセッサーは、Docket メタデータディテクターや OTEL_RESOURCE_ATTRIBUTES 環境変数ディテクターなど、複数のディテクターで使用できます。

重要

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

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

Resource Detection Processor に必要な OpenShift Container Platform の権限

kind: ClusterRole
metadata:
  name: otel-collector
rules:
- apiGroups: ["config.openshift.io"]
  resources: ["infrastructures", "infrastructures/status"]
  verbs: ["get", "watch", "list"]
# ...
Copy to Clipboard Toggle word wrap

Resource Detection Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      resourcedetection:
        detectors: [openshift]
        override: true
    service:
      pipelines:
        traces:
          processors: [resourcedetection]
        metrics:
          processors: [resourcedetection]
# ...
Copy to Clipboard Toggle word wrap

環境変数ディテクターを備えた Resource Detection Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      resourcedetection/env:
        detectors: [env] 
1

        timeout: 2s
        override: false
# ...
Copy to Clipboard Toggle word wrap

1
使用するディテクターを指定します。この例では、環境ディテクターが指定されています。

3.4. Attributes Processor

Attributes Processor は、スパン、ログ、またはメトリクスの属性を変更できます。入力データをフィルタリングして照合し、特定のアクションに対してそのようなデータを含めたり除外したりするようにこのプロセッサーを設定できます。

このプロセッサーはアクションのリストを操作し、設定で指定された順序でアクションを実行します。次のアクションがサポートされています。

Insert
指定されたキーがまだ存在しない場合は、入力データに新しい属性を挿入します。
更新
キーがすでに存在する場合は、入力データの属性を更新します。
Upsert
挿入アクションと更新アクションを組み合わせます。キーがまだ存在しない場合は、新しい属性を挿入します。キーがすでに存在する場合は属性を更新します。
Delete
入力データから属性を削除します。
Hash
既存の属性値を SHA1 としてハッシュします。
Extract
正規表現ルールを使用して、ルールで定義された入力キーからターゲットキーまでの値を抽出します。ターゲットキーがすでに存在する場合は、Span Processor の to_attributes 設定と同様に、既存の属性をソースとしてターゲットキーがオーバーライドされます。
Convert
既存の属性を指定された型に変換します。

Attributes Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      attributes/example:
        actions:
          - key: db.table
            action: delete
          - key: redacted_span
            value: true
            action: upsert
          - key: copy_key
            from_attribute: key_original
            action: update
          - key: account_id
            value: 2245
            action: insert
          - key: account_password
            action: delete
          - key: account_email
            action: hash
          - key: http.status_code
            action: convert
            converted_type: int
# ...
Copy to Clipboard Toggle word wrap

3.5. Resource Processor

Resource Processor は、リソース属性に変更を適用します。このプロセッサーは、トレース、メトリクス、およびログをサポートします。

Resource Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      attributes:
      - key: cloud.availability_zone
        value: "zone-1"
        action: upsert
      - key: k8s.cluster.name
        from_attribute: k8s-cluster
        action: insert
      - key: redundant-attribute
        action: delete
# ...
Copy to Clipboard Toggle word wrap

属性は、属性の削除、属性の挿入、または属性のアップサートなど、リソース属性に適用されるアクションを表します。

3.6. Span Processor

Span Processor は、スパン属性に基づいてスパン名を変更するか、スパン名からスパン属性を抽出します。このプロセッサーは、スパンのステータスを変更したり、スパンを追加したり除外したりすることもできます。このプロセッサーはトレースをサポートしています。

スパンの名前変更には、from_attributes 設定を使用して、新しい名前の属性を指定する必要があります。

重要

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

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

スパンの名前変更に Span Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      span:
        name:
          from_attributes: [<key1>, <key2>, ...] 
1

          separator: <value> 
2

# ...
Copy to Clipboard Toggle word wrap

1
新しいスパン名を形成するキーを定義します。
2
オプションの区切り文字。

このプロセッサーを使用して、スパン名から属性を抽出できます。

スパン名からの属性抽出に Span Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      span/to_attributes:
        name:
          to_attributes:
            rules:
              - ^\/api\/v1\/document\/(?P<documentId>.*)\/update$ 
1

# ...
Copy to Clipboard Toggle word wrap

1
このルールは、抽出の実行方法を定義します。さらにルールを定義できます。たとえば、この場合、正規表現が名前と一致すると、documentID 属性が作成されます。この例では、入力スパン名が /api/v1/document/12345678/update の場合、出力スパン名は /api/v1/document/{documentId}/update となり、新しい "documentId"="12345678" 属性がスパンに追加されます。

スパンステータスを変更できます。

ステータス変更に Span Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
      span/set_status:
        status:
          code: Error
          description: "<error_description>"
# ...
Copy to Clipboard Toggle word wrap

3.7. Kubernetes Attributes Processor

Kubernetes Attributes Processor では、Kubernetes メタデータを使用して、スパン、メトリクス、およびログリソース属性を自動的に設定できます。このプロセッサーは、トレース、メトリクス、およびログをサポートします。このプロセッサーは、Kubernetes リソースを自動的に識別し、そこからメタデータを抽出して、この抽出されたメタデータをリソース属性として関連するスパン、メトリクス、ログに組み込みます。Kubernetes API を利用してクラスター内で動作しているすべての Pod を検出し、IP アドレス、Pod UID、およびその他の関連メタデータの記録を維持します。

Kubernetes Attributes Processor に必要な最小限の OpenShift Container Platform 権限

kind: ClusterRole
metadata:
  name: otel-collector
rules:
  - apiGroups: ['']
    resources: ['pods', 'namespaces']
    verbs: ['get', 'watch', 'list']
  - apiGroups: ['apps']
    resources: ['replicasets']
    verbs: ['get', 'watch', 'list']
# ...
Copy to Clipboard Toggle word wrap

Kubernetes Attributes Processor を使用する OpenTelemetry Collector

# ...
  config:
    processors:
         k8sattributes:
             filter:
                 node_from_env_var: KUBE_NODE_NAME
# ...
Copy to Clipboard Toggle word wrap

3.8. Filter Processor

Filter Processor は、OpenTelemetry Transformation Language を活用して、テレメトリーデータを破棄する基準を確立します。これらの条件のいずれかが満たされると、テレメトリーデータは破棄されます。OR 論理演算子を使用すると、条件を組み合わせることができます。このプロセッサーは、トレース、メトリクス、およびログをサポートします。

重要

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

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

Filter Processor が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    processors:
      filter/ottl:
        error_mode: ignore 
1

        traces:
          span:
          - 'attributes["container.name"] == "app_container_1"' 
2

          - 'resource.attributes["host.name"] == "localhost"' 
3

# ...
Copy to Clipboard Toggle word wrap

1
エラーモードを定義します。ignore に設定すると、条件によって返されたエラーが無視されます。propagate に設定すると、エラーがパイプラインに返されます。エラーが発生すると、ペイロードが Collector から削除されます。
2
container.name == app_container_1 属性を持つスパンをフィルタリングします。
3
host.name == localhost リソース属性を持つスパンをフィルタリングします。

3.9. Cumulative-to-Delta Processor

Cumulative-to-Delta Processor は、モノトニックな累積合計メトリクスおよびヒストグラムメトリクスをモノトニックなデルタメトリクスに変換します。

include: または exclude: フィールドを使用し、strict メトリクス名一致または regexp メトリクス名一致を指定すると、メトリクスをフィルタリングできます。

このプロセッサーはメトリクスの前の値を保存することで差分を計算します。そのため、複数の Collector のデプロイメントではなく、1 つのステートフルな Collector インスタンスにメトリクスデータを送信するようにメトリクスソースを設定する必要があります。

このプロセッサーは、モノトニック以外の合計と指数ヒストグラムを変換しません。

重要

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

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

Cumulative-to-Delta Processor が有効になっている OpenTelemetry Collector カスタムリソースの例

# ...
mode: sidecar 
1

config:
  processors:
    cumulativetodelta:
      include: 
2

        match_type: strict 
3

        metrics: 
4

        - <metric_1_name>
        - <metric_2_name>
      exclude: 
5

        match_type: regexp
        metrics:
        - "<regular_expression_for_metric_names>"
# ...
Copy to Clipboard Toggle word wrap

1
Collector のライフサイクルをメトリクスソースに関連付けるには、累積的な時間的メトリクスを出力するアプリケーションのサイドカーとして Collector を実行できます。
2
オプション: このスタンザで、変換するメトリクスを明示的に定義することにより、プロセッサーが変換するメトリクスを制限できます。このフィールドを省略すると、プロセッサーは exclude フィールドにリストされているメトリクスを除くすべてのメトリクスを変換します。
3
metrics フィールドに指定した値を、strict パラメーターを使用して完全一致として定義するか、regex パラメーターを使用して正規表現として定義します。
4
変換するメトリクスの名前をリストします。プロセッサーは、完全一致または正規表現のマッチを変換します。メトリクスが include フィルターと exclude フィルターの両方に一致する場合、exclude フィルターが優先されます。
5
オプション: ここでメトリクスを明示的に定義することで、特定のメトリクスを変換から除外できます。

3.10. Group-by-Attributes Processor

Group-by-Attributes Processor は、同じ属性を共有するすべてのスパン、ログレコード、メトリクスデータポイントを、その属性に一致するリソースに再割り当てすることでグループ化します。

重要

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

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

少なくとも、このプロセッサーを設定するには、次の例のように、スパン、ログレコード、またはメトリクスデータポイントをグループ化するために使用する属性キーの配列を指定する必要があります。

Group-by-Attributes Processor を使用する場合の OpenTelemetry Collector カスタムリソースの例

# ...
  config:
    processors:
      groupbyattrs:
        keys: 
1

          - <key1> 
2

          - <key2>
# ...
Copy to Clipboard Toggle word wrap

1
グループ化する属性キーを指定します。
2
処理対象のスパン、ログレコード、またはメトリクスデータポイントに、指定の属性キーが 1 つ以上含まれている場合、そのスパン、ログレコード、またはデータポイントが、同じ属性の値を共有するリソースに再割り当てされます。そのようなリソースが存在しない場合は、新しいリソースが作成されます。処理対象のスパン、ログレコード、またはメトリクスデータポイントに指定の属性キーが存在しない場合は、現在のリソースに関連付けられたままになります。同じリソースの複数のインスタンスがまとめられます。

3.11. Transform Processor

Transform Processor を使用すると、指定したルールに基づいて、OpenTelemetry Transformation Language (OTTL) でテレメトリーデータを変更できます。このプロセッサーは、シグナルタイプごとに、特定の OTTL コンテキストタイプに関連付けられた一連の条件とステートメントを処理し、設定で指定されたとおりに、受信したテレメトリーデータに対して条件とステートメントを順番に実行します。各条件とステートメントで、さまざまな関数を使用してテレメトリーデータにアクセスおよび変更できます。そのため、条件を使用して関数を実行するかどうかを決定できます。

ステートメントは、すべて OTTL で記述します。さまざまなシグナル、トレース、メトリクス、ログに対して複数のコンテキストステートメントを設定できます。context タイプの値で、関連するステートメントを解釈するときにプロセッサーが使用する必要がある OTTL コンテキストを指定します。

重要

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

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

設定の概要

# ...
config:
    processors:
      transform:
        error_mode: ignore 
1

        <trace|metric|log>_statements: 
2

          - context: <string> 
3

            conditions:  
4

              - <string>
              - <string>
            statements: 
5

              - <string>
              - <string>
              - <string>
          - context: <string>
            statements:
              - <string>
              - <string>
              - <string>
# ...
Copy to Clipboard Toggle word wrap

1
オプション: 次の表「オプションの error_mode フィールドの値」を参照してください。
2
変換するシグナルを指定します。
3
次の表「context フィールドの値」を参照してください。
4
オプション: 変換を実行するための条件。

Transform Processor を使用する場合の OpenTelemetry Collector カスタムリソースの例

# ...
  config:
    transform:
      error_mode: ignore
      trace_statements: 
1

        - context: resource
          statements:
            - keep_keys(attributes, ["service.name", "service.namespace", "cloud.region", "process.command_line"]) 
2

            - replace_pattern(attributes["process.command_line"], "password\\=[^\\s]*(\\s?)", "password=***") 
3

            - limit(attributes, 100, [])
            - truncate_all(attributes, 4096)
        - context: span 
4

          statements:
            - set(status.code, 1) where attributes["http.path"] == "/health"
            - set(name, attributes["http.route"])
            - replace_match(attributes["http.target"], "/user/*/list/*", "/user/{userId}/list/{listId}")
            - limit(attributes, 100, [])
            - truncate_all(attributes, 4096)
# ...
Copy to Clipboard Toggle word wrap

1
トレースシグナルを変換します。
2
リソースのキーを保持します。
3
属性を置き換え、パスワードフィールド内の文字列をアスタリスクに置き換えます。
4
スパンレベルで変換を実行します。
Expand
表3.3 context フィールドの値
シグナルステートメント有効なコンテキスト

trace_statements

resourcescopespanspanevent

metric_statements

resourcescopemetricdatapoint

log_statements

resourcescopelog

Expand
表3.4 オプションの error_mode フィールドの値
説明

ignore

ステートメントによって返されたエラーを無視してログに記録し、次のステートメントに進みます。

silent

ステートメントによって返されたエラーを無視してログに記録せず、次のステートメントに進みます。

propagate

パイプラインにエラーを返し、ペイロードをドロップします。暗黙のデフォルト設定です。

3.12. Tail Sampling Processor

Tail Sampling Processor は、すべてのスパンの完了時に、ユーザー定義のポリシーに従ってトレースをサンプリングします。テールベースのサンプリングを使用すると、関心のあるトレースをフィルタリングし、データの取り込みと保存のコストを削減できます。

重要

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

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

このプロセッサーは、スパンを新しいバッチに再構成し、スパンから元のコンテキストを削除します。

ヒント
  • このプロセッサーは、パイプラインにおいて、コンテキストに依存するプロセッサーの下流に配置してください。たとえば、Kubernetes Attributes Processor の後に配置します。
  • Collector をスケーリングする場合は、指定されたサンプリングポリシーに基づいてこのプロセッサーがサンプリングに関する決定を正しく行えるように、1 つの Collector インスタンスが同じトレースのすべてのスパンを受信するようにしてください。これを実現するには、2 つの Collector レイヤーをセットアップします。1 つ目の Collector レイヤーには Load Balancing Exporter を設定し、2 つ目の Collector レイヤーには Tail Sampling Processor を設定します。

Tail Sampling Processor を使用する場合の OpenTelemetry Collector カスタムリソースの例

# ...
config:
  processors:
    tail_sampling: 
1

      decision_wait: 30s 
2

      num_traces: 50000 
3

      expected_new_traces_per_sec: 10 
4

      policies: 
5

        [
          {
            <definition_of_policy_1>
          },
          {
            <definition_of_policy_2>
          },
          {
            <definition_of_policy_3>
          },
        ]
# ...
Copy to Clipboard Toggle word wrap

1
プロセッサー名。
2
オプション: 最初のスパンの時間から数えた、プロセッサーが各トレースのサンプリングに関する決定を行うまでの決定遅延時間。デフォルトは 30s です。
3
オプション: メモリーに保持されるトレースの数。デフォルトは 50000 です。
4
オプション: 予想される 1 秒あたりの新しいトレースの数。これは、データ構造の割り当てに役立ちます。デフォルトは 0 です。
5
トレース評価用のポリシーの定義。プロセッサーは、指定されたすべてのポリシーに照らして各トレースを評価し、トレースをサンプリングするかドロップします。

次のリストからポリシーを選択して組み合わせることができます。

  • 次のポリシーはすべてのトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <always_sample_policy>,
                type: always_sample,
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 次のポリシーは、指定された範囲内の期間のトレースのみをサンプリングします。

    # ...
          policies:
            [
              {
                name: <latency_policy>,
                type: latency,
                latency: {threshold_ms: 5000, upper_threshold_ms: 10000} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    指定されている 5000 および 10000 という値は例です。最も早い開始時刻の値と最も遅い終了時刻の値を確認することで、必要なレイテンシーの値を推定できます。upper_threshold_ms フィールドを省略すると、このポリシーは指定された threshold_ms 値を超えるすべてのレイテンシーをサンプリングします。
  • 次のポリシーは、リソースおよびレコード属性の数値のマッチによってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <numeric_attribute_policy>,
                type: numeric_attribute,
                numeric_attribute: {key: <key1>, min_value: 50, max_value: 100} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    指定されている 50 および 100 という値は例です。
  • 次のポリシーは、トレースの一部のみをサンプリングします。

    # ...
          policies:
            [
              {
                name: <probabilistic_policy>,
                type: probabilistic,
                probabilistic: {sampling_percentage: 10} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    指定されている 10 という値は例です。
  • 次のポリシーは、ステータスコード (OKERROR、または UNSET) 別にトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <status_code_policy>,
                type: status_code,
                status_code: {status_codes: [ERROR, UNSET]}
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 次のポリシーは、リソースおよびレコード属性の文字列値のマッチによってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <string_attribute_policy>,
                type: string_attribute,
                string_attribute: {key: <key2>, values: [<value1>, <val>*], enabled_regex_matching: true, cache_max_size: 10} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    このポリシー定義は、完全一致と正規表現による値のマッチングの両方をサポートしています。cache_max_size フィールドに指定されている 10 という値は例です。
  • 次のポリシーは、1 秒あたりのスパン数のレートによってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <rate_limiting_policy>,
                type: rate_limiting,
                rate_limiting: {spans_per_second: 35} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    指定されている 35 という値は例です。
  • 次のポリシーは、スパンの最小数と最大数 (両端の値を含む) によってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <span_count_policy>,
                type: span_count,
                span_count: {min_spans: 2, max_spans: 20} 
    1
    
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    トレース内の全スパンの合計がしきい値の範囲外である場合、トレースはサンプリングされません。指定されている 2 および 20 という値は例です。
  • 次のポリシーは、TraceState 値のマッチによってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <trace_state_policy>,
                type: trace_state,
                trace_state: { key: <key3>, values: [<value1>, <value2>] }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 次のポリシーは、ブール属性 (リソースとレコード) によってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <bool_attribute_policy>,
                type: boolean_attribute,
                boolean_attribute: {key: <key4>, value: true}
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 次のポリシーは、スパンまたはスパンイベントの特定の OTTL ブール条件によってトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <ottl_policy>,
                type: ottl_condition,
                ottl_condition: {
                  error_mode: ignore,
                  span: [
                    "attributes[\"<test_attr_key_1>\"] == \"<test_attr_value_1>\"",
                    "attributes[\"<test_attr_key_2>\"] != \"<test_attr_value_1>\"",
                  ],
                  spanevent: [
                    "name != \"<test_span_event_name>\"",
                    "attributes[\"<test_event_attr_key_2>\"] != \"<test_event_attr_value_1>\"",
                  ]
                }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 次のポリシーは、複数のポリシーの組み合わせに基づいてトレースをサンプリングする AND ポリシーです。

    # ...
          policies:
            [
              {
                name: <and_policy>,
                type: and,
                and: {
                  and_sub_policy:
                  [
                    {
                      name: <and_policy_1>,
                      type: numeric_attribute,
                      numeric_attribute: { key: <key1>, min_value: 50, max_value: 100 } 
    1
    
                    },
                    {
                      name: <and_policy_2>,
                      type: string_attribute,
                      string_attribute: { key: <key2>, values: [ <value1>, <value2> ] }
                    },
                  ]
                }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1
    指定されている 50 および 100 という値は例です。
  • 次のポリシーは、複数のポリシーの組み合わせに基づいてサンプリングからトレースをドロップする DROP ポリシーです。

    # ...
          policies:
            [
              {
                name: <drop_policy>,
                type: drop,
                drop: {
                  drop_sub_policy:
                  [
                    {
                      name: <drop_policy_1>,
                      type: string_attribute,
                      string_attribute: {key: url.path, values: [\/health, \/metrics], enabled_regex_matching: true}
                    }
                  ]
                }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
  • 次のポリシーは、上記のサンプラーを組み合わせて、順序付けとサンプラーごとのレート割り当てを使用してトレースをサンプリングします。

    # ...
          policies:
            [
              {
                name: <composite_policy>,
                type: composite,
                composite:
                  {
                    max_total_spans_per_second: 100, 
    1
    
                    policy_order: [<composite_policy_1>, <composite_policy_2>, <composite_policy_3>],
                    composite_sub_policy:
                      [
                        {
                          name: <composite_policy_1>,
                          type: numeric_attribute,
                          numeric_attribute: {key: <key1>, min_value: 50}
                        },
                        {
                          name: <composite_policy_2>,
                          type: string_attribute,
                          string_attribute: {key: <key2>, values: [<value1>, <value2>]}
                        },
                        {
                          name: <composite_policy_3>,
                          type: always_sample
                        }
                      ],
                      rate_allocation:
                      [
                        {
                          policy: <composite_policy_1>,
                          percent: 50 
    2
    
                        },
                        {
                          policy: <composite_policy_2>,
                          percent: 25
                        }
                      ]
                  }
              },
            ]
    # ...
    Copy to Clipboard Toggle word wrap
    1 2
    適用されるポリシーの順序に従ってスパンの割合を割り当てます。たとえば、max_total_spans_per_second フィールドに 100 という値を設定した場合、rate_allocation セクションで次のように値を設定できます。policy: <composite_policy_1> セクションで、50 パーセントの値を設定して 1 秒あたり 50 スパンを割り当てます。policy: <composite_policy_2> セクションで、25 パーセントの値を設定して 1 秒あたり 25 スパンを割り当てます。残りの容量を埋めるには、name: <composite_policy_3> セクションの type フィールドに always_sample 値を設定できます。

3.13. Probabilistic Sampling Processor

大量のテレメトリーデータを処理し、処理するデータ量を減らすことでコストを削減したい場合は、Tail Sampling Processor の代わりに Probabilistic Sampling Processor を使用できます。

重要

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

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

プロセッサーは、指定された割合のトレース範囲またはログレコードをステートレスに、そしてリクエストごとにサンプリングします。

プロセッサーは、使用された有効サンプリング確率に関する情報をテレメトリーデータに追加します。

  • トレーススパンでは、プロセッサーは、しきい値とオプションのランダム性情報を W3C Trace Context tracestate フィールドにエンコードします。
  • ログレコードでは、プロセッサーはしきい値とランダム性の情報を属性としてエンコードします。

以下は、トレース範囲をサンプリングするための Probabilistic Sampling Processor の OpenTelemetryCollector カスタムリソース設定の例です。

# ...
  config:
    processors:
      probabilistic_sampler: 
1

        sampling_percentage: 15.3 
2

        mode: "proportional" 
3

        hash_seed: 22 
4

        sampling_precision: 14 
5

        fail_closed: true 
6

# ...
service:
  pipelines:
    traces:
      processors: [probabilistic_sampler]
# ...
Copy to Clipboard Toggle word wrap
1
トレースパイプラインの場合、ランダム性のソースとなるのは、スパントレース ID のハッシュ値です。
2
必須。スパンをサンプリングする割合を、32 ビット浮動小数点数のパーセンテージ値で受け入れます。
3
任意。サンプリングロジックのモードにサポートされている文字列値 (デフォルトは hash_seedproportional、または equalizing) を受け入れます。hash_seed モードは、トレース ID に Fowler–Noll–Vo (FNV) ハッシュ関数を適用し、そのハッシュ値をサンプリングのパーセンテージ値と比較します。トレース ID 以外のテレメトリー単位で hash_seed モードを使用することもできます。proportional モードでは、総スパン量の厳密な確率ベースの比率がサンプリングされ、OpenTelemetry および World Wide Web Consortium の仕様に基づいています。equalizing モードは、パイプライン全体でサンプリング確率を最小値に下げたり、クライアント SDK にさまざまなサンプリング設定がある Collector デプロイメントで均一なサンプリング確率を適用したりする際に役立ちます。
4
任意。ハッシュアルゴリズムの計算に使用される 32 ビットの符号なし整数を受け入れます。このフィールドが設定されていない場合、デフォルトのシード値は 0 です。複数の層の Collector インスタンスを使用する場合は、同じ層のすべての Collector を同じシード値に設定する必要があります。
5
任意。サンプリングしきい値をエンコードするために使用される 16 進数の桁数を決定します。整数値を受け入れます。サポートされる値は 1-14 です。デフォルト値 4 では、しきい値に 16 を超える有効ビットが含まれる場合、つまり 56 ビットを使用する proportional モードの場合、しきい値は丸められます。proportional モードを選択した場合は、前のサンプラーによって適用された精度を維持するために、より大きな値を使用します。
6
任意。サンプリングエラーのあるスパンを拒否します。ブール値を受け入れます。デフォルト値は true です。

以下は、ログレコードをサンプリングするための Probabilistic Sampling Processor の OpenTelemetryCollector カスタムリソース設定の例です。

# ...
  config:
    processors:
      probabilistic_sampler/logs:
        sampling_percentage: 15.3 
1

        mode: "hash_seed" 
2

        hash_seed: 22 
3

        sampling_precision: 4 
4

        attribute_source: "record" 
5

        from_attribute: "<log_record_attribute_name>" 
6

        fail_closed: true 
7

# ...
service:
  pipelines:
    logs:
      processors: [ probabilistic_sampler/logs ]
# ...
Copy to Clipboard Toggle word wrap
1
必須。スパンをサンプリングする割合を、32 ビット浮動小数点数のパーセンテージ値で受け入れます。
2
任意。サンプリングロジックモードにサポートされている文字列値 (デフォルトは hash_seedequalizing、または proportional) を受け入れます。hash_seed モードは、トレース ID または指定されたログレコードの属性に Fowler–Noll–Vo (FNV) ハッシュ関数を適用し、そのハッシュ値をサンプリングのパーセンテージ値と比較します。また、hash_seed モードは、トレース ID 以外のテレメトリー単位で使用することもできます。たとえば、service.instance.id リソース属性を使用して、一定の割合の Pod からログレコードを収集できます。equalizing モードは、パイプライン全体でサンプリング確率を最小値に下げたり、クライアント SDK にさまざまなサンプリング設定がある Collector デプロイメントで均一なサンプリング確率を適用したりする際に役立ちます。proportional モードでは、総スパン量の厳密な確率ベースの比率がサンプリングされ、OpenTelemetry および World Wide Web Consortium の仕様に基づいています。
3
任意。ハッシュアルゴリズムの計算に使用される 32 ビットの符号なし整数を受け入れます。このフィールドが設定されていない場合、デフォルトのシード値は 0 です。複数の層の Collector インスタンスを使用する場合は、同じ層のすべての Collector を同じシード値に設定する必要があります。
4
任意。サンプリングしきい値をエンコードするために使用される 16 進数の桁数を決定します。整数値を受け入れます。サポートされる値は 1-14 です。デフォルト値 4 では、しきい値に 16 を超える有効ビットが含まれる場合、つまり 56 ビットを使用する proportional モードの場合、しきい値は丸められます。proportional モードを選択した場合は、前のサンプラーによって適用された精度を維持するために、より大きな値を使用します。
5
任意。from_attribute でログレコード属性を検索する場所を定義します。ログレコード属性はランダム性のソースとして使用されます。デフォルトの traceID 値または record 値を受け入れます。
6
任意。一意のログレコード ID など、サンプリングハッシュの計算に使用されるログレコード属性の名前。文字列値を受け入れます。デフォルト値は "" です。このフィールドは、トレース ID が存在しないか、トレース ID サンプリングが無効になっているか、attribute_source フィールドが record 値に設定されている状況で、ランダム性のソースとしてログレコード属性を指定する必要がある場合にのみ使用してください。
7
任意。サンプリングエラーのあるスパンを拒否します。ブール値を受け入れます。デフォルト値は true です。

第4章 エクスポーター

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

現在、Red Hat build of OpenTelemetry では、次の一般提供およびテクノロジープレビューのエクスポーターが利用可能です。

4.1. OTLP Exporter

OTLP gRPC Exporter は、OpenTelemetry Protocol (OTLP) を使用してトレースとメトリクスをエクスポートします。

OTLP Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      otlp:
        endpoint: tempo-ingester:4317 
1

        tls: 
2

          ca_file: ca.pem
          cert_file: cert.pem
          key_file: key.pem
          insecure: false 
3

          insecure_skip_verify: false # 
4

          reload_interval: 1h 
5

          server_name_override: <name> 
6

        headers: 
7

          X-Scope-OrgID: "dev"
    service:
      pipelines:
        traces:
          exporters: [otlp]
        metrics:
          exporters: [otlp]
# ...
Copy to Clipboard Toggle word wrap

1
OTLP gRPC エンドポイント。https:// スキームが使用される場合、クライアントトランスポートセキュリティーが有効になり、tlsinsecure 設定をオーバーライドします。
2
クライアント側の TLS 設定。TLS 証明書へのパスを定義します。
3
true に設定すると、クライアントトランスポートセキュリティーは無効になります。デフォルト値は false です。
4
true に設定されている場合、証明書の検証は省略します。デフォルト値は false です。
5
証明書をリロードする間隔を指定します。この値が設定されていない場合、証明書はリロードされません。reload_interval は、nsus または µsmssmh などの有効な時間単位を含む文字列を受け入れます。
6
要求の authority ヘッダーフィールドなど、認証局の仮想ホスト名をオーバーライドします。これをテストに使用できます。
7
ヘッダーは、接続が確立されている間に実行されるすべての要求に対して送信されます。

4.2. OTLP HTTP Exporter

OTLP HTTP Exporter は、OpenTelemetry プロトコル (OTLP) を使用してトレースとメトリクスをエクスポートします。

OTLP Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      otlphttp:
        endpoint: http://tempo-ingester:4318 
1

        tls: 
2

        headers: 
3

          X-Scope-OrgID: "dev"
        disable_keep_alives: false 
4


    service:
      pipelines:
        traces:
          exporters: [otlphttp]
        metrics:
          exporters: [otlphttp]
# ...
Copy to Clipboard Toggle word wrap

1
OTLP HTTP エンドポイント。https:// スキームが使用される場合、クライアントトランスポートセキュリティーが有効になり、tlsinsecure 設定をオーバーライドします。
2
クライアント側の TLS 設定。TLS 証明書へのパスを定義します。
3
ヘッダーは、すべての HTTP 要求で送信されます。
4
true の場合、HTTP keep-alives を無効にします。単一の HTTP リクエストに対してのみ、サーバーへの接続を使用します。

4.3. Debug Exporter

デバッグエクスポーターは、トレースとメトリクスを標準出力に出力します。

Debug Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      debug:
        verbosity: detailed 
1

        sampling_initial: 5 
2

        sampling_thereafter: 200 
3

        use_internal_logger: true 
4

    service:
      pipelines:
        traces:
          exporters: [debug]
        metrics:
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
デバッグエクスポートの詳細度: detailednormal、または basicdetailed に設定すると、パイプラインデータの詳細がログに記録されます。デフォルトは normal です。
2
1 秒あたりに記録されるメッセージの初期数。デフォルト値は、1 秒あたり 2 メッセージです。
3
初期のメッセージ数 (sampling_initial の値) が記録された後のサンプリングレート。デフォルト値は 1 で、デフォルトで無効になっています。この値が 1 より大きい場合、サンプリングは有効です。詳細は、Go プロジェクトの Web サイトにある zapcore パッケージの sampler 関数 のページを参照してください。
4
true に設定すると、エクスポーターの Collector の内部ロガーから出力できるようになります。

4.4. Load Balancing Exporter

Load Balancing Exporter は、routing_key 設定に従って、スパン、メトリクス、およびログを一貫してエクスポートします。

重要

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

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

Load Balancing Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      loadbalancing:
        routing_key: "service" 
1

        protocol:
          otlp: 
2

            timeout: 1s
        resolver: 
3

          static: 
4

            hostnames:
            - backend-1:4317
            - backend-2:4317
          dns: 
5

            hostname: otelcol-headless.observability.svc.cluster.local
          k8s: 
6

            service: lb-svc.kube-public
            ports:
              - 15317
              - 16317
# ...
Copy to Clipboard Toggle word wrap

1
routing_key: service は、正確な集計を提供するために、同じサービス名のスパンを同じ Collector インスタンスにエクスポートします。routing_key: traceID は、traceID に基づいてスパンをエクスポートします。暗黙のデフォルトは、traceID ベースのルーティングです。
2
サポートされている負荷分散プロトコルは、OTLP だけです。OTLP Exporter のオプションはすべてサポートされています。
3
設定できるリゾルバーは 1 つだけです。
4
静的リゾルバーは、リストされたエンドポイント全体に負荷を分散します。
5
DNS リゾルバーは、Kubernetes ヘッドレスサービスでのみ使用できます。
6
Kubernetes リゾルバーが推奨されます。

4.5. Prometheus Exporter

Prometheus Exporter は、Prometheus または OpenMetrics 形式でメトリクスをエクスポートします。

重要

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

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

Prometheus Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      prometheus:
        endpoint: 0.0.0.0:8889 
1

        tls: 
2

          ca_file: ca.pem
          cert_file: cert.pem
          key_file: key.pem
        namespace: prefix 
3

        const_labels: 
4

          label1: value1
        enable_open_metrics: true 
5

        resource_to_telemetry_conversion: 
6

          enabled: true
        metric_expiration: 180m 
7

        add_metric_suffixes: false 
8

    service:
      pipelines:
        metrics:
          exporters: [prometheus]
# ...
Copy to Clipboard Toggle word wrap

1
メトリクスが公開されるネットワークエンドポイント。Red Hat build of OpenTelemetry Operator は、endpoint フィールドで指定されたポートを <instance_name>-collector サービスに自動的に公開します。
2
サーバー側の TLS 設定。TLS 証明書へのパスを定義します。
3
設定されている場合は、提供された値でメトリクスをエクスポートします。
4
エクスポートされたすべてのメトリクスに適用されるキーと値のペアのラベル。
5
true の場合、メトリクスは OpenMetrics 形式を使用してエクスポートされます。エグザンプラーは、OpenMetrics 形式で、ヒストグラムメトリクスおよびモノトニックな合計メトリクス (counter など) に対してのみエクスポートされます。デフォルトでは無効になっています。
6
enabledtrue の場合、すべてのリソース属性はメトリクスラベルに変換されます。デフォルトでは無効になっています。
7
更新なしでメトリクスが公開される期間を定義します。デフォルトは 5m です。
8
メトリクスの型と単位の接尾辞を追加します。Jaeger コンソールの監視タブが有効になっている場合は、無効にする必要があります。デフォルトは true です。
注記

OpenTelemetryCollector カスタムリソース (CR) の spec.observability.metrics.enableMetrics フィールドが true に設定されている場合、OpenTelemetryCollector CR は Prometheus ServiceMonitor または PodMonitor CR を自動的に作成し、Prometheus がメトリクスをスクレイピングできるようにします。

4.6. Prometheus Remote Write Exporter

Prometheus Remote Write Exporter は、互換性のあるバックエンドにメトリクスをエクスポートします。

重要

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

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

Prometheus Remote Write Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      prometheusremotewrite:
        endpoint: "https://my-prometheus:7900/api/v1/push" 
1

        tls: 
2

          ca_file: ca.pem
          cert_file: cert.pem
          key_file: key.pem
        target_info: true 
3

        export_created_metric: true 
4

        max_batch_size_bytes: 3000000 
5

    service:
      pipelines:
        metrics:
          exporters: [prometheusremotewrite]
# ...
Copy to Clipboard Toggle word wrap

1
メトリクスを送信するためのエンドポイント。
2
サーバー側の TLS 設定。TLS 証明書へのパスを定義します。
3
true に設定すると、各リソースメトリクスに対して target_info メトリクスが作成されます。
4
true に設定すると、Summary、Histogram、および Monotonic Sum メトリクスポイントの _created メトリクスがエクスポートされます。
5
リモート書き込みエンドポイントに送信するサンプルバッチの最大サイズ。この値を超えるとバッチ分割が行われます。デフォルト値は 3000000 です。これは約 2.861 メガバイトです。
警告
  • このエクスポーターは、非累積モノトニックメトリクス、ヒストグラムメトリクス、およびサマリー OTLP メトリクスをドロップします。
  • リモートの Prometheus インスタンスで、--web.enable-remote-write-receiver 機能フラグを有効にする必要があります。有効にしないと、このエクスポーターを使用してメトリクスをインスタンスにプッシュすることができません。

4.7. Kafka Exporter

Kafka Exporter は、ログ、メトリクス、およびトレースを Kafka にエクスポートします。このエクスポーターは、メッセージをブロックしてバッチ処理しない同期プロデューサーを使用します。スループットと回復力を高めるには、バッチ再試行プロセッサーおよびキュー再試行プロセッサーと一緒に使用する必要があります。

Kafka Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      kafka:
        brokers: ["localhost:9092"] 
1

        protocol_version: 2.0.0 
2

        topic: otlp_spans 
3

        auth:
          plain_text: 
4

            username: example
            password: example
          tls: 
5

            ca_file: ca.pem
            cert_file: cert.pem
            key_file: key.pem
            insecure: false 
6

            server_name_override: kafka.example.corp 
7

    service:
      pipelines:
        traces:
          exporters: [kafka]
# ...
Copy to Clipboard Toggle word wrap

1
Kafka ブローカーのリスト。デフォルトは localhost:9092 です。
2
Kafka プロトコルのバージョン。たとえば、2.0.0 などです。これは必須フィールドです。
3
読み取り元の Kafka トピックの名前。デフォルトは次のとおりです。トレースの場合は otlp_spans、メトリクスの場合は otlp_metrics、ログの場合は otlp_logs です。
4
プレーンテキスト認証設定。省略した場合、プレーンテキスト認証は無効になります。
5
クライアント側の TLS 設定。TLS 証明書へのパスを定義します。省略した場合、TLS 認証は無効になります。
6
サーバーの証明書チェーンとホスト名の検証を無効にします。デフォルトは false です。
7
ServerName は、仮想ホスティングをサポートするためにクライアントによって要求されたサーバーの名前を示します。

4.8. AWS CloudWatch Logs Exporter

AWS CloudWatch Logs Exporter は、ログデータを Amazon CloudWatch Logs サービスに送信し、AWS SDK for Go とデフォルトの認証情報プロバイダーチェーンを使用してリクエストに署名します。

重要

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

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

AWS CloudWatch Logs Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      awscloudwatchlogs:
        log_group_name: "<group_name_of_amazon_cloudwatch_logs>" 
1

        log_stream_name: "<log_stream_of_amazon_cloudwatch_logs>" 
2

        region: <aws_region_of_log_stream> 
3

        endpoint: <protocol><service_endpoint_of_amazon_cloudwatch_logs> 
4

        log_retention: <supported_value_in_days> 
5

        role_arn: "<iam_role>" 
6

# ...
Copy to Clipboard Toggle word wrap

1
必須。ロググループがまだ存在しない場合は、自動的に作成されます。
2
必須。ログストリームがまだ存在しない場合は、自動的に作成されます。
3
任意。デフォルトの認証情報チェーンに AWS リージョンがまだ設定されていない場合は、リージョンを指定する必要があります。
4
任意。リクエストが転送されるデフォルトの Amazon CloudWatch Logs サービスエンドポイントをオーバーライドできます。エンドポイント値の一部として、https:// などのプロトコルを含める必要があります。リージョン別のサービスエンドポイントのリストについては、Amazon CloudWatch Logs endpoints and quotas (AWS General Reference) を参照してください。
5
任意。このパラメーターを使用すると、新しい Amazon CloudWatch ロググループのログ保持ポリシーを設定できます。このパラメーターを省略するか 0 に設定すると、ログはデフォルトで期限切れになりません。保持期間 (日数) としてサポートされている値は、13571430609012015018036540054573118272192255729223288、または 3653 です。
6
任意。ログセグメントを別のアカウントにアップロードするための AWS Identity and Access Management (IAM)ロール。

4.9. AWS EMF Exporter

AWS EMF Exporter は、次の OpenTelemetry メトリクスデータポイントを AWS CloudWatch Embedded Metric Format (EMF) に変換します。

  • Int64DataPoints
  • DoubleDataPoints
  • SummaryDataPoints

EMF メトリクスは、PutLogEvents API を使用して Amazon CloudWatch Logs サービスに直接送信されます。

このエクスポーターを使用する利点の 1 つは、https://console.aws.amazon.com/cloudwatch/ にある Amazon CloudWatch コンソールでログとメトリクスを表示できることです。

重要

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

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

AWS EMF Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      awsemf:
        log_group_name: "<group_name_of_amazon_cloudwatch_logs>" 
1

        log_stream_name: "<log_stream_of_amazon_cloudwatch_logs>" 
2

        resource_to_telemetry_conversion: 
3

          enabled: true
        region: <region> 
4

        endpoint: <protocol><endpoint> 
5

        log_retention: <supported_value_in_days> 
6

        namespace: <custom_namespace> 
7

        role_arn: "<iam_role>" 
8

# ...
Copy to Clipboard Toggle word wrap

1
log_group_name パラメーターを使用して、ロググループ名をカスタマイズするか、デフォルトの /metrics/default 値または次のプレースホルダーを設定できます。

/aws/metrics/{ClusterName} プレースホルダーは、メトリクスデータ内の ClusterName または aws.ecs.cluster.name リソース属性を検索し、それを実際のクラスター名に置き換えるために使用します。

{NodeName} プレースホルダーは、NodeName または k8s.node.name リソース属性を検索するために使用します。

{TaskId} プレースホルダーは、TaskId または aws.ecs.task.id リソース属性を検索するために使用します。

リソース属性マップ内にリソース属性が見つからない場合、プレースホルダーは undefined 値に置き換えられます。

2
log_stream_name パラメーターを使用して、ログストリーム名をカスタマイズするか、デフォルトの otel-stream 値または次のプレースホルダーを設定できます。

{ClusterName} プレースホルダーは、ClusterName または aws.ecs.cluster.name リソース属性を検索するために使用します。

{ContainerInstanceId} プレースホルダーは、ContainerInstanceId または aws.ecs.container.instance.id リソース属性を検索するために使用します。このリソース属性は、AWS ECS EC2 起動タイプに対してのみ有効です。

{NodeName} プレースホルダーは、NodeName または k8s.node.name リソース属性を検索するために使用します。

{TaskDefinitionFamily} プレースホルダーは、TaskDefinitionFamily または aws.ecs.task.family リソース属性を検索するために使用します。

{TaskId} プレースホルダーは、メトリクスデータ内の TaskId または aws.ecs.task.id リソース属性を検索し、それを実際のタスク ID に置き換えるために使用します。

リソース属性マップ内にリソース属性が見つからない場合、プレースホルダーは undefined 値に置き換えられます。

3
任意。リソース属性をメトリクスラベルなどのテレメトリー属性に変換します。デフォルトでは無効になっています。
4
ログストリームの AWS リージョン。デフォルトの認証情報プロバイダーチェーンにリージョンがまだ設定されていない場合は、リージョンを指定する必要があります。
5
任意。リクエストが転送されるデフォルトの Amazon CloudWatch Logs サービスエンドポイントをオーバーライドできます。エンドポイント値の一部として、https:// などのプロトコルを含める必要があります。リージョン別のサービスエンドポイントのリストについては、Amazon CloudWatch Logs endpoints and quotas (AWS General Reference) を参照してください。
6
任意。このパラメーターを使用すると、新しい Amazon CloudWatch ロググループのログ保持ポリシーを設定できます。このパラメーターを省略するか 0 に設定すると、ログはデフォルトで期限切れになりません。保持期間 (日数) としてサポートされている値は、13571430609012015018036540054573118272192255729223288、または 3653 です。
7
任意。Amazon CloudWatch メトリクスのカスタム namespace。
8
任意。メトリクスセグメントを別のアカウントにアップロードするための AWS Identity and Access Management (IAM)ロール。

4.10. AWS X-Ray Exporter

AWS X-Ray Exporter は、OpenTelemetry スパンを AWS X-Ray セグメントドキュメントに変換し、それを AWS X-Ray サービスに直接送信します。AWS X-Ray Exporter は、PutTraceSegments API を使用し、AWS SDK for Go とデフォルトの認証情報プロバイダーチェーンを使用してリクエストに署名します。

重要

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

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

AWS X-Ray Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    exporters:
      awsxray:
        region: "<region>" 
1

        endpoint: <protocol><endpoint> 
2

        resource_arn: "<aws_resource_arn>" 
3

        role_arn: "<iam_role>" 
4

        indexed_attributes: [ "<indexed_attr_0>", "<indexed_attr_1>" ] 
5

        aws_log_groups: ["<group1>", "<group2>"] 
6

        request_timeout_seconds: 120 
7

# ...
Copy to Clipboard Toggle word wrap

1
AWS X-Ray サービスに送信される X-Ray セグメントの送信先リージョン。たとえば、eu-west-1 です。
2
任意。リクエストが転送されるデフォルトの Amazon CloudWatch Logs サービスエンドポイントをオーバーライドできます。エンドポイント値の一部として、https:// などのプロトコルを含める必要があります。リージョン別のサービスエンドポイントのリストについては、Amazon CloudWatch Logs endpoints and quotas (AWS General Reference) を参照してください。
3
Collector を実行している AWS リソースの Amazon Resource Name (ARN)。
4
X-Ray セグメントを別のアカウントにアップロードするための AWS Identity and Access Management (IAM) ロール。
5
X-Ray アノテーションに変換される属性名のリスト。
6
Amazon CloudWatch Logs のロググループ名のリスト。
7
リクエストがタイムアウトするまでの秒数。省略した場合、デフォルト値は 30 です。

4.11. File Exporter

File Exporter は、テレメトリーデータを永続ストレージ内のファイルに書き込みます。ローテーション、圧縮、複数のファイルへの書き込みなどのファイル操作に対応しています。このエクスポーターを使用すると、リソース属性を使用してファイル名を制御することもできます。必要な設定は path だけです。これは永続ボリュームファイルシステム内のテレメトリーファイルの保存先パスを指定するものです。

重要

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

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

File Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config: |
    exporters:
      file:
        path: /data/metrics.json 
1

        rotation: 
2

          max_megabytes: 10 
3

          max_days: 3 
4

          max_backups: 3 
5

          localtime: true 
6

        format: proto 
7

        compression: zstd 
8

        flush_interval: 5 
9

# ...
Copy to Clipboard Toggle word wrap

1
データを書き込むファイルシステムパス。デフォルトはありません。
2
ファイルのローテーションはこのエクスポーターのオプション機能です。デフォルトでは、テレメトリーデータは 1 つのファイルにエクスポートされます。ファイルのローテーションを有効にするには、rotation 設定を追加します。
3
max_megabytes 設定は、ファイルがローテーションされるまでに許可される最大サイズです。デフォルトは 100 です。
4
max_days 設定は、ファイルを保持する日数を指定します。日数はファイル名のタイムスタンプから起算されます。デフォルトはありません。
5
max_backups 設定は、複数の古いファイルを保持するためのものです。デフォルトは 100 です。
6
localtime 設定は、ファイルがローテーションされるときにファイル名の拡張子の前に追加するタイムスタンプのローカル時間形式を指定します。デフォルトは協定世界時 (UTC) です。
7
テレメトリーデータをファイルに書き込む前にエンコードする形式。デフォルトの形式は json です。proto 形式もサポートされています。
8
ファイル圧縮は任意であり、デフォルトでは設定されていません。この設定は、ファイルにエクスポートするデータの圧縮アルゴリズムを定義します。現在、zstd 圧縮アルゴリズムのみがサポートされています。デフォルトはありません。
9
フラッシュ間の時間間隔。単位のない値はナノ秒単位で設定されます。rotation 設定によってファイルのローテーションが有効になっている場合、この設定は無視されます。

4.12. Google Cloud Exporter

Google Cloud Exporter は Telemetry データを Google Cloud Operations Suite に送信します。Google Cloud Exporter を使用すると、メトリクスを Google Cloud Monitoring にエクスポートし、Google Cloud Logging にログを記録し、Google Cloud Trace にトレースできます。

重要

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

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

Google Cloud Exporter が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  env:
    - name: GOOGLE_APPLICATION_CREDENTIALS
      value: /var/secrets/google/key.json 
1

  volumeMounts:
    - name: google-application-credentials
      mountPath: /var/secrets/google
      readOnly: true
  volumes:
    - name: google-application-credentials
      secret:
        secretName: google-application-credentials
  config:
    exporters:
      googlecloud:
        project: 
2

# ...
Copy to Clipboard Toggle word wrap

1
認証 key.json ファイルを参照する GOOGLE_APPLICATION_CREDENTIALS 環境変数。key.json ファイルはシークレットボリュームとしてマウントされます。OpenTelemetry Collector。
2
任意。プロジェクト識別子。指定しない場合、プロジェクトは認証情報から自動的に決定されます。

デフォルトで、エクスポーターは Telemetry データをエクスポーターの設定の project フィールドで指定されたプロジェクトに送信します。gcp.project.id リソース属性を使用して、メトリクスごとにオーバーライドを設定できます。たとえば、メトリックにラベルプロジェクトがある場合、Group-by-Attributes Processor を使用してこれをリソースラベルにプロモートし、リソースプロセッサー を使用して プロジェクト から gcp.project.id に属性の名前を変更します。

第5章 コネクター

コネクターは 2 つのパイプラインを接続します。1 つのパイプラインの終了時にエクスポーターとしてデータを消費し、別のパイプラインの開始時にレシーバーとしてデータを出力します。同じまたは異なるデータ型のデータを消費および出力できます。データを生成および出力して、消費されたデータを要約することも、単にデータを複製またはルーティングすることもできます。

現在、Red Hat build of OpenTelemetry では、次の一般提供およびテクノロジープレビューのコネクターが利用可能です。

5.1. Count Connector

Count Connector は、エクスポーターパイプライン内のトレーススパン、トレーススパンイベント、メトリクス、メトリクスデータポイント、およびログレコードをカウントします。

重要

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

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

デフォルトのメトリクス名は次のとおりです。

  • trace.span.count
  • trace.span.event.count
  • metric.count
  • metric.datapoint.count
  • log.record.count

カスタムメトリクス名を公開することもできます。

Count Connector が有効になっている OpenTelemetry Collector カスタムリソース (CR)

# ...
  config:
    receivers:
      otlp:
        protocols:
          grpc:
            endpoint: 0.0.0.0:4317
    exporters:
      prometheus:
        endpoint: 0.0.0.0:8889
    connectors:
      count: {}
    service:
      pipelines: 
1

        traces/in:
          receivers: [otlp]
          exporters: [count] 
2

        metrics/out:
          receivers: [count] 
3

          exporters: [prometheus]
# ...
Copy to Clipboard Toggle word wrap

1
パイプライン内のエクスポーターまたはレシーバーとして Count Connector を正しく設定し、生成されたメトリクスを正しいエクスポーターにエクスポートすることが重要です。
2
スパンをエクスポーターとして受信するように Count Connector を設定します。
3
生成されたメトリクスをレシーバーとして送信するように Count Connector を設定します。
ヒント

Count Connector が期待どおりのメトリクスを生成していない場合は、OpenTelemetry Collector が期待どおりのスパン、メトリクス、およびログを受信しているかどうか、またテレメトリーデータが期待どおりに Count Connector を介して流れているかどうかを確認してください。Debug Exporter を使用して、受信したテレメトリーデータを検査することもできます。

Count Connector は、spansspaneventsmetricsdatapointslogs などのフィールドを使用して設定されている場合に、定義された条件に従ってテレメトリーデータをカウントし、それらのデータをメトリクスとして公開できます。次の例を参照してください。

条件によってスパンをカウントする Count Connector の OpenTelemetry Collector CR の例

# ...
  config:
    connectors:
      count:
        spans: 
1

          <custom_metric_name>: 
2

            description: "<custom_metric_description>"
            conditions:
              - 'attributes["env"] == "dev"'
              - 'name == "devevent"'
# ...
Copy to Clipboard Toggle word wrap

1
この例では、公開されるメトリクスによって、指定した条件を満たすスパンをカウントします。
2
cluster.prod.event.count などのカスタムメトリクス名を指定できます。
ヒント

条件を正しく記述し、属性のマッチングやテレメトリーフィールドの条件に必要な構文に準拠してください。条件の不適切な定義が最も多いエラーの原因です。

Count Connector は、spansspaneventsmetricsdatapointslogs などのフィールドを使用して設定されている場合に、定義された属性に従ってテレメトリーデータをカウントできます。次の例を参照してください。属性のキーはテレメトリーデータに注入されます。欠落している属性については、default_value フィールドに値を定義する必要があります。

属性によってログをカウントする Count Connector の OpenTelemetry Collector CR の例

# ...
  config:
    connectors:
      count:
        logs: 
1

          <custom_metric_name>: 
2

            description: "<custom_metric_description>"
            attributes:
              - key: env
                default_value: unknown 
3

# ...
Copy to Clipboard Toggle word wrap

1
ログの属性を指定します。
2
my.log.count などのカスタムメトリクス名を指定できます。
3
属性が設定されていない場合のデフォルト値を定義します。

5.2. Routing Connector

Routing Connector は、OpenTelemetry Transformation Language (OTTL) ステートメントとして記述されたリソース属性とルーティング条件に従って、ログ、メトリクス、およびトレースを指定されたパイプラインにルーティングします。

重要

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

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

Routing Connector が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    connectors:
      routing:
        table: 
1

          - statement: route() where attributes["X-Tenant"] == "dev" 
2

            pipelines: [traces/dev] 
3

          - statement: route() where attributes["X-Tenant"] == "prod"
            pipelines: [traces/prod]
        default_pipelines: [traces/dev] 
4

        error_mode: ignore 
5

        match_once: false 
6

    service:
      pipelines:
        traces/in:
          receivers: [otlp]
          exporters: [routing]
        traces/dev:
          receivers: [routing]
          exporters: [otlp/dev]
        traces/prod:
          receivers: [routing]
          exporters: [otlp/prod]
# ...
Copy to Clipboard Toggle word wrap

1
コネクターのルーティングテーブル。
2
OTTL ステートメントとして記述されたルーティング条件。
3
一致するテレメトリーデータをルーティングするための宛先パイプライン。
4
どのルーティング条件も満たさないテレメトリーデータをルーティングするための宛先パイプライン。
5
エラー処理モード: propagate 値は、エラーをログに記録し、ペイロードをドロップするためのものです。ignore 値は、条件を無視して次の条件との一致を試行するためのものです。silent 値は ignore と同じですが、エラーがログに記録されません。デフォルトは propagate です。
6
true に設定すると、ルーティング条件が満たされた最初のパイプラインにのみペイロードがルーティングされます。デフォルトは false です。

5.3. Forward Connector

Forward Connector は、同じタイプの 2 つのパイプラインを結合します。

重要

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

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

Forward Connector が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    receivers:
      otlp:
        protocols:
          grpc:
      jaeger:
        protocols:
          grpc:
    processors:
      batch:
    exporters:
      otlp:
        endpoint: tempo-simplest-distributor:4317
        tls:
          insecure: true
    connectors:
      forward: {}
    service:
      pipelines:
        traces/regiona:
          receivers: [otlp]
          processors: []
          exporters: [forward]
        traces/regionb:
          receivers: [jaeger]
          processors: []
          exporters: [forward]
        traces:
          receivers: [forward]
          processors: [batch]
          exporters: [otlp]
# ...
Copy to Clipboard Toggle word wrap

5.4. Spanmetrics Connector

Spanmetrics Connector は、スパンデータから Request, Error, and Duration (R.E.D) OpenTelemetry メトリクスを集計します。

Spanmetrics Collector が有効になっている OpenTelemetry Collector カスタムリソース

# ...
  config:
    connectors:
      spanmetrics:
        metrics_flush_interval: 15s 
1

    service:
      pipelines:
        traces:
          exporters: [spanmetrics]
        metrics:
          receivers: [spanmetrics]
# ...
Copy to Clipboard Toggle word wrap

1
生成されたメトリクスのフラッシュ間隔を定義します。デフォルトは 15s です。

第6章 拡張機能

エクステンションにより、Collector に機能が追加されます。たとえば、認証をレシーバーとエクスポーターに自動的に追加できます。

現在、Red Hat build of OpenTelemetry では、次の一般提供およびテクノロジープレビューの拡張機能が利用可能です。

6.1. BearerTokenAuth Extension

BearerTokenAuth Extension は、HTTP および gRPC プロトコルに基づくレシーバーとエクスポーター用のオーセンティケーターです。OpenTelemetry Collector カスタムリソースを使用して、レシーバーおよびエクスポーター側で BearerTokenAuth Extension のクライアント認証とサーバー認証を設定できます。このエクステンションは、トレース、メトリクス、およびログをサポートします。

BearerTokenAuth Extension 用にクライアント認証とサーバー認証が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      bearertokenauth:
        scheme: "Bearer" 
1

        token: "<token>" 
2

        filename: "<token_file>" 
3


    receivers:
      otlp:
        protocols:
          http:
            auth:
              authenticator: bearertokenauth 
4

    exporters:
      otlp:
        auth:
          authenticator: bearertokenauth 
5


    service:
      extensions: [bearertokenauth]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
Copy to Clipboard Toggle word wrap

1
カスタム scheme を送信するように BearerTokenAuth Extension を設定できます。デフォルトは Bearer です。
2
メッセージを識別するために、BearerTokenAuth Extension トークンをメタデータとして追加できます。
3
すべてのメッセージとともに送信される認証トークンを含むファイルへのパス。
4
オーセンティケーター設定を OTLP Receiver に割り当てることができます。
5
オーセンティケーター設定を OTLP Exporter に割り当てることができます。

6.2. OAuth2Client Extension

OAuth2Client Extension は、HTTP および gRPC プロトコルに基づくエクスポーター用のオーセンティケーターです。OAuth2Client Extension のクライアント認証は、OpenTelemetry Collector カスタムリソースの別のセクションで設定されます。このエクステンションは、トレース、メトリクス、およびログをサポートします。

重要

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

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

OAuth2Client Extension 用にクライアント認証が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      oauth2client:
        client_id: <client_id> 
1

        client_secret: <client_secret> 
2

        endpoint_params: 
3

          audience: <audience>
        token_url: https://example.com/oauth2/default/v1/token 
4

        scopes: ["api.metrics"] 
5

        # tls settings for the token client
        tls: 
6

          insecure: true 
7

          ca_file: /var/lib/mycert.pem 
8

          cert_file: <cert_file> 
9

          key_file: <key_file> 
10

        timeout: 2s 
11


    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      otlp:
        auth:
          authenticator: oauth2client 
12


    service:
      extensions: [oauth2client]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
Copy to Clipboard Toggle word wrap

1
アイデンティティープロバイダーによって提供されるクライアント ID。
2
アイデンティティープロバイダーに対してクライアントを認証するために使用される機密キー。
3
キーと値のペア形式の追加のメタデータ。認証中に転送されます。たとえば audience は、アクセストークンの対象者を指定し、トークンの受信者を示します。
4
Collector がアクセストークンを要求する OAuth2 トークンエンドポイントの URL。
5
スコープは、クライアントによって要求された特定の権限またはアクセスレベルを定義します。
6
トークンクライアントの Transport Layer Security (TLS) 設定。トークンを要求するときに安全な接続を確立するために使用されます。
7
true に設定すると、安全でないまたは検証されていない TLS 接続を使用して、設定されたトークンエンドポイントを呼び出すように Collector が設定されます。
8
TLS ハンドシェイク中にサーバーの証明書を検証するために使用される認証局 (CA) ファイルへのパス。
9
クライアントが必要に応じて OAuth2 サーバーに対して自身を認証するために使用する必要があるクライアント証明書ファイルへのパス。
10
認証に必要な場合にクライアント証明書と併用されるクライアントの秘密キーファイルへのパス。
11
トークンクライアントのリクエストのタイムアウトを設定します。
12
オーセンティケーター設定を OTLP エクスポーターに割り当てることができます。

6.3. File Storage Extension

File Storage Extension は、トレース、メトリクス、およびログをサポートします。このエクステンションは、状態をローカルファイルシステムに保持できます。この拡張機能は、HTTP プロトコルおよび gRPC プロトコルに基づく OpenTelemetry Protocol (OTLP) エクスポーターの送信キューを保持します。このエクステンションには、ディレクトリーへの読み取りおよび書き込みアクセスが必要です。このエクステンションはデフォルトのディレクトリーを使用できますが、デフォルトのディレクトリーがすでに存在している必要があります。

重要

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

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

OTLP 送信キューを保持する File Storage Extension が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      file_storage/all_settings:
        directory: /var/lib/otelcol/mydir 
1

        timeout: 1s 
2

        compaction:
          on_start: true 
3

          directory: /tmp/ 
4

          max_transaction_size: 65_536 
5

        fsync: false 
6


    exporters:
      otlp:
        sending_queue:
          storage: file_storage/all_settings 
7


    service:
      extensions: [file_storage/all_settings] 
8

      pipelines:
        traces:
          receivers: [otlp]
          exporters: [otlp]
# ...
Copy to Clipboard Toggle word wrap

1
テレメトリーデータを保存するディレクトリーを指定します。
2
保存されたファイルを開く際のタイムアウト期間を指定します。
3
Collector が起動すると圧縮を開始します。省略した場合、デフォルトは false です。
4
コンパクターがテレメトリーデータを保存するディレクトリーを指定します。
5
圧縮トランザクションの最大サイズを定義します。トランザクションサイズを無視するには、ゼロに設定します。省略した場合、デフォルトは 65536 バイトです。
6
設定すると、各書き込み操作の後にデータベースよる fsync 呼び出しが強制的に実行されます。これにより、データベースプロセスが中断された場合にデータベースの整合性を確保できますが、パフォーマンスが低下します。
7
OTLP エクスポーターデータをローカルファイルシステムにバッファーリングします。
8
Collector による File Storage Extension を起動します。

6.4. OIDC Auth Extension

OIDC Auth Extension は、OpenID Connect (OIDC) プロトコルを使用して、レシーバーが受信した要求を認証します。認証ヘッダー内の ID トークンを発行者に対して検証し、受信した要求の認証コンテキストを更新します。

重要

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

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

OIDC Auth Extension が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      oidc:
        attribute: authorization 
1

        issuer_url: https://example.com/auth/realms/opentelemetry 
2

        issuer_ca_path: /var/run/tls/issuer.pem 
3

        audience: otel-collector 
4

        username_claim: email 
5

    receivers:
      otlp:
        protocols:
          grpc:
            auth:
              authenticator: oidc
    exporters:
      debug: {}
    service:
      extensions: [oidc]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
ID トークンを含むヘッダーの名前。デフォルト名は authorization です。
2
OIDC プロバイダーのベース URL。
3
オプション: 発行者の CA 証明書へのパス。
4
トークンの対象者。
5
ユーザー名を含むクレームの名前。デフォルト名は sub です。

6.5. Jaeger Remote Sampling Extension

Jaeger Remote Sampling Extension を使用すると、Jaeger のリモートサンプリング API の後にサンプリングストラテジーを提供できるようになります。このエクステンションを設定して、パイプラインの Jaeger Collector などのバッキングリモートサンプリングサーバーに、またはローカルファイルシステムから静的 JSON ファイルにリクエストをプロキシーできます。

重要

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

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

Jaeger Remote Sampling Extension が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      jaegerremotesampling:
        source:
          reload_interval: 30s 
1

          remote:
            endpoint: jaeger-collector:14250 
2

          file: /etc/otelcol/sampling_strategies.json 
3


    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      debug: {}

    service:
      extensions: [jaegerremotesampling]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
サンプリング設定が更新される時間間隔。
2
Jaeger Remote Sampling ストラテジープロバイダーに到達するためのエンドポイント。
3
JSON 形式のサンプリングストラテジー設定を含むローカルファイルへのパス。

Jaeger Remote Sampling ストラテジーファイルの例

{
  "service_strategies": [
    {
      "service": "foo",
      "type": "probabilistic",
      "param": 0.8,
      "operation_strategies": [
        {
          "operation": "op1",
          "type": "probabilistic",
          "param": 0.2
        },
        {
          "operation": "op2",
          "type": "probabilistic",
          "param": 0.4
        }
      ]
    },
    {
      "service": "bar",
      "type": "ratelimiting",
      "param": 5
    }
  ],
  "default_strategy": {
    "type": "probabilistic",
    "param": 0.5,
    "operation_strategies": [
      {
        "operation": "/health",
        "type": "probabilistic",
        "param": 0.0
      },
      {
        "operation": "/metrics",
        "type": "probabilistic",
        "param": 0.0
      }
    ]
  }
}
Copy to Clipboard Toggle word wrap

6.6. Performance Profiler Extension

Performance Profiler Extension により、Go net/http/pprof エンドポイントが有効になります。このエクステンションは、開発者がパフォーマンスプロファイルを収集し、サービスの問題を調査するために使用します。

重要

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

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

Performance Profiler Extension が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      pprof:
        endpoint: localhost:1777 
1

        block_profile_fraction: 0 
2

        mutex_profile_fraction: 0 
3

        save_to_file: test.pprof 
4


    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      debug: {}

    service:
      extensions: [pprof]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
このエクステンションがリッスンするエンドポイント。localhost: を使用してローカルでのみ使用できるようにするか、":" を使用してすべてのネットワークインターフェイスで使用できるようにします。デフォルト値は localhost:1777 です。
2
ブロッキングイベントの一部がプロファイリングされるように設定します。プロファイリングを無効にするには、これを 0 または負の整数に設定します。runtime パッケージについては、ドキュメント を参照してください。デフォルト値は 0 です。
3
プロファイリングされるミューテックス競合イベントの一部を設定します。プロファイリングを無効にするには、これを 0 または負の整数に設定します。runtime パッケージについては、ドキュメント を参照してください。デフォルト値は 0 です。
4
CPU プロファイルを保存するファイルの名前。Collector が起動すると、プロファイリングが開始されます。プロファイリングは、Collector の終了時にファイルに保存されます。

6.7. Health Check Extension

Health Check Extension は、OpenTelemetry Collector のステータスをチェックするための HTTP URL を提供します。このエクステンションは、OpenShift の liveness および readiness プローブとして使用できます。

重要

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

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

Health Check Extension が設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      health_check:
        endpoint: "0.0.0.0:13133" 
1

        tls: 
2

          ca_file: "/path/to/ca.crt"
          cert_file: "/path/to/cert.crt"
          key_file: "/path/to/key.key"
        path: "/health/status" 
3

        check_collector_pipeline: 
4

          enabled: true 
5

          interval: "5m" 
6

          exporter_failure_threshold: 5 
7


    receivers:
      otlp:
        protocols:
          http: {}

    exporters:
      debug: {}

    service:
      extensions: [health_check]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
ヘルスチェックステータスを公開するためのターゲット IP アドレス。デフォルトは 0.0.0.0:13133 です。
2
TLS サーバー側の設定。TLS 証明書へのパスを定義します。省略した場合、TLS は無効になります。
3
ヘルスチェックサーバーのパス。デフォルトは / です。
4
Collector パイプラインのヘルスチェック用の設定。
5
Collector パイプラインのヘルスチェックを有効にします。デフォルトは false です。
6
失敗数を確認する時間間隔。デフォルトは 5m です。
7
コンテナーが正常と見なされる連続失敗回数の上限値。デフォルトは 5 です。

6.8. zPages エクステンション

zPages エクステンションは、計装されたコンポーネントをリアルタイムでデバッグするためのライブデータを提供する HTTP エンドポイントを提供します。このエクステンションを使用すると、外部のバックエンドに依存せずに、プロセス内の診断やトレースとメトリクスの分析を行うことができます。このエクステンションを使用すると、提供されたエンドポイントで診断情報を監視することで、OpenTelemetry Collector と関連コンポーネントの動作を監視およびトラブルシューティングできます。

重要

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

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

zPages エクステンションが設定された OpenTelemetry Collector カスタムリソース

# ...
  config:
    extensions:
      zpages:
        endpoint: "localhost:55679" 
1


    receivers:
      otlp:
        protocols:
          http: {}
    exporters:
      debug: {}

    service:
      extensions: [zpages]
      pipelines:
        traces:
          receivers: [otlp]
          exporters: [debug]
# ...
Copy to Clipboard Toggle word wrap

1
zPages エクステンションを提供するための HTTP エンドポイントを指定します。デフォルトは localhost:55679 です。
重要

Red Hat build of OpenTelemetry Operator はこのルートを公開しないため、HTTP エンドポイントにアクセスするにはポート転送が必要です。

次の oc コマンドを実行すると、ポート転送を有効にできます。

$ oc port-forward pod/$(oc get pod -l app.kubernetes.io/name=instance-collector -o=jsonpath='{.items[0].metadata.name}') 55679
Copy to Clipboard Toggle word wrap

Collector は診断用に次の zPages を提供します。

ServiceZ
Collector サービスの概要と、PipelineZExtensionZFeatureZ の zPages へのリンクが表示されます。このページには、ビルドバージョンとランタイムに関する情報も表示されます。このページの URL の例は、http://localhost:55679/debug/servicez です。
PipelineZ
Collector 内のアクティブなパイプラインに関する詳細情報を表示します。このページには、パイプラインの種類、データ変更の有無、および各パイプラインに関連付けられているレシーバー、プロセッサー、エクスポーターが表示されます。このページの URL の例は、http://localhost:55679/debug/pipelinez です。
ExtensionZ
Collector 内の現在アクティブなエクステンションを表示します。このページの URL の例は、http://localhost:55679/debug/extensionz です。
FeatureZ
Collector 内で有効になっているフィーチャーゲートと、そのステータスおよび説明を表示します。このページの URL の例は、http://localhost:55679/debug/featurez です。
TraceZ
レイテンシー別に分類されたスパンを表示します。使用可能な時間範囲には、0 µs、10 µs、100 µs、1 ms、10 ms、100 ms、1 s、10 s、1 m が含まれます。このページでは、エラーサンプルをすばやく検査することもできます。このページの URL の例は、http://localhost:55679/debug/tracez です。

法律上の通知

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2026 Red Hat
トップに戻る