otelcol.exporter.otlphttp
otelcol.exporter.otlphttp
接受来自其他 otelcol
组件的遥测数据,并使用 OTLP HTTP 协议通过网络写入这些数据。
注意
otelcol.exporter.otlphttp
是上游 OpenTelemetry Collectorotlphttp
exporter 的一个包装。如有必要,错误报告或功能请求将被重定向到上游仓库。
你可以通过为每个 otelcol.exporter.otlphttp
组件赋予不同的标签来指定多个此类组件。
用法
otelcol.exporter.otlphttp "LABEL" {
client {
endpoint = "HOST:PORT"
}
}
参数
otelcol.exporter.otlphttp
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
metrics_endpoint | string | 发送指标的端点。 | client.endpoint + "/v1/metrics" | 否 |
logs_endpoint | string | 发送日志的端点。 | client.endpoint + "/v1/logs" | 否 |
traces_endpoint | string | 发送追踪的端点。 | client.endpoint + "/v1/traces" | 否 |
encoding | string | 用于消息的编码。应为 "proto" 或 "json" 。 | "proto" | 否 |
默认值取决于必需的 client
块中设置的 endpoint
字段。如果设置了这些参数,它们将覆盖相应信号的 client.endpoint
字段。
块
otelcol.exporter.otlphttp
定义中支持以下块
层级 | 块 | 描述 | 必需 |
---|---|---|---|
client | client | 配置 HTTP 服务器以发送遥测数据。 | 是 |
client > tls | tls | 配置 HTTP 客户端的 TLS。 | 否 |
client > cookies | cookies | 从服务器响应中存储 cookie 并在后续请求中重复使用。 | 否 |
client > compression_params | compression_params | 配置高级压缩选项。 | 否 |
sending_queue | sending_queue | 配置发送数据前的批处理。 | 否 |
retry_on_failure | retry_on_failure | 配置失败请求的重试机制。 | 否 |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
>
符号表示更深的嵌套层级。例如,client > tls
指的是在 client
块内部定义的 tls
块。
client 块
client
块配置组件使用的 HTTP 客户端。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | string | 发送遥测数据的目标 URL。 | 是 | |
proxy_url | string | 用于发送请求的 HTTP 代理。 | ||
read_buffer_size | string | HTTP 客户端用于读取服务器响应的读取缓冲区大小。 | 0 | 否 |
write_buffer_size | string | HTTP 客户端用于写入请求的写入缓冲区大小。 | "512KiB" | 否 |
timeout | duration | 在将请求标记为失败之前等待的时间。 | "30s" | 否 |
headers | map(string) | 与请求一起发送的额外标头。 | {} | 否 |
compression | string | 用于请求的压缩机制。 | "gzip" | 否 |
max_idle_conns | int | 限制客户端可以保持打开的空闲 HTTP 连接数。 | 100 | 否 |
max_idle_conns_per_host | int | 限制每个主机可以保持打开的空闲 HTTP 连接数。 | 0 | 否 |
max_conns_per_host | int | 限制每个主机的总连接数(拨号中、活动和空闲)。 | 0 | 否 |
idle_conn_timeout | duration | 空闲连接在关闭自身之前等待的时间。 | "90s" | 否 |
disable_keep_alives | bool | 禁用 HTTP keep-alive。 | false | 否 |
http2_read_idle_timeout | duration | 如果连接上没有收到帧,在此超时后将使用 ping 帧执行健康检查。 | 0s | 否 |
http2_ping_timeout | duration | 如果未收到 ping 响应,在此超时后连接将关闭。 | 15s | 否 |
auth | capsule(otelcol.Handler) | 从 otelcol.auth 组件获取的 Handler,用于验证请求。 | 否 |
设置 headers
时,请注意
- 某些标头(如
Content-Length
和Connection
)在需要时会自动写入,headers
中的值可能会被忽略。 Host
标头会自动从endpoint
值派生。但是,可以通过在headers
中显式设置Host
标头来覆盖此自动分配。
将 disable_keep_alives
设置为 true
将导致每个请求建立新的 HTTP 或 HTTPS 连接时产生显著的开销。在启用此选项之前,请考虑更改空闲连接设置是否能达到你的目标。
如果 http2_ping_timeout
未设置或设置为 0s
,则默认为 15s
。
如果 http2_read_idle_timeout
未设置或设置为 0s
,则不会执行健康检查。
默认情况下,请求使用 Gzip 压缩。compression
参数控制使用哪种压缩机制。支持的字符串有
"gzip"
"zlib"
"deflate"
"snappy"
"zstd"
如果将 compression
设置为 "none"
或空字符串 ""
,则请求将不会被压缩。
cookies 块
cookies
块允许 HTTP 客户端存储来自服务器响应的 cookie 并在后续请求中重复使用它们。
这在负载均衡器依赖 cookie 实现粘性会话并强制最大会话时长等情况下可能很有用。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | bool | 发送遥测数据的目标 URL。 | false | 否 |
compression_params 块
compression_params
块允许配置高级压缩选项。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
level | int | 配置压缩级别。 | 是 |
关于 client.compression
和 client.compression_params.level
的有效组合,请参考上游文档。
tls 块
tls
块配置连接到 HTTP 服务器所使用的 TLS 设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
ca_file | string | CA 文件路径。 | 否 | |
ca_pem | string | 用于验证服务器的 CA PEM 编码文本。 | 否 | |
cert_file | string | TLS 证书路径。 | 否 | |
cert_pem | string | 用于客户端身份验证的证书 PEM 编码文本。 | 否 | |
insecure_skip_verify | boolean | 忽略不安全的服务器 TLS 证书。 | 否 | |
include_system_ca_certs_pool | boolean | 是否在证书颁发机构旁边加载系统证书颁发机构池。 | false | 否 |
insecure | boolean | 连接到配置的服务器时禁用 TLS。 | 否 | |
key_file | string | TLS 证书密钥路径。 | 否 | |
key_pem | secret | 用于客户端身份验证的密钥 PEM 编码文本。 | 否 | |
max_version | string | 连接可接受的最大 TLS 版本。 | "TLS 1.3" | 否 |
min_version | string | 连接可接受的最小 TLS 版本。 | "TLS 1.2" | 否 |
cipher_suites | list(string) | TLS 传输可以使用的 TLS 密码套件列表。 | [] | 否 |
reload_interval | duration | 证书重新加载的间隔时长。 | "0s" | 否 |
server_name | string | 设置时验证服务器证书的主机名。 | 否 | |
curve_preferences | list(string) | 握手中使用的椭圆曲线集合。 | [] | 否 |
如果服务器不支持 TLS,你必须将 insecure
参数设置为 true
。
要禁用连接到服务器的 tls
,请将 insecure
参数设置为 true
。
如果 reload_interval
设置为 "0s"
,则证书永远不会重新加载。
以下参数对是互斥的,不能同时设置
ca_pem
和ca_file
cert_pem
和cert_file
key_pem
和key_file
如果 cipher_suites
留空,将使用一个安全的默认列表。有关支持的密码套件列表,请参考Go TLS 文档。
curve_preferences
参数确定在握手过程中优先使用的椭圆曲线集合,按优先级排序。如果未提供,将使用默认列表。可用的椭圆曲线集合包括 X25519
、P521
、P256
和 P384
。
sending_queue 块
sending_queue
块配置发送数据到 HTTP 服务器之前的批处理内存缓冲区。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | boolean | 在发送数据到客户端之前启用内存缓冲区。 | true | 否 |
num_consumers | number | 并行发送写入队列的批处理的读取器数量。 | 10 | 否 |
queue_size | number | 队列中同时允许的最大未写入批处理数量。 | 1000 | 否 |
blocking | boolean | 如果为 true ,则阻塞直到队列有空间容纳新请求。 | false | 否 |
当 enabled
为 true
时,数据首先被写入内存缓冲区,然后发送到配置的服务器。发送到组件 input
导出字段的批处理将被添加到缓冲区,只要未发送批处理的数量不超过配置的 queue_size
。
queue_size
决定了对端点中断的容忍时间。假设每秒 100 个请求,默认 queue_size
1000
大约提供 10 秒的中断容忍。要计算正确的 queue_size
值,将每秒平均出站请求数乘以可容忍的中断时间(秒)。值过高可能导致内存不足 (OOM) 终止。
num_consumers
参数控制有多少读取器并行地从缓冲区读取并发送数据。较大的 num_consumers
值允许更快地发送数据,但代价是增加网络流量。
retry_on_failure 块
retry_on_failure
块配置如何重试发送到 HTTP 服务器的失败请求。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | boolean | 启用重试失败请求。 | true | 否 |
initial_interval | duration | 重试失败请求前初始等待时间。 | "5s" | 否 |
max_elapsed_time | duration | 在丢弃失败批处理之前等待的最长时间。 | "5m" | 否 |
max_interval | duration | 重试之间等待的最长时间。 | "30s" | 否 |
multiplier | number | 重试前增长等待时间的因子。 | 1.5 | 否 |
randomization_factor | number | 重试前随机化等待时间的因子。 | 0.5 | 否 |
当 enabled
为 true
时,失败的批处理将在给定的间隔后重试。initial_interval
参数指定了第一次重试尝试之前需要等待多长时间。如果请求持续失败,重试前等待的时间会按照 multiplier
参数指定的因子增加,该因子必须大于 1.0
。max_interval
参数指定了重试之间等待时间上限。
randomization_factor
参数对于在重试的 Alloy 实例之间添加抖动非常有用。如果 randomization_factor
大于 0
,重试前的等待时间会乘以一个随机因子,范围为 [ I - randomization_factor * I, I + randomization_factor * I]
,其中 I
是当前间隔。
如果批处理未成功发送,它将在 max_elapsed_time
指定的时间过去后被丢弃。如果 max_elapsed_time
设置为 "0s"
,则失败请求将永远重试直到成功。
debug_metrics 块
debug_metrics
块配置此组件生成的用于监控其状态的指标。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
disable_high_cardinality_metrics | boolean | 是否禁用某些高基数指标。 | true | 否 |
disable_high_cardinality_metrics
是 Grafana Alloy 中等同于 OpenTelemetry Collector 中 telemetry.disableHighCardinalityMetrics
功能开关的配置。它移除了可能导致高基数指标的属性。例如,指标中关于 HTTP 和 gRPC 连接的属性中包含 IP 地址和端口号的属性将被移除。
注意
如果配置了
disable_high_cardinality_metrics
,它仅适用于otelcol.exporter.*
和otelcol.receiver.*
组件。
导出字段
导出以下字段,可供其他组件引用
名称 | 类型 | 描述 |
---|---|---|
input | otelcol.Consumer | 其他组件可用于发送遥测数据的值。 |
input
接受任何遥测信号(指标、日志或追踪)的 otelcol.Consumer
数据。
组件健康状态
otelcol.exporter.otlphttp
仅在配置无效时被报告为不健康。
调试信息
otelcol.exporter.otlphttp
不暴露任何组件特定的调试信息。
示例
此示例创建了一个 exporter,用于将数据发送到本地运行的 Grafana Tempo,不使用 TLS
otelcol.exporter.otlphttp "tempo" {
client {
endpoint = "http://tempo:4317"
tls {
insecure = true
insecure_skip_verify = true
}
}
}
兼容组件
otelcol.exporter.otlphttp
具有可供以下组件使用的导出
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参考链接的文档。