第 4 章 配置 Collector
4.1. 配置 Collector 复制链接链接已复制到粘贴板!
红帽构建的 OpenTelemetry Operator 使用自定义资源定义(CRD)文件来定义创建和部署分布式追踪平台 (Tempo) 资源时要使用的架构和配置设置。您可以安装默认配置或修改该文件。
4.1.1. 部署模式 复制链接链接已复制到粘贴板!
OpenTelemetryCollector 自定义资源允许您为 OpenTelemetry Collector 指定以下部署模式之一:
- Deployment
- 默认值。
- StatefulSet
- 如果您需要运行有状态工作负载,例如使用 Collector 的 File Storage Extension 或 Tail Sampling Processor 时,请使用 StatefulSet 部署模式。
- DaemonSet
- 如果您需要从每个节点中提取遥测数据,例如使用 Collector 的 Filelog Receiver 来读取容器日志,请使用 DaemonSet 部署模式。
- Sidecar
如果您需要访问容器内的日志文件,请将 Collector 注入 sidecar,并使用 Collector 的 Filelog Receiver 和共享卷,如
emptyDir。如果您需要将应用程序配置为通过
localhost发送遥测数据,请将 Collector 注入 sidecar,并设置 Collector 通过加密和经过身份验证的连接将遥测数据转发到外部服务。当作为 sidecar 注入时,Collector 会与应用程序在同一 pod 中运行。注意如果选择 sidecar 部署模式,那么除了在
OpenTelemetryCollector自定义资源 CR 中设置spec.mode: sidecar字段外,还必须将sidecar.opentelemetry.io/inject注解设置为 pod 注解或命名空间注解。如果在 pod 和命名空间上设置了此注解,如果 pod 注解被设置为false或OpenTelemetryCollectorCR 名称,则 pod 注解会优先使用。作为 pod 注解,
sidecar.opentelemetry.io/inject注解支持几个值:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 支持的值:
false- 不要注入 Collector。如果缺少注解,则这是默认设置。
true-
使用同一命名空间中的
OpenTelemetryCollectorCR 配置注入 Collector。 <collector_name>-
使用同一命名空间中的 <
collector_name>OpenTelemetryCollectorCR 配置注入 Collector。 <namespace>/<collector_name>-
使用 <
namespace> 命名空间中的<collector_name>OpenTelemetryCollectorCR 配置注入 Collector。
4.1.2. OpenTelemetry Collector 配置选项 复制链接链接已复制到粘贴板!
OpenTelemetry Collector 由访问遥测数据的一组组件组成:
- Receivers
- Processors
- Exporters
- 连接器
- 扩展
您可以在自定义资源 YAML 文件中定义多个组件实例。配置后,必须通过 YAML 文件的 spec.config.service 部分中定义的管道启用这些组件。作为最佳实践,仅启用您需要的组件。
OpenTelemetry Collector 自定义资源文件示例
- 1
- 如果一个组件被配置但没有在
service部分中定义,则组件不会被启用。
| 参数 | 描述 | 值 | default |
|---|---|---|---|
receivers:
| 接收器用于控制数据如何进入 Collector。默认情况下,不会配置接收器。必须至少有一个启用的接收器才能使配置被视为有效。接收器通过添加到管道中来启用。 |
| None |
processors:
| 处理器在导出前会处理接收的数据。默认情况下,不启用处理器。 |
| None |
exporters:
| 导出器将数据发送到一个或多个后端或目的地。默认情况下,不会配置导出器。必须至少启用了一个 exporter 时,配置才被视为有效。将导出器添加到管道中即可启用。导出器可能会与其默认设置一起使用,但很多需要配置至少指定目标和安全设置。 |
| None |
connectors:
| 连接器通过将数据作为管道导出器来加入管道对,并将数据作为 Start-of-pipeline 接收器发送。连接器可用于总结、复制或路由消耗的数据。 |
| 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 |
4.1.3. 自动创建所需的 RBAC 资源 复制链接链接已复制到粘贴板!
有些 Collector 组件需要配置 RBAC 资源。
流程
在
opentelemetry-operator-controller-manage服务帐户中添加以下权限,以便红帽构建的 OpenTelemetry Operator 可以自动创建它们:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.1.4. 目标分配器 复制链接链接已复制到粘贴板!
目标分配器是 OpenTelemetry Operator 的一个可选组件,它会在部署的 OpenTelemetry Collector 实例间分片提取目标。目标分配器与 Prometheus PodMonitor 和 ServiceMonitor 自定义资源 (CR) 集成。启用目标分配器时,OpenTelemetry Operator 会将 http_sd_config 字段添加到连接到目标分配器服务的启用的 prometheus 接收器。
目标分配器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
带有启用的 Target Allocator 的 OpenTelemetryCollector CR 示例
- 1
- 启用 Target Allocator 时,部署模式必须设置为
statefulset。 - 2
- 启用目标分配器。默认值为
false。 - 3
- Target Allocator 部署的服务帐户名称。服务帐户需要具有 RBAC 才能从集群中获取
ServiceMonitor、PodMonitor自定义资源和其他对象,以便在提取的指标上正确设置标签。默认服务名称为<collector_name>-targetallocator。 - 4
- 启用与 Prometheus
PodMonitor和ServiceMonitor自定义资源集成。 - 5
- Prometheus
ServiceMonitor自定义资源的标签选择器。当留空时,请启用所有服务监视器。 - 6
- Prometheus
PodMonitor自定义资源的标签选择器。留空时,启用所有 pod 监视器。 - 7
- Prometheus 接收器带有 minimal, empty
scrape_config: []配置选项。
Target Allocator 部署使用 Kubernetes API 从集群中获取相关对象,因此它需要自定义 RBAC 配置。
目标 Allocator 服务帐户的 RBAC 配置