菜单
文档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 导出器的封装。Bug 报告或功能请求将被重定向到上游仓库(如有必要)。

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

用法

alloy
otelcol.exporter.otlphttp "LABEL" {
  client {
    endpoint = "HOST:PORT"
  }
}

参数

otelcol.exporter.otlphttp 支持以下参数

名称类型描述默认值必需
metrics_endpointstring要将指标发送到的端点。client.endpoint + "/v1/metrics"
logs_endpointstring要将日志发送到的端点。client.endpoint + "/v1/logs"
traces_endpointstring要将追踪发送到的端点。client.endpoint + "/v1/traces"
encodingstring用于消息的编码。应为 "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 客户端。

支持以下参数

名称类型描述默认值必需
endpointstring要将遥测数据发送到的目标 URL。
proxy_urlstring用于发送请求的 HTTP 代理。
read_buffer_sizestringHTTP 客户端用于读取服务器响应的读取缓冲区大小。0
write_buffer_sizestringHTTP 客户端用于写入请求的写入缓冲区大小。"512KiB"
timeoutduration将请求标记为失败之前等待的时间。"30s"
headersmap(string)随请求发送的其他标头。{}
compressionstring用于请求的压缩机制。"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_filestringCA 文件的路径。
ca_pemstring用于验证服务器的 CA PEM 编码文本。
cert_filestringTLS 证书的路径。
cert_pemstring用于客户端身份验证的证书 PEM 编码文本。
insecure_skip_verifyboolean忽略不安全的服务器 TLS 证书。
include_system_ca_certs_poolboolean是否加载系统证书颁发机构池以及证书颁发机构。false
insecureboolean连接到配置的服务器时禁用 TLS。
key_filestringTLS 证书密钥的路径。
key_pemsecret用于客户端身份验证的密钥 PEM 编码文本。
max_versionstring连接的最大可接受 TLS 版本。"TLS 1.3"
min_versionstring连接的最小可接受 TLS 版本。"TLS 1.2"
cipher_suiteslist(string)TLS 传输可以使用的 TLS 密码套件列表。[]
reload_intervalduration证书重新加载的持续时间。"0s"
server_namestring设置后,验证服务器证书的主机名。

如果服务器不支持 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 服务器之前配置批处理的内存缓冲区。

支持以下参数

名称类型描述默认值必需
enabledboolean在将数据发送到客户端之前启用内存缓冲区。true
num_consumersnumber并行发送写入队列的批处理的读取器数量。10
queue_sizenumber队列中同时允许的最大未写入批处理数。1000

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

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

num_consumers 参数控制有多少读取器从缓冲区读取并并行发送数据。较大的 num_consumers 值允许更快地发送数据,但会增加网络流量。

retry_on_failure 块

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

支持以下参数

名称类型描述默认值必需
enabledboolean启用重试失败的请求。true
initial_intervalduration重试失败请求之前等待的初始时间。"5s"
max_elapsed_timeduration丢弃失败批处理之前等待的最长时间。"5m"
max_intervalduration重试之间等待的最长时间。"30s"
multipliernumber用于增加重试前等待时间的系数。1.5
randomization_factornumber用于随机化重试前等待时间的系数。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_metricsboolean是否禁用某些高基数指标。true
levelstring控制包装的收集器发出的指标的详细程度。"detailed"

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

注意

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

level 是 Alloy 等效于 OpenTelemetry Collector 中的 telemetry.metrics.level 功能门。可能的值为 "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 具有可被以下组件使用的导出:

注意

连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。