配置 OBI Prometheus 和 OpenTelemetry 数据导出

配置 OBI 组件以导出 Prometheus 和 OpenTelemetry 指标以及 OpenTelemetry 追踪

OBI 可以将 OpenTelemetry 指标和追踪导出到 OTLP 端点。

通用指标配置

YAML 部分:metrics

metrics 部分包含 OpenTelemetry 指标和追踪导出器的通用配置。

它目前支持选择要导出的不同指标集。

示例

metrics:
  features: ['network', 'network_inter_zone']
YAML
环境变量
描述类型默认值
features
OTEL_EBPF_METRICS_FEATURES
OBI 导出数据的指标组列表,请参阅 指标导出功能。可接受的值有 applicationapplication_spanapplication_hostapplication_service_graphnetworknetwork_inter_zone字符串列表["application"]

指标导出功能

OBI 指标导出器可以为匹配 指标发现 配置中的条目的进程导出以下指标数据组。

  • application:应用程序级别指标。
  • application_host:应用程序级别的主机指标,用于基于主机的定价。
  • application_span:应用程序级别的追踪 span 指标(旧格式,如 traces_spanmetrics_latency);spanmetrics 不单独存在。
  • application_span_otel:应用程序级别的追踪 span 指标(OpenTelemetry 格式,如 traces_span_metrics_calls_total);span_metrics 单独存在。
  • application_span_sizes:应用程序级别的追踪 span 指标,报告请求和响应大小的信息。
  • application_service_graph:应用程序级别的服务图指标。建议使用 DNS 进行服务发现,并确保 DNS 名称与 OBI 使用的 OpenTelemetry 服务名称匹配。在 Kubernetes 环境中,通过服务名称发现设置的 OpenTelemetry 服务名称是服务图指标的最佳选择。
  • network:网络级别指标,请参阅 网络指标 配置文档了解更多。
  • network_inter_zone:网络跨区域指标,请参阅 网络指标 配置文档了解更多。

OpenTelemetry 指标导出器组件

YAML 部分:otel_metrics_export

通过在配置文件中设置 endpoint 属性或通过环境变量启用 OpenTelemetry 指标导出组件,请参阅 指标导出配置选项

在 YAML 配置的 otel_metrics_export 部分或通过环境变量配置此组件。

除了本文档中记录的配置外,该组件还支持来自 标准 OpenTelemetry 导出器配置 的环境变量。

例如

otel_metrics_export:
  ttl: 5m
  endpoint: http://otelcol:4318
  protocol: grpc
  buckets:
    duration_histogram: [0, 1, 2]
  histogram_aggregation: base2_exponential_bucket_histogram
YAML
环境变量
描述类型默认值
endpoint
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
OBI 发送指标的目标端点。URL
OTEL_EXPORTER_OTLP_ENDPOINT指标和追踪导出器的共享端点。OBI 在发送指标时,会按照 OpenTelemetry 标准在 URL 末尾添加 /v1/metrics 路径。要阻止此行为,请使用特定于指标的设置。URL
protocol
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
OpenTelemetry 端点的传输/编码协议,请参阅 指标导出协议可接受的值 包括 http/jsonhttp/protobufgrpc字符串根据端口使用情况推断
OTEL_EXPORTER_OTLP_PROTOCOL与共享端点类似,用于指标和追踪的协议。字符串根据端口使用情况推断
insecure_skip_verify
OTEL_EBPF_INSECURE_SKIP_VERIFY
如果设置为 true,OBI 将跳过验证并接受任何服务器证书。仅在非生产环境中使用此设置。布尔值false
interval
OTEL_EBPF_METRICS_INTERVAL
两次导出之间的时间间隔。Duration60s
allow_service_graph_self_references
OTEL_EBPF_ALLOW_SERVICE_GRAPH_SELF_REFERENCES
控制 OBI 是否在服务图生成中包含自引用的服务,例如调用自身的同一个服务。自引用会降低服务图的可用性并增加数据基数。布尔值false
instrumentations
OTEL_EBPF_METRICS_INSTRUMENTATIONS
OBI 收集数据的指标检测列表,请参阅 指标检测 部分。字符串列表["*"]
buckets设置如何覆盖各种直方图的存储桶边界,请参阅 覆盖直方图存储桶(N/A)Object
histogram_aggregation
OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION
设置 OBI 用于直方图仪器的默认聚合。可接受的值为 explicit_bucket_histogrambase2_exponential_bucket_histogram字符串explicit_bucket_histogram

指标导出协议

如果您不设置协议,OBI 会按以下方式设置协议:

  • grpc:如果端口以 4317 结尾,例如 43171431724317
  • http/protobuf:如果端口以 4318 结尾,例如 43181431824318

指标检测

OBI 可以从以下检测领域收集数据:

  • *:所有检测,如果存在 *,OBI 将忽略其他值。
  • http:HTTP/HTTPS/HTTP/2 应用程序指标。
  • grpc:gRPC 应用程序指标。
  • sql:SQL 数据库客户端调用指标。
  • redis:Redis 客户端/服务器数据库指标。
  • kafka:Kafka 客户端/服务器消息队列指标。

例如,将 instrumentations 选项设置为:http,grpc 将启用 HTTP/HTTPS/HTTP2gRPC 应用程序指标的收集,并禁用其他检测。

OpenTelemetry 追踪导出器组件

YAML 部分:otel_traces_export

您可以在 YAML 配置的 otel_traces_export 部分或通过环境变量配置此组件。

除了本文档中记录的配置外,该组件还支持来自 标准 OpenTelemetry 导出器配置 的环境变量。

