配置 Beyla Prometheus 和 OpenTelemetry 数据导出
Beyla 可以将 OpenTelemetry 指标和链路追踪导出到 OTLP 端点。
要将指标直接发送到 Grafana Cloud OpenTelemetry 端点,请参阅Grafana Cloud OTLP 端点配置。
Grafana Cloud OTLP 端点
您可以在顶级 YAML 部分的 grafana
下配置该组件,或者在 otlp
子部分下配置,也可以通过环境变量进行配置。您可以使用自定义变量将 Beyla 配置为向 Grafana Cloud OTEL 端点提交 OpenTelemetry 数据,从而简化端点和身份验证的设置。
例如
grafana:
otlp:
cloud_zone: prod-eu-west-0
cloud_instance_id: 123456
您还可以使用标准 OpenTelemetry 变量将指标和链路追踪提交到任何标准 OpenTelemetry 端点,包括 Grafana Cloud。
小写 YAML 选项 大写环境变量选项 | 描述 | 类型 | 默认值 |
---|---|---|---|
cloud_submit GRAFANA_CLOUD_SUBMIT | 要提交到 OTLP 端点的数据类型列表。接受 metrics 和 traces 作为值。 | 字符串 | traces |
cloud_zone GRAFANA_CLOUD_ZONE | 您的 Grafana 端点云区域,用于组成 Grafana OTLP URL。有关端点覆盖的重要详细信息,请参阅云区域配置。 | 字符串 | |
cloud_instance_id GRAFANA_CLOUD_INSTANCE_ID | 您的 Grafana 用户名。通常是数字,但在 YAML 文件中必须设置为字符串。 | 字符串 | |
cloud_api_key GRAFANA_CLOUD_API_KEY | 您的 Grafana Cloud 账户的 API 密钥。 | 字符串 |
云区域配置
如果定义了 OTEL_EXPORTER_OTLP_ENDPOINT
、OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
或 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT
变量中的任何一个,它们将覆盖目标端点,并且 Beyla 将忽略 cloud_zone
配置选项。
OpenTelemetry 指标导出组件
通过在配置文件中或通过环境变量设置 endpoint 属性来启用 OpenTelemetry 指标导出组件,请参阅指标导出配置选项。
在 YAML 配置文件的 otel_metrics_export
部分下或通过环境变量配置该组件。
除了本文档中记录的配置外,该组件还支持标准 OpenTelemetry 导出器配置中的环境变量。
Beyla 在 YAML 配置中使用小写字段,在环境变量配置中使用大写名称。
小写 YAML 选项 大写环境变量选项 | 描述 | 类型 | 默认值 |
---|---|---|---|
endpoint OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Beyla 发送指标的端点。 | URL | |
OTEL_EXPORTER_OTLP_ENDPOINT | 用于指标和链路追踪导出器的共享端点。Beyla 在发送指标时,会按照 OpenTelemetry 标准向 URL 添加 /v1/metrics 路径。要阻止此行为,请使用指标专用的设置。 | URL | |
protocol OTEL_EXPORTER_OTLP_METRICS_PROTOCOL | OpenTelemetry 端点的协议传输/编码,请参阅指标导出协议。接受的值包括 http/json 、http/protobuf 和 grpc 。 | 字符串 | 从端口使用推断 |
OTEL_EXPORTER_OTLP_PROTOCOL | 与共享端点类似,这是指标和链路追踪的协议。 | 字符串 | 从端口使用推断 |
insecure_skip_verify BEYLA_OTEL_INSECURE_SKIP_VERIFY | 如果设置为 true ,Beyla 会跳过验证并接受任何服务器证书。仅在非生产环境中覆盖此设置。 | 布尔值 | false |
interval BEYLA_METRICS_INTERVAL | 导出之间的持续时间。 | 持续时间 | 60s |
features BEYLA_OTEL_METRICS_FEATURES | Beyla 导出数据的指标组列表,请参阅指标导出特性。接受的值有 application 、application_span 、application_service_graph 、application_process 、network 和 network_inter_zone 。 | 字符串列表 | ["application"] |
allow_service_graph_self_references BEYLA_OTEL_ALLOW_SERVICE_GRAPH_SELF_REFERENCES | 控制 Beyla 是否在服务图生成中包含自引用服务,例如调用自身的服务。自引用会降低服务图的实用性并增加数据基数。 | 布尔值 | false |
instrumentations BEYLA_OTEL_METRICS_INSTRUMENTATIONS | Beyla 收集数据的指标插桩列表,请参阅指标插桩部分。 | 字符串列表 | ["*"] |
buckets | 设置如何覆盖各种直方图的桶边界,请参阅覆盖直方图桶。 | (不适用) | 对象 |
histogram_aggregation OTEL_EXPORTER_OTLP_METRICS_DEFAULT_HISTOGRAM_AGGREGATION | 设置 Beyla 用于直方图仪器的默认聚合方式。接受的值有 explicit_bucket_histogram 或 base2_exponential_bucket_histogram 。 | 字符串 | explicit_bucket_histogram |
指标导出协议
如果您未设置协议,Beyla 将按如下方式设置协议
grpc
:如果端口以4317
结尾,例如4317
、14317
或24317
。http/protobuf
:如果端口以4318
结尾,例如4318
、14318
或24318
。
指标导出特性
Beyla 指标导出器可以为与指标发现配置中的条目匹配的进程导出以下指标数据组。
application
:应用级别指标application_span
应用级别链路追踪 Span 指标application_service_graph
:应用级别服务图指标。建议使用 DNS 进行服务发现,并确保 DNS 名称与 Beyla 使用的 OpenTelemetry 服务名称匹配。在 Kubernetes 环境中,服务名称发现设置的 OpenTelemetry 服务名称是服务图指标的最佳选择。application_process
:关于运行被插桩应用的进程的指标network
:网络级别指标,请参阅网络指标配置文档了解更多信息network_inter_zone
:网络区域间指标,请参阅网络指标配置文档了解更多信息
指标插桩
Beyla 可以收集数据的插桩区域列表
*
:所有插桩,如果存在*
,Beyla 将忽略其他值http
:HTTP/HTTPS/HTTP2 应用指标grpc
:gRPC 应用指标sql
:SQL 数据库客户端调用指标redis
:Redis 客户端/服务器数据库指标kafka
:Kafka 客户端/服务器消息队列指标
例如,将 instrumentations
选项设置为 http,grpc
将启用 HTTP/HTTPS/HTTP2
和 gRPC
应用指标的收集,并禁用其他插桩。
OpenTelemetry 链路追踪导出组件
您可以在 YAML 配置文件的 otel_traces_export
部分下或通过环境变量配置该组件。
除了本文档中记录的配置外,该组件还支持标准 OpenTelemetry 导出器配置中的环境变量。
小写 YAML 选项 大写环境变量选项 | 描述 | 类型 | 默认值 |
---|---|---|---|
endpoint OTEL_EXPORTER_OTLP_TRACES_ENDPOINT OTEL_EXPORTER_OTLP_ENDPOINT | Beyla 发送链路追踪的端点。当使用 OTEL_EXPORTER_OTLP_ENDPOINT 时,Beyla 会遵循 OpenTelemetry 标准,自动向 URL 添加 /v1/traces 路径。如果您不希望发生这种情况,请使用链路追踪专用的设置。 | URL | |
protocol OTEL_EXPORTER_OTLP_TRACES_PROTOCOL OTEL_EXPORTER_OTLP_PROTOCOL | OpenTelemetry 端点的协议传输/编码,请参阅链路追踪导出协议。接受的值包括 http/json 、http/protobuf 和 grpc 。 | 字符串 | 从端口使用推断 |
insecure_skip_verify BEYLA_OTEL_INSECURE_SKIP_VERIFY | 如果设置为 true ,Beyla 会跳过验证并接受任何服务器证书。仅在非生产环境中覆盖此设置。 | 布尔值 | false |
instrumentations BEYLA_OTEL_TRACES_INSTRUMENTATIONS | Beyla 收集数据的插桩列表,请参阅链路追踪插桩部分。 | 字符串列表 | ["*"] |
链路追踪导出协议
如果您未设置协议,Beyla 将按如下方式设置协议
grpc
:如果端口以4317
结尾,例如4317
、14317
或24317
。http/protobuf
:如果端口以4318
结尾,例如4318
、14318
或24318
。
链路追踪插桩
Beyla 可以收集数据的插桩区域列表
*
:所有插桩,如果存在*
,Beyla 将忽略其他值http
:HTTP/HTTPS/HTTP2 应用链路追踪grpc
:gRPC 应用链路追踪sql
:SQL 数据库客户端调用链路追踪redis
:Redis 客户端/服务器数据库链路追踪kafka
:Kafka 客户端/服务器消息队列链路追踪
例如,将 instrumentations
选项设置为 http,grpc
将启用 HTTP/HTTPS/HTTP2
和 gRPC
应用链路追踪的收集,并禁用其他插桩。
Prometheus 导出组件
您可以在 YAML 配置文件的 prometheus_export
部分下或通过环境变量配置该组件。此组件在自动插桩工具中打开一个 HTTP 端点,允许任何外部抓取器以 Prometheus 格式拉取指标。如果设置了 port
属性,则此组件会被启用。
注意
Prometheus 抓取器可能会覆盖
instance
和job
标签的值。要保留 Beyla 设置的原始值,请参阅Grafana Alloy Prometheus 抓取组件文档。
小写 YAML 选项 大写环境变量选项 | 描述 | 类型 | 默认值 |
---|---|---|---|
port BEYLA_PROMETHEUS_PORT | Prometheus 抓取端点的 HTTP 端口。如果未设置或设置为 0,则不打开 Prometheus 端点。 | 整型 | |
path BEYLA_PROMETHEUS_PATH | 用于获取 Prometheus 指标列表的 HTTP 查询路径。 | 字符串 | /metrics |
extra_resource_attributes BEYLA_PROMETHEUS_EXTRA_RESOURCE_ATTRIBUTES | 要添加到报告的 target_info 指标中的附加资源属性列表。有关运行时发现的属性的重要详细信息,请参阅额外资源属性。 | 字符串列表 | |
ttl BEYLA_PROMETHEUS_TTL | 指标实例在未更新后不再报告的持续时间。用于避免无限期地报告已完成的应用实例。 | 持续时间 | 5m |
buckets | 设置如何覆盖各种直方图的桶边界,请参阅覆盖直方图桶。 | 对象 | |
features BEYLA_PROMETHEUS_FEATURES | Beyla 导出数据的指标组列表,请参阅Prometheus 导出特性。 | 字符串列表 | ["application"] |
allow_service_graph_self_references BEYLA_PROMETHEUS_ALLOW_SERVICE_GRAPH_SELF_REFERENCES | Beyla 是否在服务图生成中包含自引用服务。自引用对服务图没有用处,并会增加数据基数。 | 布尔值 | false |
instrumentations BEYLA_PROMETHEUS_INSTRUMENTATIONS | Beyla 收集数据的插桩列表,请参阅Prometheus 插桩部分。 | 字符串列表 | ["*"] |
Prometheus 额外资源属性
由于 Prometheus API 客户端的内部限制,Beyla 需要提前知道每个指标会暴露哪些属性。这会导致在插桩过程中运行时发现的一些属性默认不可见。例如,通过 Kubernetes 注解或在目标应用的 OTEL_RESOURCE_ATTRIBUTES
环境变量中定义的属性。
例如,一个应用将 OTEL_RESOURCE_ATTRIBUTES=deployment.environment=production
定义为环境变量,如果通过 OpenTelemetry 导出指标,则 target_info{deployment.environment="production"}
属性默认可见,但如果通过 Prometheus 导出,则不可见。
要使 deployment_environment
在 Prometheus 中可见,您需要将其添加到 extra_resource_attributes
列表中。
Prometheus 导出特性
Prometheus 指标导出器可以导出以下指标数据组
application
:应用级别指标application_span
:应用级别链路追踪 Span 指标application_service_graph
:应用级别服务图指标。建议使用 DNS 进行服务发现,并确保 DNS 名称与 Beyla 使用的 OpenTelemetry 服务名称匹配。在 Kubernetes 环境中,服务名称发现设置的 OpenTelemetry 服务名称是服务图指标的最佳选择。application_process
:关于运行被插桩应用的进程的指标network
:网络级别指标,请参阅网络指标配置文档了解更多信息network_inter_zone
:网络区域间指标,请参阅网络指标配置文档了解更多信息
Prometheus 插桩
Beyla 可以收集数据的插桩区域列表
*
:所有插桩,如果存在*
,Beyla 将忽略其他值http
:HTTP/HTTPS/HTTP2 应用指标grpc
:gRPC 应用指标sql
:SQL 数据库客户端调用指标redis
:Redis 客户端/服务器数据库指标kafka
:Kafka 客户端/服务器消息队列指标
例如,将 instrumentations
选项设置为 http,grpc
将启用 HTTP/HTTPS/HTTP2
和 gRPC
应用指标的收集,并禁用其他插桩。