otelcol.exporter.otlphttpOTLP HTTP导出器
otelcol.exporter.otlphttp
接受来自其他 otelcol
组件的遥测数据,并使用 OTLP HTTP 协议通过网络写入。
注意
otelcol.exporter.otlphttp
是 OpenTelemetry Collector 上游的otlphttp
导出器的包装器。如果需要,错误报告或功能请求将被重定向到上游仓库。
您可以通过指定不同的标签来指定多个 otelcol.exporter.otlphttp
组件。
使用方法
otelcol.exporter.otlphttp "LABEL" {
client {
endpoint = "HOST:PORT"
}
}
参数
otelcol.exporter.otlphttp
支持以下参数
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
metrics_endpoint | 字符串 | 发送指标的目标端点。 | client.endpoint + "/v1/metrics" | 否 |
logs_endpoint | 字符串 | 发送日志的目标端点。 | client.endpoint + "/v1/logs" | 否 |
traces_endpoint | 字符串 | 发送跟踪的目标端点。 | client.endpoint + "/v1/traces" | 否 |
encoding | 字符串 | 用于消息的编码。应为 "proto" 或 "json" 。 | "proto" | 否 |
默认值取决于在必需的 client
块中设置的 endpoint
字段。如果设置,这些参数将覆盖对应信号的目标端的 client.endpoint
字段。
块
在 otelcol.exporter.otlphttp
定义中支持以下块
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
client | client | 配置将遥测数据发送到 HTTP 服务器的 HTTP 服务器。 | 是 |
client > tls | tls | 配置 HTTP 客户端的 TLS。 | 否 |
client > cookies | cookies | 从服务器响应中存储 Cookie 并在后续请求中重用它们。 | 否 |
sending_queue | sending_queue | 配置发送前的数据批处理。 | 否 |
retry_on_failure | retry_on_failure | 配置失败请求的重试机制。 | 否 |
debug_metrics | debug_metrics | 配置要生成以监控其状态的指标。 | 否 |
>
符号表示嵌套的更深层。例如,client > tls
指的是在 client
块中定义的 tls
块。
client 块
client
块配置组件使用的 HTTP 客户端。
以下参数受到支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
endpoint | 字符串 | 发送遥测数据的目标 URL。 | 是 | |
read_buffer_size | 字符串 | HTTP 客户端使用用于读取服务器响应的读取缓冲区的大小。 | 0 | 否 |
write_buffer_size | 字符串 | HTTP客户端用于写入请求的写入缓冲区大小。 | "512KiB" | 否 |
超时 | 持续时间 | 在将请求标记为失败之前等待的时间。 | "30s" | 否 |
头部 | 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 | 持续时间 | 在空闲连接自行关闭之前等待的时间。 | "90s" | 否 |
disable_keep_alives | bool | 禁用HTTP持久连接。 | false | 否 |
http2_read_idle_timeout | 持续时间 | 在没有接收到帧的情况下,执行使用ping帧的健康检查的超时时间。 | 0s | 否 |
http2_ping_timeout | 持续时间 | 如果没有收到对Ping的响应,则将连接关闭的超时时间。 | 15s | 否 |
认证 | capsule(otelcol.Handler) | 用于对请求进行认证的来自 otelcol.auth 组件的处理程序。 | 否 |
设置 headers
时,请注意
- 某些头部,如
Content-Length
和Connection
,在需要时自动写入,并且在headers
中的值可能会被忽略。 - 从
endpoint
值自动推导出Host
头部。然而,可以通过在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进行粘性会话并强制最大会话年龄的情况下很有用。
以下参数受到支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
启用 | bool | 发送遥测数据的目标 URL。 | false | 否 |
tls块
该 tls
块配置用于连接HTTP服务器的TLS设置。
以下参数受到支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
ca_file | 字符串 | CA文件路径。 | 否 | |
ca_pem | 字符串 | 用于验证服务器的CA PEM编码文本。 | 否 | |
cert_file | 字符串 | TLS证书路径。 | 否 | |
cert_pem | 字符串 | 客户端认证的证书PEM编码文本。 | 否 | |
insecure_skip_verify | 布尔值 | 忽略不安全的服务器TLS证书。 | 否 | |
include_system_ca_certs_pool | 布尔值 | 是否要加载与证书颁发机构一起的系统证书颁发机构池。 | false | 否 |
insecure | 布尔值 | 在连接到配置的服务器时禁用TLS。 | 否 | |
key_file | 字符串 | TLS密钥路径。 | 否 | |
key_pem | secret | 客户端认证的密钥PEM编码文本。 | 否 | |
max_version | 字符串 | 连接可接受的TLS最大版本。 | "TLS 1.3" | 否 |
min_version | 字符串 | 连接可接受的最小TLS版本。 | "TLS 1.2" | 否 |
cipher_suites | 字符串列表 | 以下是可以由TLS传输使用的TLS加密套件列表。 | [] | 否 |
reload_interval | 持续时间 | 证书重新加载的时间长度。 | "0s" | 否 |
server_name | 字符串 | 当设置时,用于验证服务器证书的主机名。 | 否 |
如果服务器不支持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文档。
sending_queue 块
sending_queue
块配置在将数据发送到HTTP服务器之前,椅子中的批次内存缓冲区。
以下参数受到支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
启用 | 布尔值 | 在向客户端发送数据之前启用内存缓冲区。 | true | 否 |
num_consumers | 数量 | 将队列中写入的批次并行发送的读取器数量。 | 10 | 否 |
queue_size | 数量 | 在任何时候队列中允许的最大未写入批次数。 | 1000 | 否 |
enabled
设置为true
时,数据首先写入内存缓冲区,然后再发送到配置的服务器。只要未发送批次的数量不超过配置的queue_size
,发送到组件的input
导出字段的批次就会添加到缓冲区中。
queue_size
决定可以容忍的端点中断时间长度。假设每秒100个请求,默认队列大小1000
提供大约10秒的中断容忍时间。要计算queue_size
的正确值,请将每秒钟平均发出的请求数量乘以可以容忍中断的时间(以秒为单位)。非常高的值可能导致内存不足(OOM)终止。
num_consumers
参数控制有多少读取器从缓冲区中读取并发送数据。较大的num_consumers
值允许更快速地发送数据,但会增加网络流量。
retry_on_failure 块
retry_on_failure
块配置了如何重试HTTP服务器失败请求。
以下参数受到支持
名称 | 类型 | 描述 | 默认 | 必需 |
---|---|---|---|---|
启用 | 布尔值 | 启用重试失败请求。 | true | 否 |
initial_interval | 持续时间 | 重试失败请求前的初始等待时间。 | "5s" | 否 |
max_elapsed_time | 持续时间 | 丢弃失败批次前最大等待时间。 | "5m" | 否 |
max_interval | 持续时间 | 重试之间的最大等待时间。 | "30s" | 否 |
multiplier | 数量 | 增长重试前等待时间的系数。 | 1.5 | 否 |
randomization_factor | 数量 | 需要在重试前等待时间的随机化系数。 | 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 | 布尔值 | 是否禁用某些高基数指标。 | true | 否 |
level | 字符串 | 控制包装收集器发出的指标的详细程度。 | "详细" | 否 |
disable_high_cardinality_metrics
是Grafana Alloy中对应OpenTelemetry Collector中的telemetry.disableHighCardinalityMetrics
功能开关的。它移除可能导致高基数指标的属性。例如,从关于HTTP和gRPC连接的指标中移除了包含IP地址和端口号的属性。
注意
如果配置了,disable_high_cardinality_metrics
只能应用于otelcol.exporter.*
和otelcol.receiver.*
组件。
level
是Grafana Alloy中对应OpenTelemetry Collector中的telemetry.metrics.level
功能开关的。可能的值有"none"
、"basic"
、"normal"
和"detailed"
。
导出字段
以下字段被导出并可被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
输入 | otelcol.Consumer | 其他组件可以使用以发送遥测数据的值。 |
input
接受任何遥测信号(指标、日志或跟踪)的otelcol.Consumer
数据。
组件健康状态
otelcol.exporter.otlphttp
仅在提供无效配置时报告为不健康。
调试信息
otelcol.exporter.otlphttp
不公开任何特定组件的调试信息。
示例
此示例创建了一个导出器,用于向本地运行的、不使用TLS的Grafana Tempo发送数据
otelcol.exporter.otlphttp "tempo" {
client {
endpoint = "http://tempo:4317"
tls {
insecure = true
insecure_skip_verify = true
}
}
}
兼容组件
otelcol.exporter.otlphttp
的导出可以由以下组件消费
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅链接的文档以获取更多信息。