otel_traces_export:
  endpoint: http://jaeger:4317
  protocol: grpc
  instrumentations: ["http, "sql"]
YAML
环境变量
描述类型默认值
endpoint
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
OTEL_EXPORTER_OTLP_ENDPOINT
OBI 发送追踪的目标端点。当使用 OTEL_EXPORTER_OTLP_ENDPOINT 时,OBI 会遵循 OpenTelemetry 标准并自动在 URL 末尾添加 /v1/traces 路径。如果您不希望发生这种情况,请使用特定于追踪的设置。URL
protocol
OTEL_EXPORTER_OTLP_TRACES_PROTOCOL
OTEL_EXPORTER_OTLP_PROTOCOL
OpenTelemetry 端点的传输/编码协议,请参阅 追踪导出协议可接受的值 包括 http/jsonhttp/protobufgrpc字符串根据端口使用情况推断
insecure_skip_verify
OTEL_EBPF_INSECURE_SKIP_VERIFY
如果设置为 true,OBI 将跳过验证并接受任何服务器证书。仅在非生产环境中使用此设置。布尔值false
instrumentations
OTEL_EBPF_TRACES_INSTRUMENTATIONS
OBI 收集数据的检测列表,请参阅 追踪检测 部分。字符串列表["*"]

追踪导出协议

如果您不设置协议,OBI 会按以下方式设置协议:

  • grpc:如果端口以 4317 结尾,例如 43171431724317
  • http/protobuf:如果端口以 4318 结尾,例如 43181431824318

追踪检测

OBI 可以从以下检测领域收集数据:

  • *:所有检测,如果存在 *,OBI 将忽略其他值。
  • http:HTTP/HTTPS/HTTP/2 应用程序追踪。
  • grpc:gRPC 应用程序追踪。
  • sql:SQL 数据库客户端调用追踪。
  • redis:Redis 客户端/服务器数据库追踪。
  • kafka:Kafka 客户端/服务器消息队列追踪。

例如,将 instrumentations 选项设置为:http,grpc 将启用 HTTP/HTTPS/HTTP2gRPC 应用程序追踪的收集,并禁用其他检测。

Prometheus 导出器组件

YAML 部分:prometheus_export

您可以在 YAML 配置的 prometheus_export 部分或通过环境变量配置此组件。此组件将在自动检测工具中打开一个 HTTP 端点,允许任何外部抓取器以 Prometheus 格式拉取指标。如果设置了 port 属性,则启用该组件。

prometheus_export:
  port: 8999
  path: /metrics
  extra_resource_attributes: ["deployment_environment"]
  ttl: 1s
  buckets:
    request_size_histogram: [0, 10, 20, 22]
    response_size_histogram: [0, 10, 20, 22]
  instrumentations: ["http, "sql"]
YAML
环境变量
描述类型默认值
port
OTEL_EBPF_PROMETHEUS_PORT
Prometheus 抓取端点的 HTTP 端口。如果未设置或为 0,则不打开 Prometheus 端点。int
path
OTEL_EBPF_PROMETHEUS_PATH
用于获取 Prometheus 指标列表的 HTTP 查询路径。字符串/metrics
extra_resource_attributes
OTEL_EBPF_PROMETHEUS_EXTRA_RESOURCE_ATTRIBUTES
添加到报告的 target_info 指标中的额外资源属性列表。有关运行时发现的属性的重要详细信息,请参阅 额外资源属性字符串列表
ttl
OTEL_EBPF_PROMETHEUS_TTL
指标实例在未更新后的多长时间内不再报告。用于避免无限期报告已完成的应用程序实例。Duration5m
buckets设置如何覆盖各种直方图的存储桶边界,请参阅 覆盖直方图存储桶Object
allow_service_graph_self_references
OTEL_EBPF_PROMETHEUS_ALLOW_SERVICE_GRAPH_SELF_REFERENCES
OBI 是否在服务图生成中包含自引用的服务。自引用对服务图没有用处,并增加了数据基数。布尔值false
instrumentations
OTEL_EBPF_PROMETHEUS_INSTRUMENTATIONS
OBI 收集数据的检测列表,请参阅 Prometheus 检测 部分。字符串列表["*"]

Prometheus 额外资源属性

由于 Prometheus API 客户端的内部限制,OBI 需要提前知道每个指标暴露了哪些属性。这将导致一些在运行时通过检测发现的属性默认不可见。例如,在 Kubernetes 注释或目标应用程序的 OTEL_RESOURCE_ATTRIBUTES 环境变量中定义的属性。如果指标通过 Prometheus 导出,则无法默认可见。

例如,如果应用程序通过环境变量定义了 OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production,那么如果指标通过 OpenTelemetry 导出,target_info{deployment.environment="production"} 属性将默认可见,但如果通过 Prometheus 导出,则不可见。

为了使 deployment_environment 在 Prometheus 中可见,您需要将其添加到 extra_resource_attributes 列表中。

Prometheus 检测

OBI 可以从以下检测领域收集数据:

  • *:所有检测,如果存在 *,OBI 将忽略其他值。
  • http:HTTP/HTTPS/HTTP/2 应用程序指标。
  • grpc:gRPC 应用程序指标。
  • sql:SQL 数据库客户端调用指标。
  • redis:Redis 客户端/服务器数据库指标。
  • kafka:Kafka 客户端/服务器消息队列指标。

例如,将 instrumentations 选项设置为:http,grpc 将启用 HTTP/HTTPS/HTTP2gRPC 应用程序指标的收集,并禁用其他检测。