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

otelcol.exporter.otlphttpOTLP HTTP导出器

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

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

otelcol.exporter.otlphttp 定义中支持以下块

层次结构描述必需
clientclient配置将遥测数据发送到 HTTP 服务器的 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。
read_buffer_size字符串HTTP 客户端使用用于读取服务器响应的读取缓冲区的大小。0
write_buffer_size字符串HTTP客户端用于写入请求的写入缓冲区大小。"512KiB"
超时持续时间在将请求标记为失败之前等待的时间。"30s"
头部string映射与请求一起发送的附加头部。{}
压缩字符串用于请求的压缩机制。"gzip"
max_idle_connsint限制客户端可以保持打开的空闲HTTP连接的数量。100
max_idle_conns_per_hostint限制主机可以保持打开的空闲HTTP连接的数量。0
max_conns_per_hostint限制每个主机的总(拨号、活动和空闲)连接数量。0
idle_conn_timeout持续时间在空闲连接自行关闭之前等待的时间。"90s"
disable_keep_alivesbool禁用HTTP持久连接。false
http2_read_idle_timeout持续时间在没有接收到帧的情况下,执行使用ping帧的健康检查的超时时间。0s
http2_ping_timeout持续时间如果没有收到对Ping的响应,则将连接关闭的超时时间。15s
认证capsule(otelcol.Handler)用于对请求进行认证的来自 otelcol.auth 组件的处理程序。

设置 headers 时,请注意

  • 某些头部,如 Content-LengthConnection,在需要时自动写入,并且在 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_pemsecret客户端认证的密钥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_pemca_file
  • cert_pemcert_file
  • key_pemkey_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

enabledtrue时,在给定的时间间隔后,将再次尝试失败的批次。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字符串控制包装收集器发出的指标的详细程度。"详细"

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发送数据

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

兼容组件

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

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能正确连接。请参阅链接的文档以获取更多信息。