3.2. レシーバー
レシーバーはデータを Collector に入れます。レシーバーはプッシュベースまたはプルベースにすることができます。通常、レシーバーは指定された形式のデータを受け入れて内部形式に変換し、それを適用可能なパイプラインで定義されるプロセッサーおよびエクスポーターに渡します。デフォルトでは、レシーバーは設定されていません。1 つまたは複数のレシーバーを設定する必要があります。レシーバーは 1 つまたは複数のデータソースをサポートする場合があります。
現在、Red Hat build of OpenTelemetry では、次の一般提供およびテクノロジープレビューのレシーバーが利用可能です。
3.2.1. OTLP Receiver
OTLP Receiver は、OpenTelemetry Protocol (OTLP) を使用してトレース、メトリクス、およびログを取り込みます。OTLP Receiver は、OpenTelemetry Protocol (OTLP) を使用してトレースとメトリクスを取り込みます。
OTLP Receiver が有効になっている OpenTelemetry Collector カスタムリソース
... ...
# ...
config:
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317
tls:
ca_file: ca.pem
cert_file: cert.pem
key_file: key.pem
client_ca_file: client.pem
reload_interval: 1h
http:
endpoint: 0.0.0.0:4318
tls: {}
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.2.2. Jaeger Receiver
Jaeger Receiver は、Jaeger 形式でトレースを取り込みます。
Jaeger Receiver が有効になっている OpenTelemetry Collector カスタムリソース
... ...
# ...
config:
receivers:
jaeger:
protocols:
grpc:
endpoint: 0.0.0.0:14250
thrift_http:
endpoint: 0.0.0.0:14268
thrift_compact:
endpoint: 0.0.0.0:6831
thrift_binary:
endpoint: 0.0.0.0:6832
tls: {}
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 Receiver 設定セクションを参照してください。
3.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 initial_delay: 1s root_path: / scrapers: cpu: {} memory: {} disk: {} service: pipelines: metrics: receivers: [hostmetrics] # ...
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
initial_delay: 1s
root_path: /
scrapers:
cpu: {}
memory: {}
disk: {}
service:
pipelines:
metrics:
receivers: [hostmetrics]
# ...
- 1
- ホストメトリクス収集の時間間隔を設定します。省略した場合、デフォルト値は
1m
です。 - 2
- ホストメトリクス収集の初期時間遅延を設定します。省略した場合、デフォルト値は
1s
です。 - 3
- Host Metrics Receiver がルートファイルシステムの場所を認識できるように、
root_path
を設定します。Host Metrics Receiver のインスタンスを複数実行する場合は、各インスタンスに同じroot_path
値を設定します。 - 4
- 有効なホストメトリクススクレーパーをリストします。使用可能なスクレーパーは、
cpu
、disk
、load
、filesystem
、memory
、network
、paging
、processes
、およびprocess
です。
3.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 mode: pull interval: 30s label_selector: field_selector: namespaces: [<namespace>,...] - name: events mode: watch exporters: debug: service: pipelines: logs: receivers: [k8sobjects] exporters: [debug] # ...
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
mode: pull
interval: 30s
label_selector:
field_selector:
namespaces: [<namespace>,...]
- name: events
mode: watch
exporters:
debug:
service:
pipelines:
logs:
receivers: [k8sobjects]
exporters: [debug]
# ...
3.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
valueFrom:
fieldRef:
fieldPath: spec.nodeName
# ...
- 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"] verbs: ["get"] # ...
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"]
verbs: ["get"]
# ...
- 1
extra_metadata_labels
またはrequest_utilization
またはlimit_utilization
メトリクスを使用するときに必要な権限。
3.2.6. Prometheus Receiver
Prometheus Receiver はメトリクスエンドポイントをスクレイプします。
Prometheus Receiver はテクノロジープレビューのみの機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Prometheus Receiver が有効になっている OpenTelemetry Collector カスタムリソース
... ...
# ...
config:
receivers:
prometheus:
config:
scrape_configs:
- job_name: 'my-app'
scrape_interval: 5s
static_configs:
- targets: ['my-app.example.svc.cluster.local:8888']
service:
pipelines:
metrics:
receivers: [prometheus]
# ...
3.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"
exclude:
- "/var/log/test.log"
# ...
3.2.8. Zipkin Receiver
Zipkin Receiver は、Zipkin v1 および v2 形式でトレースを取り込みます。
Zipkin Receiver が有効になっている OpenTelemetry Collector カスタムリソース
... ...
# ...
config:
receivers:
zipkin:
endpoint: 0.0.0.0:9411
tls: {}
service:
pipelines:
traces:
receivers: [zipkin]
# ...
3.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"]
protocol_version: 2.0.0
topic: otlp_spans
auth:
plain_text:
username: example
password: example
tls:
ca_file: ca.pem
cert_file: cert.pem
key_file: key.pem
insecure: false
server_name_override: kafka.example.corp
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.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]
# ...
このレシーバーには、設定済みのサービスアカウント、クラスターロールの RBAC ルール、および RBAC をサービスアカウントにバインドするクラスターロールバインディングが必要です。
ServiceAccount
オブジェクト
apiVersion: v1 kind: ServiceAccount metadata: labels: app: otelcontribcol name: otelcontribcol # ...
apiVersion: v1
kind: ServiceAccount
metadata:
labels:
app: otelcontribcol
name: otelcontribcol
# ...
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 # ...
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
# ...
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 # ...
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
# ...
3.2.11. OpenCensus Receiver
OpenCensus Receiver は、OpenCensus プロジェクトとの下位互換性を提供し、計装済みのコードベースの移行を容易にします。gRPC または HTTP および Json を介して OpenCensus 形式でメトリクスとトレースを受信します。
OpenCensus Receiver が有効になっている OpenTelemetry Collector カスタムリソース
... ...
# ...
config:
receivers:
opencensus:
endpoint: 0.0.0.0:9411
tls:
cors_allowed_origins:
- https://*.<example>.com
service:
pipelines:
traces:
receivers: [opencensus]
# ...
3.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 ]
operators:
- 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
# ...
3.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 units: - kubelet - crio - init.scope - dnsmasq all: true retry_on_failure: enabled: true initial_interval: 1s max_interval: 30s max_elapsed_time: 5m 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 # ...
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
units:
- kubelet
- crio
- init.scope
- dnsmasq
all: true
retry_on_failure:
enabled: true
initial_interval: 1s
max_interval: 30s
max_elapsed_time: 5m
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
# ...
- 1
- メッセージの優先度または優先度の範囲で出力をフィルタリングします。デフォルト値は
info
です。 - 2
- エントリーの読み取り元のユニットをリストします。空の場合、すべてのユニットからエントリーが読み取られます。
- 3
- 非常に長いログや出力できない文字を含むログを含めます。デフォルト値は
false
です。 - 4
true
に設定すると、ダウンストリームのコンポーネントからエラーが発生した場合に、レシーバーがファイルの読み取りを一時停止し、現在のログのバッチを再送信しようとします。デフォルト値はfalse
です。- 5
- 最初の失敗から再試行するまで待機する時間の間隔。デフォルト値は
1s
です。単位はms
、s
、m
、h
です。 - 6
- 再試行バックオフ間隔の上限。この値に達すると、その後の再試行間の間隔がこの値で一定に保たれます。デフォルト値は
30s
です。サポートされている単位はms
、s
、m
、h
です。 - 7
- ログバッチをダウンストリームのコンシューマーに送信する試行の最大時間間隔 (再試行を含む)。この値に達すると、データが破棄されます。設定値が
0
の場合、再試行が停止しません。デフォルト値は5m
です。サポートされている単位はms
、s
、m
、h
です。
3.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 # ...
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
# ...
Kubernetes Event Receiver が有効になっている OpenTelemetry Collector カスタムリソース
... ...
# ...
serviceAccount: otel-collector
config:
receivers:
k8s_events:
namespaces: [project1, project2]
service:
pipelines:
logs:
receivers: [k8s_events]
# ...
3.2.15. 関連情報
- OpenTelemetry Protocol (OTLP) (OpenTelemetry ドキュメント)