otelcol.exporter.otlp
otelcol.exporter.otlp
接受来自其他 otelcol
组件的遥测数据,并使用 OTLP gRPC 协议通过网络写入。
注意:
otelcol.exporter.otlp
是上游 OpenTelemetry Collectorotlp
导出器的包装器。如果需要,错误报告或功能请求将被重定向到上游存储库。
可以通过不同的标签指定多个 otelcol.exporter.otlp
组件。
用法
otelcol.exporter.otlp "LABEL" {
client {
endpoint = "HOST:PORT"
}
}
参数
otelcol.exporter.otlp
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
timeout | duration | 在标记请求为失败之前等待的时间。 | "5s" | no |
块
以下块支持在 otelcol.exporter.otlp
定义内使用
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
client | client | 配置要向其发送遥测数据的 gRPC 服务器。 | yes |
client > tls | tls | 配置 gRPC 客户端使用的 TLS。 | no |
client > keepalive | keepalive | 配置 gRPC 客户端的 keepalive 设置。 | no |
sending_queue | sending_queue | 配置发送前的数据批量处理。 | no |
retry_on_failure | retry_on_failure | 配置失败的请求的重试机制。 | no |
debug_metrics | debug_metrics | 配置此组件生成的用于监控系统状态的指标。 | no |
The >
symbol indicates deeper levels of nesting. For example, client > tls
refers to a tls
block defined inside a client
block.
client block
配置组件使用的 gRPC 客户端。
以下参数是受支持的
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | string | host:port 发送遥测数据到。 | yes | |
compression | string | 用于请求的压缩机制。 | "gzip" | no |
read_buffer_size | string | gRPC 客户端用于读取服务器响应的读取缓冲区大小。 | no | |
write_buffer_size | string | gRPC 客户端用于写入请求的写入缓冲区大小。 | "512KiB" | no |
wait_for_ready | boolean | 在发送数据之前等待 gRPC 连接处于 READY 状态。 | false | no |
headers | map(string) | 将附加到请求中的额外标头。 | {} | no |
balancer_name | string | 用于请求的哪个 gRPC 客户端端负载均衡器。 | round_robin | no |
权限 | string | 覆盖gRPC客户端请求中的默认:authority 头。 | no | |
认证 | 胶囊(otelcol.Handler) | 用于认证请求的来自otelcol.auth 组件的处理程序。 | no |
默认情况下,请求使用Gzip进行压缩。compression
参数控制使用哪种压缩机制。支持的字符串有:
"gzip"
"zlib"
"deflate"
"snappy"
"zstd"
如果您将compression
设置为"none"
或空字符串""
,则请求不会被压缩。
balancer_name
的支持值列在gRPC文档中,详见负载均衡
pick_first
:尝试连接到第一个地址,如果连接成功,则使用该地址进行所有RPC,如果失败,则尝试下一个地址(并继续这样做,直到成功建立连接)。因此,所有RPC都将发送到同一后端。round_robin
:连接到所有看到的地址,并按顺序逐一将RPC发送给每一个后端。例如,第一个RPC发送到后端-1,第二个RPC发送到后端-2,第三个RPC发送到后端-1。
gRPC中的:authority
头指定了请求发送到的主机。它与HTTP请求中的Host
头类似。默认情况下,:authority
的值从用于gRPC调用的端点URL中派生。覆盖:authority
在通过像Envoy这样的代理路由流量时可能很有用,该代理根据:authority
头的值进行路由决策。
可以通过以下环境变量配置HTTP代理:
HTTPS_PROXY
NO_PROXY
HTTPS_PROXY
环境变量指定用于代理请求的URL。通过HTTP CONNECT方法建立到代理的连接。
NO_PROXY
环境变量是可选的,由逗号分隔的主机名列表,表示HTTPS代理不应该使用。每个主机名可以是IP地址(1.2.3.4
)、CIDR表示法中的IP地址(1.2.3.4/8
)、域名(example.com
)或*
。域名匹配该域名及其所有子域名。以“.”开头(例如,.example.com
)的域名只匹配子域名。《NO_PROXY》只有当设置了《HTTPS_PROXY》时才读取。
由于otelcol.exporter.otlp
使用gRPC,因此配置的代理服务器必须能够处理和代理HTTP/2流量。
tls块
tls
块配置了用于连接到gRPC服务器的TLS设置。
以下参数是受支持的
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
ca_file | string | CA文件路径。 | no | |
ca_pem | string | 用于验证服务器使用的CA PEM编码文本。 | no | |
cert_file | string | TLS证书路径。 | no | |
cert_pem | string | 用于客户端认证的证书PEM编码文本。 | no | |
insecure_skip_verify | boolean | 忽略不安全的服务器TLS证书。 | no | |
include_system_ca_certs_pool | boolean | 是否加载与证书权威机构一起的系统证书当局池。 | false | no |
insecure | boolean | 在连接到配置的服务器时禁用TLS。 | no | |
key_file | string | TLS密钥路径。 | no | |
key_pem | secret | 用于客户端认证的密钥PEM编码文本。 | no | |
max_version | string | 连接可以接受的TLS版本的最大值。 | "TLS 1.3" | no |
min_version | string | 连接可以接受的TLS版本的最小值。 | "TLS 1.2" | no |
cipher_suites | list(string) | TLS传输可以使用的一组TLS加密套件。 | [] | no |
reload_interval | duration | 证书重新加载的持续时间。 | "0s" | no |
server_name | string | 设置时验证服务器证书的主机名。 | no |
如果服务器不支持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 文档。
注意
otelcol.exporter.otlp
使用gRPC,不允许在不安全通道上发送敏感凭据(如auth
)。可以通过非gRPC导出器(如otelcol.exporter.otlphttp)在不安全非TLS连接上发送敏感凭据。
keepalive块
keepalive
块配置gRPC客户端连接的keepalive设置。
以下参数是受支持的
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
ping_wait | duration | 没有活动后多久ping服务器。 | no | |
ping_response_timeout | duration | 如果服务器未对ping做出响应,则在关闭空闲连接之前等待的时间。 | no | |
ping_without_stream | boolean | 即使在没有活动流请求的情况下,也发送ping。 | no |
sending_queue块
sending_queue
块配置在向gRPC服务器发送数据之前的数据批次的内存缓冲区。
以下参数是受支持的
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | boolean | 启用在向客户端发送数据之前的数据内存缓冲区。 | true | no |
num_consumers | 数量 | 并行发送写入队列的批次的读取器数量。 | 10 | no |
queue_size | 数量 | 在同一时间允许队列中未写入的批次数量的最大值。 | 1000 | no |
当enabled
为true
时,数据首先写入内存缓冲区,然后再发送到设置的服务器。只要未发送批次的数量不超过配置的queue_size
,写入组件的input
导出字段的批次就会被添加到缓冲区。
queue_size
决定了容忍一段时间的服务器中断。假设每秒100个请求,默认的队列大小1000
提供大约10秒的中断容忍时间。要计算正确的queue_size
值,请将每秒平均请求数量乘以允许中断的时间(以秒为单位)。一个非常高的值可能导致内存不足(OOM)杀进程。
num_consumers
参数控制有多少读取器从缓冲区读取并发送数据。较大的num_consumers
值可以更快地发送数据,但会增加网络流量。
retry_on_failure块
retry_on_failure
块配置对gRPC服务器失败请求的重试方式。
以下参数是受支持的
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | boolean | 启用重试失败请求。 | true | no |
initial_interval | duration | 在重试失败请求之前等待的初始时间。 | "5s" | no |
max_elapsed_time | duration | 在丢弃失败批次之前等待的最大时间。 | "5m" | no |
max_interval | duration | 重试之间的最大时间间隔。 | "30s" | no |
multiplier | 数量 | 增长重试等待时间的因子。 | 1.5 | no |
随机化等待时间的因子。 | 数量 | 在重试之前随机化等待时间的因子。 | 0.5 | no |
当enabled
为true
时,失败批次在给定间隔后重试。如果请求继续失败,则在重试之前等待的时间会增加由multiplier
参数指定的因子,该因子必须大于1.0
。由max_interval
参数指定重试之间等待时间的上限。
|
|
|
|
以下参数是受支持的
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
| | boolean | | | true | no |
| | string | | | | | no |
|
注意
|
|
|
|
名称 | 类型 | 描述 |
---|---|---|
| | | | | |
|
|
|
|
|
|
- |
- |
- |
- |
- |
- |
- |
- |
- |
|
|
|
|
otelcol.exporter.otlp "tempo" {
client {
endpoint = "tempo:4317"
tls {
insecure = true
insecure_skip_verify = true
}
}
}
|
|
otelcol.exporter.otlp "grafana_cloud_traces" {
client {
endpoint = "tempo-xxx.grafana.net/tempo:443"
auth = otelcol.auth.basic.grafana_cloud_traces.handler
}
}
otelcol.auth.basic "grafana_cloud_traces" {
username = env("TEMPO_USERNAME")
password = env("GRAFANA_CLOUD_API_KEY")
}
兼容组件
|
- |
注意
|