第3章 Red Hat build of OpenTelemetry の設定とデプロイ
Red Hat build of OpenTelemetry Operatorは、Red Hat build of OpenTelemetry リソースを作成およびデプロイするときに使用されるアーキテクチャーと設定を定義するカスタムリソース定義 (CRD) ファイルを使用します。デフォルト設定をインストールするか、ファイルを変更できます。
3.1. OpenTelemetry Collector 設定オプション
OpenTelemetry Collector は、テレメトリーデータにアクセスする 5 種類のコンポーネントで構成されます。
- レシーバー
- レシーバー (プッシュまたはプルベース) は、データが Collector に到達する方法です。通常、レシーバーは指定された形式のデータを受け入れて内部形式に変換し、それを適用可能なパイプラインで定義されるプロセッサーおよびエクスポーターに渡します。デフォルトでは、レシーバーは設定されていません。1 つまたは複数のレシーバーを設定する必要があります。レシーバーは 1 つまたは複数のデータソースをサポートする場合があります。
- プロセッサー
- オプション: プロセッサーは、データを受信してからエクスポートするまでにデータを処理します。デフォルトでは、プロセッサーは有効になっていません。プロセッサーは、すべてのデータソースに対して有効にする必要があります。すべてのプロセッサーがすべてのデータソースをサポートするわけではありません。データソースによっては、複数のプロセッサーが有効になっている可能性があります。プロセッサーの順序が重要であることに注意してください。
- エクスポーター
- エクスポーター (プッシュまたはプルベース) は、データを 1 つ以上のバックエンドまたは宛先に送信する方法です。デフォルトでは、エクスポーターは設定されていません。1 つまたは複数のエクスポーターを設定する必要があります。エクスポーターは 1 つ以上のデータソースをサポートできます。エクスポーターはデフォルト設定で使用できますが、多くの場合、少なくとも宛先およびセキュリティー設定を指定するための設定が必要です。
- コネクター
- コネクターは 2 つのパイプラインを接続します。1 つのパイプラインの終了時にエクスポーターとしてデータを消費し、別のパイプラインの開始時にレシーバーとしてデータを出力します。同じまたは異なるデータ型のデータを消費および出力できます。データを生成および出力して、消費されたデータを要約することも、単にデータを複製またはルーティングすることもできます。
- エクステンション
- エクステンションにより、Collector に機能が追加されます。たとえば、認証をレシーバーとエクスポーターに自動的に追加できます。
カスタムリソース YAML ファイルで、コンポーネントのインスタンスを複数定義できます。コンポーネントは、設定した後に YAML ファイルの spec.config.service
セクションで定義されたパイプラインで有効にする必要があります。ベストプラクティスとしては、必要なコンポーネントのみを有効にします。
OpenTelemetry Collector カスタムリソースファイルの例
apiVersion: opentelemetry.io/v1alpha1
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: jaeger-production-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: [jaeger]
metrics:
receivers: [otlp]
processors: []
exporters: [prometheus]
- 1
- コンポーネントが設定されていても、
service
セクションで定義されていない場合、そのコンポーネントは有効になりません。
パラメーター | 説明 | 値 | デフォルト |
---|---|---|---|
receivers: | レシーバーは、データが Collector に到達する方法です。デフォルトでは、レシーバーは設定されていません。設定が有効とみなされるためには、少なくとも 1 つの有効なレシーバーが必要です。レシーバーは、パイプラインに追加して有効にされます。 |
| None |
processors: | プロセッサーは、データの受信とエクスポートの間にデータを処理します。デフォルトでは、プロセッサーは有効になっていません。 |
| None |
exporters: | エクスポーターは、1 つ以上のバックエンドまたは宛先にデータを送信します。デフォルトでは、エクスポーターは設定されていません。設定が有効とみなされるためには、少なくとも 1 つの有効なエクスポーターが必要です。エクスポーターは、パイプラインに追加して有効にされます。エクスポーターはデフォルト設定で使用できますが、多くの場合、少なくとも宛先およびセキュリティー設定を指定するための設定が必要です。 |
| None |
connectors: | コネクターはパイプラインのペアを結合します。つまり、パイプラインの終わりのエクスポーターとしてデータを消費し、パイプラインの開始レシーバーとしてデータを出力します。これを使用して、消費されたデータを要約、複製、またはルーティングすることができます。 |
| None |
extensions: | テレメトリーデータの処理を含まないタスク用のオプションのコンポーネント。 |
| None |
service: pipelines: |
コンポーネントは、それらを | ||
service: pipelines: traces: receivers: |
レシーバーは、それらを | None | |
service: pipelines: traces: processors: |
プロセッサーは、それらを | None | |
service: pipelines: traces: exporters: |
エクスポーターは、それらを | None | |
service: pipelines: metrics: receivers: |
メトリクスのレシーバーを有効にするには、 | None | |
service: pipelines: metrics: processors: |
メトリクスのプロセッサーを有効にするには、 | None | |
service: pipelines: metrics: exporters: |
メトリクスのエクスポーターを有効にするには、 | None |
3.1.1. OpenTelemetry Collector コンポーネント
3.1.1.1. レシーバー
レシーバーはデータをCollector に入れます。
3.1.1.1.1. OTLP レシーバー
OTLP レシーバーは、OpenTelemetry Protocol (OTLP) を使用してトレースとメトリクスを取り込みます。
OTLP レシーバーが有効になっている 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]
- 1
- OTLP gRPC エンドポイント。省略した場合、デフォルトの
0.0.0.0:4317
が使用されます。 - 2
- サーバー側の TLS 設定。TLS 証明書へのパスを定義します。省略した場合、TLS は無効になります。
- 3
- サーバーがクライアント証明書を検証する TLS 証明書へのパス。これにより、
TLSConfig
でClientCAs
およびClientAuth
の値がRequireAndVerifyClientCert
に設定されます。詳細は、Config
of the Golang TLS package を参照してください。 - 4
- 証明書をリロードする間隔を指定します。この値が設定されていない場合、証明書はリロードされません。
reload_interval
は、ns
、us
(またはµs
)、ms
、s
、m
、h
などの有効な時間単位を含む文字列を受け入れます。 - 5
- OTLP HTTP エンドポイント。デフォルト値は
0.0.0.0:4318
です。 - 6
- サーバー側の TLS 設定。詳細は、
grpc
プロトコル設定セクションを参照してください。
3.1.1.1.2. Jaeger レシーバー
Jaeger レシーバーは、Jaeger 形式でトレースを取り込みます。
Jaeger レシーバーが有効になっている 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]
- 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 レシーバー設定セクションを参照してください。
3.1.1.1.3. Prometheus レシーバー
Prometheus レシーバーは現在、テクノロジープレビュー 機能のみとなっています。
Prometheus レシーバーはメトリクスエンドポイントをスクレイプします。
Prometheus レシーバーが有効になっている 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]
3.1.1.1.4. Zipkin レシーバー
Zipkin レシーバーは、Zipkin v1 および v2 形式でトレースを取り込みます。
Zipkin レシーバーが有効になっている OpenTelemetry Collector カスタムリソース
config: | receivers: zipkin: endpoint: 0.0.0.0:9411 1 tls: 2 service: pipelines: traces: receivers: [zipkin]
3.1.1.1.5. Kafka レシーバー
Kafka レシーバーは現在、テクノロジープレビュー 機能のみとなっています。
Kafka レシーバーは、Kafka からトレース、メトリクス、ログを OTLP 形式で受信します。
Kafka レシーバーが有効になっている 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]
- 1
- Kafka ブローカーのリスト。デフォルトは
localhost:9092
です。 - 2
- Kafka プロトコルのバージョン。たとえば、
2.0.0
などです。これは必須フィールドです。 - 3
- 読み取り元の Kafka トピックの名前。デフォルトは
otlp_spans
です。 - 4
- 平文認証設定。省略した場合、平文認証は無効になります。
- 5
- クライアント側の TLS 設定。TLS 証明書へのパスを定義します。省略した場合、TLS 認証は無効になります。
- 6
- サーバーの証明書チェーンとホスト名の検証を無効にします。デフォルトは
false
です。 - 7
- ServerName は、仮想ホスティングをサポートするためにクライアントによって要求されたサーバーの名前を示します。
3.1.1.1.6. OpenCensus レシーバー
OpenCensus レシーバーは、OpenCensus プロジェクトとの下位互換性を提供し、インストルメント化されたコードベースの移行を容易にします。gRPC または HTTP および Json を介して OpenCensus 形式でメトリクスとトレースを受信します。
OpenCensus レシーバーが有効になっている 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] ...
3.1.1.2. プロセッサー
プロセッサーは、データの受信とエクスポートの間にデータを処理します。
3.1.1.2.1. Batch プロセッサー
Batch プロセッサーは、トレースとメトリクスをバッチ処理して、テレメトリー情報の転送に必要な発信接続の数を減らします。
Batch プロセッサーを使用する場合の OpenTelemetry Collector カスタムリソースの例
config: | processor: batch: timeout: 5s send_batch_max_size: 10000 service: pipelines: traces: processors: [batch] metrics: processors: [batch]
パラメーター | 説明 | デフォルト |
---|---|---|
timeout | バッチサイズに関係なく、特定の期間後にバッチを送信します。 |
|
send_batch_size | 指定された数のスパンまたはメトリクスの後に、Telemetry データのバッチを送信します。 |
|
send_batch_max_size |
バッチの最大許容サイズ。 |
|
metadata_keys |
アクティブにすると、 |
|
metadata_cardinality_limit |
|
|
3.1.1.2.2. Memory Limiter プロセッサー
Memory Limiter プロセッサーは、Collector のメモリー使用量を定期的にチェックし、ソフトメモリーリミットに達するとデータ処理を一時停止します。このプロセッサーは、トレース、メトリクス、およびログをサポートします。先行コンポーネント (通常はレシーバー) は、同じデータの送信を再試行することが想定されており、受信データにバックプレッシャーを適用する場合があります。メモリー使用量がハードリミットを超えると、Memory Limiter プロセッサーによってガベージコレクションが強制的に実行されます。
Memory Limiter プロセッサーを使用する場合の OpenTelemetry Collector カスタムリソースの例
config: | processor: memory_limiter: check_interval: 1s limit_mib: 4000 spike_limit_mib: 800 service: pipelines: traces: processors: [batch] metrics: processors: [batch]
パラメーター | 説明 | デフォルト |
---|---|---|
check_interval |
メモリー使用量の測定間の時間。最適な値は |
|
limit_mib | ハードリミット。ヒープに割り当てられるメモリーの最大量 (MiB 単位)。通常、OpenTelemetry Collector の合計メモリー使用量は、この値より約 50 MiB 大きくなります。 |
|
spike_limit_mib |
スパイクリミット。これは、予想されるメモリー使用量の最大スパイク (MiB 単位) です。最適な値は、 |
|
limit_percentage |
|
|
spike_limit_percentage |
|
|
3.1.1.2.3. Resource Detection プロセッサー
Resource Detection プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Resource Detection プロセッサーは、OpenTelemetry のリソースセマンティック標準に合わせて、ホストリソースの詳細を識別します。検出された情報を使用して、テレメトリーデータ内のリソース値を追加または置換できます。このプロセッサーはトレース、メトリクスをサポートしており、Docket メタデータディテクターや OTEL_RESOURCE_ATTRIBUTES
環境変数ディテクターなどの複数のディテクターと併用できます。
Resource Detection プロセッサーに必要な OpenShift Container Platform の権限
kind: ClusterRole metadata: name: otel-collector rules: - apiGroups: ["config.openshift.io"] resources: ["infrastructures", "infrastructures/status"] verbs: ["get", "watch", "list"]
Resource Detection プロセッサーを使用する OpenTelemetry Collector
config: | processor: resourcedetection: detectors: [openshift] override: true service: pipelines: traces: processors: [resourcedetection] metrics: processors: [resourcedetection]
環境変数ディテクターを備えた Resource Detection Processor を使用する OpenTelemetry Collector
config: |
processors:
resourcedetection/env:
detectors: [env] 1
timeout: 2s
override: false
- 1
- 使用するディテクターを指定します。この例では、環境ディテクターが指定されています。
3.1.1.2.4. Attributes プロセッサー
Attributes プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Attributes プロセッサーは、スパン、ログ、またはメトリクスの属性を変更できます。入力データをフィルタリングして照合し、特定のアクションに対してそのようなデータを含めたり除外したりするようにこのプロセッサーを設定できます。
プロセッサーはアクションのリストを操作し、設定で指定された順序でアクションを実行します。次のアクションがサポートされています。
- Insert
- 指定されたキーがまだ存在しない場合は、入力データに新しい属性を挿入します。
- Update
- キーがすでに存在する場合は、入力データの属性を更新します。
- Upsert
- 挿入アクションと更新アクションを組み合わせます。キーがまだ存在しない場合は、新しい属性を挿入します。キーがすでに存在する場合は属性を更新します。
- Delete
- 入力データから属性を削除します。
- Hash
- 既存の属性値を SHA1 としてハッシュします。
- Extract
-
正規表現ルールを使用して、ルールで定義された入力キーからターゲットキーまでの値を抽出します。ターゲットキーがすでに存在する場合は、Span プロセッサーの
to_attributes
設定と同様に、既存の属性をソースとしてオーバーライドされます。 - Convert
- 既存の属性を指定された型に変換します。
Attributes プロセッサーを使用した 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
3.1.1.2.5. Resource プロセッサー
Resource プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Resource プロセッサーは、リソース属性に変更を適用します。このプロセッサーは、トレース、メトリクス、およびログをサポートします。
Resource Detection プロセッサーを使用する OpenTelemetry Collector
config: | processor: 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
属性は、属性の削除、属性の挿入、または属性のアップサートなど、リソース属性に適用されるアクションを表します。
3.1.1.2.6. Span プロセッサー
Span プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Span プロセッサーは、その属性に基づいてスパン名を変更するか、スパン名からスパン属性を抽出します。スパンステータスを変更することもできます。スパンを含めたり除外したりすることもできます。このプロセッサーはトレースをサポートしています。
スパンの名前変更には、from_attributes
設定を使用して、新しい名前の属性を指定する必要があります。
Span プロセッサーを使用してスパンの名前を変更する OpenTelemetry Collector
config: | processor: span: name: from_attributes: [<key1>, <key2>, ...] 1 separator: <value> 2
プロセッサーを使用して、スパン名から属性を抽出できます。
Span プロセッサーを使用してスパン名から属性を抽出する OpenTelemetry Collector
config: |
processor:
span/to_attributes:
name:
to_attributes:
rules:
- ^\/api\/v1\/document\/(?P<documentId>.*)\/update$ 1
- 1
- このルールは、抽出の実行方法を定義します。さらにルールを定義できます。たとえば、この場合、正規表現が名前と一致すると、
documentID
属性が作成されます。この例では、入力スパン名が/api/v1/document/12345678/update
の場合、出力スパン名は/api/v1/document/{documentId}/update
となり、新しい"documentId"="12345678"
属性がスパンに追加されます。
スパンステータスを変更できます。
ステータス変更に Span プロセッサーを使用する OpenTelemetry Collector
config: | processor: span/set_status: status: code: Error description: "<error_description>"
3.1.1.2.7. Kubernetes Attributes プロセッサー
Kubernetes Attributes プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Kubernetes Attributes プロセッサーでは、Kubernetes メタデータを使用してスパン、メトリクス、およびログリソース属性を自動設定できます。このプロセッサーは、トレース、メトリクス、およびログをサポートします。このプロセッサーは、Kubernetes リソースを自動的に識別し、そこからメタデータを抽出して、この抽出されたメタデータをリソース属性として関連するスパン、メトリクス、ログに組み込みます。Kubernetes API を利用してクラスター内で動作しているすべての Pod を検出し、IP アドレス、Pod UID、およびその他の関連メタデータの記録を維持します。
Kubernetes Attributes プロセッサーに必要な最小限の OpenShift Container Platform 権限
kind: ClusterRole metadata: name: otel-collector rules: - apiGroups: [''] resources: ['pods', 'namespaces'] verbs: ['get', 'watch', 'list']
Kubernetes Attributes プロセッサーを使用した OpenTelemetry Collector
config: | processors: k8sattributes: filter: node_from_env_var: KUBE_NODE_NAME
3.1.1.3. Filter プロセッサー
Filter プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Filter プロセッサーは、OpenTelemetry Transformation Language を活用して、テレメトリーデータを破棄する基準を確立します。これらの条件のいずれかが満たされると、テレメトリーデータは破棄されます。論理 OR 演算子を使用して条件を組み合わせることができます。このプロセッサーは、トレース、メトリクス、およびログをサポートします。
OTLP エクスポーターが有効になっている 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
3.1.1.4. Routing プロセッサー
Routing プロセッサーは現在、テクノロジープレビュー 機能のみとなっています。
Routing プロセッサーは、ログ、メトリクス、またはトレースを特定のエクスポーターにルーティングします。このプロセッサーは、受信 HTTP 要求 (gRPC またはプレーン HTTP) からヘッダーを読み取るか、リソース属性を読み取ることができ、読み取った値に従って、関連するエクスポーターにトレース情報を送信します。
OTLP エクスポーターが有効になっている OpenTelemetry Collector カスタムリソース
config: | processors: routing: from_attribute: X-Tenant 1 default_exporters: 2 - jaeger table: 3 - value: acme exporters: [jaeger/acme] exporters: jaeger: endpoint: localhost:14250 jaeger/acme: endpoint: localhost:24250
オプションで、from_attribute
内での属性の検索場所を定義する attribute_source
設定を作成できます。許可される値は、HTTP ヘッダーを含むコンテキストを検索する場合は context
、またはリソース属性を検索する場合は resource
です。
3.1.1.5. エクスポーター
エクスポーターは、1 つ以上のバックエンドまたは宛先にデータを送信します。
3.1.1.5.1. OTLP エクスポーター
OTLP gRPC エクスポーターは、OpenTelemetry Protocol (OTLP) を使用してトレースとメトリクスをエクスポートします。
OTLP エクスポーターが有効になっている 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]
- 1
- OTLP gRPC エンドポイント。
https://
スキームが使用される場合、クライアントトランスポートセキュリティーが有効になり、tls
のinsecure
設定をオーバーライドします。 - 2
- クライアント側の TLS 設定。TLS 証明書へのパスを定義します。
- 3
true
に設定すると、クライアントトランスポートセキュリティーは無効になります。デフォルト値はfalse
です。- 4
true
に設定されている場合、証明書の検証は省略します。デフォルト値はfalse
です。- 5
- 証明書をリロードする間隔を指定します。この値が設定されていない場合、証明書はリロードされません。
reload_interval
は、ns
、us
(またはµs
)、ms
、s
、m
、h
などの有効な時間単位を含む文字列を受け入れます。 - 6
- 要求の authority ヘッダーフィールドなど、認証局の仮想ホスト名をオーバーライドします。これをテストに使用できます。
- 7
- ヘッダーは、接続が確立されている間に実行されるすべての要求に対して送信されます。
3.1.1.5.2. OTLP HTTP エクスポーター
OTLP HTTP エクスポーターは、OpenTelemetry Protocol (OTLP) を使用してトレースとメトリクスをエクスポートします。
OTLP エクスポーターが有効になっている 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]
3.1.1.5.3. デバッグエクスポーター
デバッグエクスポーターは、トレースとメトリクスを標準出力に出力します。
デバッグエクスポーターが有効になっている OpenTelemetry Collector カスタムリソース
config: |
exporters:
debug:
verbosity: detailed 1
service:
pipelines:
traces:
exporters: [logging]
metrics:
exporters: [logging]
- 1
- デバッグエクスポートの詳細度:
detailed
またはnormal
またはbasic
。detailed
に設定すると、パイプラインデータの詳細がログに記録されます。デフォルトはnormal
です。
3.1.1.5.4. Prometheus エクスポーター
Prometheus エクスポーターは現在、テクノロジープレビュー 機能のみとなっています。
Prometheus エクスポーターは、Prometheus または OpenMetrics 形式でメトリクスをエクスポートします。
Prometheus エクスポーターが有効になっている OpenTelemetry Collector カスタムリソース
ports: - name: promexporter 1 port: 8889 protocol: TCP config: | exporters: prometheus: endpoint: 0.0.0.0:8889 2 tls: 3 ca_file: ca.pem cert_file: cert.pem key_file: key.pem namespace: prefix 4 const_labels: 5 label1: value1 enable_open_metrics: true 6 resource_to_telemetry_conversion: 7 enabled: true metric_expiration: 180m 8 add_metric_suffixes: false 9 service: pipelines: metrics: exporters: [prometheus]
- 1
- Collector Pod およびサービスから Prometheus ポートを公開します。
ServiceMonitor
またはPodMonitor
カスタムリソースのポート名を使用して、Prometheus によるメトリクスのスクレイピングを有効にできます。 - 2
- メトリクスが公開されるネットワークエンドポイント。
- 3
- サーバー側の TLS 設定。TLS 証明書へのパスを定義します。
- 4
- 設定されている場合は、提供された値でメトリクスをエクスポートします。デフォルトはありません。
- 5
- エクスポートされたすべてのメトリクスに適用されるキーと値のペアのラベル。デフォルトはありません。
- 6
true
の場合、メトリクスは OpenMetrics 形式を使用してエクスポートされます。手本 (exemplar) は、OpenMetrics 形式で、ヒストグラムおよびモノトニックサムメトリクス (counter
など) に対してのみエクスポートできます。デフォルトでは無効になっています。- 7
enabled
がtrue
の場合、すべてのリソース属性はデフォルトでメトリクスラベルに変換されます。デフォルトでは無効になっています。- 8
- 更新なしでメトリクスが公開される期間を定義します。デフォルトは
5m
です。 - 9
- メトリクスの型と単位の接尾辞を追加します。Jaeger コンソールの監視タブが有効になっている場合は、無効にする必要があります。デフォルトは
true
です。
3.1.1.5.5. Kafka エクスポーター
Kafka エクスポータは現在、テクノロジープレビュー 機能のみとなっています。
Kafka エクスポータは、ログ、メトリクス、およびトレースを Kafka にエクスポートします。このエクスポーターは、メッセージをブロックしてバッチ処理しない同期プロデューサーを使用します。スループットと回復力を高めるには、バッチおよびキュー再試行プロセッサーと併用する必要があります。
Kafka エクスポーターが有効になっている 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]
- 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 は、仮想ホスティングをサポートするためにクライアントによって要求されたサーバーの名前を示します。
3.1.1.6. コネクター
コネクターは 2 つのパイプラインを接続します。
3.1.1.6.1. Spanmetrics コネクター
Spanmetrics コネクターは現在、テクノロジープレビュー 機能のみとなっています。
Spanmetrics コネクターは、スパンデータからの Request, Error, Duration (R.E.D) OpenTelemetry メトリクスを集計します。
Spanmetrics コネクターが有効になっている OpenTelemetry Collector カスタムリソース
config: |
connectors:
spanmetrics:
metrics_flush_interval: 15s 1
service:
pipelines:
traces:
exporters: [spanmetrics]
metrics:
receivers: [spanmetrics]
- 1
- 生成されたメトリクスのフラッシュ間隔を定義します。デフォルトは
15s
です。
3.1.1.7. エクステンション
エクステンションにより、Collector に機能が追加されます。
3.1.1.7.1. BearerTokenAuth エクステンション
BearerTokenAuth エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
BearerTokenAuth エクステンションは、HTTP および gRPC プロトコルに基づくレシーバーとエクスポーター用のオーセンティケーターです。OpenTelemetry Collector カスタムリソースを使用して、レシーバーおよびエクスポーター側で BearerTokenAuth エクステンションのクライアント認証とサーバー認証を設定できます。このエクステンションは、トレース、メトリクス、およびログをサポートします。
BearerTokenAuth エクステンション用に設定されたクライアントおよびサーバー認証を含む 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]
3.1.1.7.2. OAuth2Client エクステンション
OAuth2Client エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
OAuth2Client エクステンションは、HTTP および gRPC プロトコルに基づくエクスポーター用のオーセンティケーターです。OAuth2Client エクステンションのクライアント認証は、OpenTelemetry Collector カスタムリソースの別のセクションで設定されます。このエクステンションは、トレース、メトリクス、およびログをサポートします。
OAuth2Client エクステンション用にクライアント認証が設定された 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]
- 1
- ID プロバイダーによって提供されるクライアント ID。
- 2
- ID プロバイダーに対してクライアントを認証するために使用される機密キー。
- 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 エクスポーターに割り当てることができます。
3.1.1.7.3. Jaeger Remote Sampling エクステンション
Jaeger Remote Sampling エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
Jaeger Remote Sampling エクステンションを使用すると、Jaeger のリモートサンプリング API の後にサンプリングストラテジーを提供できるようになります。このエクステンションを設定して、パイプラインの Jaeger Collector などのバッキングリモートサンプリングサーバーに、またはローカルファイルシステムから静的 JSON ファイルにリクエストをプロキシーできます。
設定された Jaeger Remote Sampling エクステンションを備えた 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: otlp: service: extensions: [jaegerremotesampling] pipelines: traces: receivers: [otlp] exporters: [otlp]
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 } ] } }
3.1.1.7.4. パフォーマンスプロファイラーエクステンション
Performance Profiler エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
Performance Profiler エクステンションにより、Go net/http/pprof
エンドポイントが有効になります。これは通常、開発者がパフォーマンスプロファイルを収集し、サービスの問題を調査するために使用されます。
Performance Profiler エクステンションが設定された 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: otlp: service: extensions: [pprof] pipelines: traces: receivers: [otlp] exporters: [otlp]
- 1
- このエクステンションがリッスンするエンドポイント。
localhost:
を使用してローカルでのみ使用できるようにするか、":"
を使用してすべてのネットワークインターフェイスで使用できるようにします。デフォルト値はlocalhost:1777
です。 - 2
- ブロッキングイベントの一部がプロファイリングされるように設定します。プロファイリングを無効にするには、これを
0
または負の整数に設定します。runtime
パッケージについては、ドキュメント を参照してください。デフォルト値は0
です。 - 3
- プロファイリングされるミューテックス競合イベントの一部を設定します。プロファイリングを無効にするには、これを
0
または負の整数に設定します。runtime
パッケージについては、ドキュメント を参照してください。デフォルト値は0
です。 - 4
- CPU プロファイルを保存するファイルの名前。Collector が起動すると、プロファイリングが開始されます。プロファイリングは、Collector の終了時にファイルに保存されます。
3.1.1.7.5. ヘルスチェックエクステンション
Health Check エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
Health Check エクステンションは、OpenTelemetry Collector のステータスをチェックするための HTTP URL を提供します。このエクステンションは、OpenShift の liveness および readiness プローブとして使用できます。
ヘルスチェックエクステンションが設定された 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: otlp: service: extensions: [health_check] pipelines: traces: receivers: [otlp] exporters: [otlp]
- 1
- ヘルスチェックステータスを公開するためのターゲット IP アドレス。デフォルトは
0.0.0.0:13133
です。 - 2
- TLS サーバー側の設定。TLS 証明書へのパスを定義します。省略した場合、TLS は無効になります。
- 3
- ヘルスチェックサーバーのパス。デフォルトは
/
です。 - 4
- Collector パイプラインのヘルスチェック用の設定。
- 5
- Collector パイプラインのヘルスチェックを有効にします。デフォルトは
false
です。 - 6
- 失敗数を確認する時間間隔。デフォルトは
5m
です。 - 7
- コンテナーが依然として正常であるとマークされる失敗の数のしきい値。デフォルトは
5
です。
3.1.1.7.6. Memory Ballast エクステンション
Memory Ballast エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
Memory Ballast エクステンションを使用すると、アプリケーションはプロセスのメモリーバラストを設定できます。
Memory Ballast エクステンションが設定された OpenTelemetry Collector カスタムリソース
config: | extensions: memory_ballast: size_mib: 64 1 size_in_percentage: 20 2 receivers: otlp: protocols: http: exporters: otlp: service: extensions: [memory_ballast] pipelines: traces: receivers: [otlp] exporters: [otlp]
3.1.1.7.7. zPages エクステンション
zPages エクステンションは現在、テクノロジープレビュー 機能のみとなっています。
zPages エクステンションは、zPages を提供するエクステンションに HTTP エンドポイントを提供します。エンドポイントでは、このエクステンションは、インストルメントされたコンポーネントをデバッグするためのライブデータを提供します。すべてのコアエクスポーターとレシーバーは、一部の zPages インストルメンテーションを提供します。
zPages は、トレースやメトリクスを調べるためにバックエンドに依存する必要がなく、プロセス内診断に役立ちます。
zPages エクステンションが設定された OpenTelemetry Collector カスタムリソース
config: |
extensions:
zpages:
endpoint: "localhost:55679" 1
receivers:
otlp:
protocols:
http:
exporters:
otlp:
service:
extensions: [zpages]
pipelines:
traces:
receivers: [otlp]
exporters: [otlp]
- 1
- zPages を提供する HTTP エンドポイントを指定します。
localhost:
を使用してローカルでのみ使用できるようにするか、":"
を使用してすべてのネットワークインターフェイスで使用できるようにします。デフォルトはlocalhost:55679
です。