配置 OBI Prometheus 和 OpenTelemetry 数据导出
OBI 可以将 OpenTelemetry 指标和追踪导出到 OTLP 端点。
通用指标配置
YAML 部分:metrics。
metrics 部分包含 OpenTelemetry 指标和追踪导出器的通用配置。
它目前支持选择要导出的不同指标集。
示例
metrics:
features: ['network', 'network_inter_zone']
| YAML 环境变量 | 描述 | 类型 | 默认值 |
|---|---|---|---|
featuresOTEL_EBPF_METRICS_FEATURES | OBI 导出数据的指标组列表,请参阅 指标导出功能。可接受的值有 application、application_span、application_host、application_service_graph、network 和 network_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 环境变量 | 描述 | 类型 | 默认值 |
|---|---|---|---|
endpointOTEL_EXPORTER_OTLP_METRICS_ENDPOINT | OBI 发送指标的目标端点。 | URL | |
OTEL_EXPORTER_OTLP_ENDPOINT | 指标和追踪导出器的共享端点。OBI 在发送指标时,会按照 OpenTelemetry 标准在 URL 末尾添加 /v1/metrics 路径。要阻止此行为,请使用特定于指标的设置。 | URL | |
protocolOTEL_EXPORTER_OTLP_METRICS_PROTOCOL | OpenTelemetry 端点的传输/编码协议,请参阅 指标导出协议。 可接受的值 包括 http/json、http/protobuf 和 grpc。 | 字符串 | 根据端口使用情况推断 |
OTEL_EXPORTER_OTLP_PROTOCOL | 与共享端点类似,用于指标和追踪的协议。 | 字符串 | 根据端口使用情况推断 |
insecure_skip_verifyOTEL_EBPF_INSECURE_SKIP_VERIFY | 如果设置为 true,OBI 将跳过验证并接受任何服务器证书。仅在非生产环境中使用此设置。 | 布尔值 | false |
intervalOTEL_EBPF_METRICS_INTERVAL | 两次导出之间的时间间隔。 | Duration | 60s |
allow_service_graph_self_referencesOTEL_EBPF_ALLOW_SERVICE_GRAPH_SELF_REFERENCES | 控制 OBI 是否在服务图生成中包含自引用的服务,例如调用自身的同一个服务。自引用会降低服务图的可用性并增加数据基数。 | 布尔值 | false |
instrumentationsOTEL_EBPF_METRICS_INSTRUMENTATIONS | OBI 收集数据的指标检测列表,请参阅 指标检测 部分。 | 字符串列表 | ["*"] |
buckets | 设置如何覆盖各种直方图的存储桶边界,请参阅 覆盖直方图存储桶。 | (N/A) | Object |
histogram_aggregationOTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION | 设置 OBI 用于直方图仪器的默认聚合。可接受的值为 explicit_bucket_histogram 或 base2_exponential_bucket_histogram。 | 字符串 | explicit_bucket_histogram |
指标导出协议
如果您不设置协议,OBI 会按以下方式设置协议:
grpc:如果端口以4317结尾,例如4317、14317或24317。http/protobuf:如果端口以4318结尾,例如4318、14318或24318。
指标检测
OBI 可以从以下检测领域收集数据:
*:所有检测,如果存在*,OBI 将忽略其他值。http:HTTP/HTTPS/HTTP/2 应用程序指标。grpc:gRPC 应用程序指标。sql:SQL 数据库客户端调用指标。redis:Redis 客户端/服务器数据库指标。kafka:Kafka 客户端/服务器消息队列指标。
例如,将 instrumentations 选项设置为:http,grpc 将启用 HTTP/HTTPS/HTTP2 和 gRPC 应用程序指标的收集,并禁用其他检测。
OpenTelemetry 追踪导出器组件
YAML 部分:otel_traces_export
您可以在 YAML 配置的 otel_traces_export 部分或通过环境变量配置此组件。
除了本文档中记录的配置外,该组件还支持来自 标准 OpenTelemetry 导出器配置 的环境变量。
otel_traces_export:
endpoint: http://jaeger:4317
protocol: grpc
instrumentations: ["http, "sql"]
| YAML 环境变量 | 描述 | 类型 | 默认值 |
|---|---|---|---|
endpointOTEL_EXPORTER_OTLP_TRACES_ENDPOINTOTEL_EXPORTER_OTLP_ENDPOINT | OBI 发送追踪的目标端点。当使用 OTEL_EXPORTER_OTLP_ENDPOINT 时,OBI 会遵循 OpenTelemetry 标准并自动在 URL 末尾添加 /v1/traces 路径。如果您不希望发生这种情况,请使用特定于追踪的设置。 | URL | |
protocolOTEL_EXPORTER_OTLP_TRACES_PROTOCOLOTEL_EXPORTER_OTLP_PROTOCOL | OpenTelemetry 端点的传输/编码协议,请参阅 追踪导出协议。 可接受的值 包括 http/json、http/protobuf 和 grpc。 | 字符串 | 根据端口使用情况推断 |
insecure_skip_verifyOTEL_EBPF_INSECURE_SKIP_VERIFY | 如果设置为 true,OBI 将跳过验证并接受任何服务器证书。仅在非生产环境中使用此设置。 | 布尔值 | false |
instrumentationsOTEL_EBPF_TRACES_INSTRUMENTATIONS | OBI 收集数据的检测列表,请参阅 追踪检测 部分。 | 字符串列表 | ["*"] |
追踪导出协议
如果您不设置协议,OBI 会按以下方式设置协议:
grpc:如果端口以4317结尾,例如4317、14317或24317。http/protobuf:如果端口以4318结尾,例如4318、14318或24318。
追踪检测
OBI 可以从以下检测领域收集数据:
*:所有检测,如果存在*,OBI 将忽略其他值。http:HTTP/HTTPS/HTTP/2 应用程序追踪。grpc:gRPC 应用程序追踪。sql:SQL 数据库客户端调用追踪。redis:Redis 客户端/服务器数据库追踪。kafka:Kafka 客户端/服务器消息队列追踪。
例如,将 instrumentations 选项设置为:http,grpc 将启用 HTTP/HTTPS/HTTP2 和 gRPC 应用程序追踪的收集,并禁用其他检测。
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 环境变量 | 描述 | 类型 | 默认值 |
|---|---|---|---|
portOTEL_EBPF_PROMETHEUS_PORT | Prometheus 抓取端点的 HTTP 端口。如果未设置或为 0,则不打开 Prometheus 端点。 | int | |
pathOTEL_EBPF_PROMETHEUS_PATH | 用于获取 Prometheus 指标列表的 HTTP 查询路径。 | 字符串 | /metrics |
extra_resource_attributesOTEL_EBPF_PROMETHEUS_EXTRA_RESOURCE_ATTRIBUTES | 添加到报告的 target_info 指标中的额外资源属性列表。有关运行时发现的属性的重要详细信息,请参阅 额外资源属性。 | 字符串列表 | |
ttlOTEL_EBPF_PROMETHEUS_TTL | 指标实例在未更新后的多长时间内不再报告。用于避免无限期报告已完成的应用程序实例。 | Duration | 5m |
buckets | 设置如何覆盖各种直方图的存储桶边界,请参阅 覆盖直方图存储桶。 | Object | |
allow_service_graph_self_referencesOTEL_EBPF_PROMETHEUS_ALLOW_SERVICE_GRAPH_SELF_REFERENCES | OBI 是否在服务图生成中包含自引用的服务。自引用对服务图没有用处,并增加了数据基数。 | 布尔值 | false |
instrumentationsOTEL_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/HTTP2 和 gRPC 应用程序指标的收集,并禁用其他检测。