菜单
文档breadcrumb arrow Grafana Alloybreadcrumb arrow 参考breadcrumb arrow 组件breadcrumb arrow otelcolbreadcrumb arrow otelcol.exporter.otlphttp
开源

otelcol.exporter.otlphttp

otelcol.exporter.otlphttp 接受来自其他 otelcol 组件的遥测数据,并使用 OTLP HTTP 协议通过网络写入。

注意

otelcol.exporter.otlphttp 是上游 OpenTelemetry Collector otlphttp 导出器的包装器。如有必要,错误报告或功能请求将被重定向到上游仓库。

您可以通过指定不同的标签来指定多个 otelcol.exporter.otlphttp 组件。

用法

alloy
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"
编码字符串用于消息的编码。应为 "proto""json""proto"

默认值取决于在必需的 client 块中设置的 endpoint 字段。如果设置,则这些参数将覆盖相应信号的 client.endpoint 字段。

以下块支持在 otelcol.exporter.otlphttp 定义内

层次结构描述必需
clientclient配置 HTTP 服务器以发送遥测数据。
client > tlstls配置 HTTP 客户端的 TLS。
client > cookiescookies存储来自服务器响应的 cookie 并在后续请求中重用它们。
sending_queuesending_queue配置发送数据之前的批处理。
retry_on_failureretry_on_failure配置失败请求的重试机制。
debug_metricsdebug_metrics配置该组件生成的用于监控其状态的指标。

>符号表示更深层次的嵌套。例如,client > tls指的是在client块内部定义的tls块。

client块

client块配置组件使用的HTTP客户端。

以下参数被支持

名称类型描述默认值必需
endpoint字符串发送遥测数据的目标URL。
proxy_url字符串用于发送请求的HTTP代理。
read_buffer_size字符串HTTP客户端用于读取服务器响应的读取缓冲区大小。0
write_buffer_size字符串HTTP客户端用于写入请求的写入缓冲区大小。"512KiB"
timeoutduration在将请求标记为失败之前等待的时间。"30s"
headersmap(string)与请求一起发送的附加头信息。{}
compression字符串用于请求的压缩机制。"gzip"
max_idle_connsint限制客户端可以保持打开的空闲HTTP连接数。100
max_idle_conns_per_hostint限制主机可以保持打开的空闲HTTP连接数。0
max_conns_per_hostint限制每个主机(拨号、活动、空闲)的总连接数。0
idle_conn_timeoutduration在空闲连接自行关闭之前等待的时间。"90s"
disable_keep_alivesbool禁用HTTP keep-alive。false
http2_read_idle_timeoutduration在连接上未收到帧后,执行健康检查(使用ping帧)的超时时间。0s
http2_ping_timeoutduration如果没有收到对Ping的响应,连接将在指定时间后关闭。15s
authcapsule(otelcol.Handler)用于认证请求的来自otelcol.auth组件的处理程序。

当设置headers时,请注意

  • 某些头,如Content-LengthConnection,在需要时自动写入,而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进行粘性会话并强制执行最大会话年龄的情况中可能很有用。

以下参数被支持

名称类型描述默认值必需
enabledbool发送遥测数据的目标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秘密客户端认证的密钥PEM编码文本。
max_version字符串连接可接受的最大TLS版本。"TLS 1.3"
min_version字符串连接可接受的最小TLS版本。"TLS 1.2"
cipher_suites列表(字符串)TLS传输可以使用的一组TLS加密套件列表。[]
reload_intervalduration证书重新加载的时间间隔。"0s"
server_name字符串当设置时,验证服务器证书的域名。

如果服务器不支持TLS,则必须将insecure参数设置为true

要禁用连接到服务器的tls,请将insecure参数设置为true

如果reload_interval设置为"0s",则证书永不重新加载。

以下参数对相互排斥,不能同时设置

  • ca_pemca_file
  • cert_pemcert_file
  • key_pemkey_file

如果留空cipher_suites,则使用安全的默认列表。有关支持加密套件的列表,请参阅Go TLS文档

sending_queue块

sending_queue块配置在数据发送到HTTP服务器之前的数据批次内存缓冲区。

以下参数被支持

名称类型描述默认值必需
enabled布尔值在向客户端发送数据之前启用内存缓冲。true
num_consumers数量将写入队列的批次并行发送的读取器数量。10
queue_size数量在同一时间允许队列中的未写批次的最大数量。1000

enabledtrue时,数据首先写入内存缓冲区,然后再发送到配置的服务器。只要未发送的批次数量不超过配置的queue_size,发送到组件的input导出字段的批次就会添加到缓冲区中。

queue_size决定了可以容忍的端点中断时间。假设每秒100个请求,默认队列大小1000提供了大约10秒的中断容忍时间。为了计算正确的queue_size值,将每秒的平均出站请求数乘以可以容忍的中断时间(秒)。过高的值可能导致内存不足(OOM)终止。

num_consumers参数控制了多少个读取器从缓冲区中读取并发送数据。较大的num_consumers值可以在增加网络流量的同时更快地发送数据。

retry_on_failure块

retry_on_failure块配置了如何重试HTTP服务器的失败请求。

以下参数被支持

名称类型描述默认值必需
enabled布尔值启用重试失败请求。true
initial_intervalduration在重试失败请求之前等待的初始时间。"5s"
max_elapsed_timeduration在丢弃失败批次之前等待的最大时间。"5m"
max_intervalduration重试之间的最大时间间隔。"30s"
multiplier数量增长重试等待时间的因子。1.5
randomization_factor数量随机化重试等待时间的因子。0.5

enabled设置为true时,失败的分批处理将在给定的时间间隔后重试。initial_interval参数指定在第一次重试尝试之前需要等待多长时间。如果请求继续失败,则下一次重试等待的时间将按multiplier参数指定的因子增加,该因子必须大于1.0max_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字符串控制包装收集器发出的指标的详细程度。"detailed"

disable_high_cardinality_metrics是Grafana Alloy中OpenTelemetry Collector的telemetry.disableHighCardinalityMetrics功能门的等价物。它移除了可能导致高基数指标的属性。例如,从关于HTTP和gRPC连接的指标中移除了具有IP地址和端口号的属性。

注意

如果配置了,disable_high_cardinality_metrics仅适用于otelcol.exporter.*otelcol.receiver.*组件。

level是OpenTelemetry Collector中telemetry.metrics.level功能门的Alloy等价物。可能的值是"none""basic""normal""detailed"

导出字段

以下字段被导出,并可由其他组件引用

名称类型描述
inputotelcol.Consumer其他组件可以使用它来发送遥测数据。

input接受任何遥测信号(指标、日志或跟踪)的otelcol.Consumer数据。

组件健康

otelcol.exporter.otlphttp仅在提供无效配置时报告为不健康。

调试信息

otelcol.exporter.otlphttp不公开任何特定组件的调试信息。

示例

此示例创建了一个导出器,用于将数据发送到本地运行的、不使用TLS的Grafana Tempo。

alloy
otelcol.exporter.otlphttp "tempo" {
    client {
        endpoint = "http://tempo:4317"
        tls {
            insecure             = true
            insecure_skip_verify = true
        }
    }
}

兼容组件

otelcol.exporter.otlphttp的导出可以被以下组件消费

注意

连接某些组件可能没有意义,或者组件可能需要进一步配置才能正确连接。有关更多详细信息,请参阅链接的文档。