社区
otelcol.exporter.splunkhec
社区:此组件由 Alloy 用户社区开发、维护和支持。Grafana 不为此组件提供商业支持。要启用和使用社区组件,您必须将
--feature.community-components.enabled
flag 设置为true
。
otelcol.exporter.splunkhec
接受来自其他 otelcol
组件的指标和跟踪遥测数据,并将其发送到 Splunk HEC。
注意
otelcol.exporter.splunkhec
是对来自otelcol-contrib
发行版的上游 OpenTelemetry Collectorsplunkhec
导出器的封装。错误报告或功能请求将在必要时重定向到上游存储库。
您可以通过为 otelcol.exporter.splunkhec
组件赋予不同的标签来指定多个组件。
用法
otelcol.exporter.splunkhec "LABEL" {
splunk {
token = "YOUR_SPLUNK_TOKEN"
}
client {
endpoint = "http://splunk.yourdomain.com:8088"
}
}
参数
otelcol.exporter.splunkhec
组件不支持任何参数,并且完全通过子块进行配置。
块
在 otelcol.exporter.splunkhec
的定义中支持以下块
层次结构 | 块 | 描述 | 必需 |
---|---|---|---|
splunk | splunk | 配置 Splunk HEC 导出器。 | 是 |
splunk->otel_to_hec_fields | otel_to_hec_fields | 配置 OpenTelemetry 到 HEC 字段的映射。 | 否 |
splunk->telemetry | telemetry | 配置导出器的遥测。 | 否 |
splunk->heartbeat | heartbeat | 配置导出器的心跳设置。 | 否 |
splunk->batcher | batcher | 基于超时和最小项目数配置批处理请求。 | 否 |
client | client | 配置用于将数据发送到 Splunk HEC 的 HTTP 客户端。 | 是 |
retry_on_failure | retry_on_failure | 配置失败请求的重试机制。 | 否 |
queue | queue | 配置发送前的数据批处理。 | 否 |
debug_metrics | debug_metrics | 配置此组件生成的用于监控其状态的指标。 | 否 |
splunk 块
splunk
块配置 Splunk HEC 的特定设置。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
token | 密钥 | Splunk HEC Token。 | 是 | |
log_data_enabled | 布尔值 | 启用从导出器发送日志。`log_data_enabled` 或 `profiling_data_enabled` 之一必须为 `true`。 | true | 否 |
profiling_data_enabled | 布尔值 | 启用从导出器发送 profiling 数据。`log_data_enabled` 或 `profiling_data_enabled` 之一必须为 `true`。 | true | 否 |
source | 字符串 | Splunk 源. | "" | 否 |
source_type | 字符串 | Splunk 源类型. | "" | 否 |
index | 字符串 | Splunk 索引名称。 | "" | 否 |
disable_compression | 布尔值 | 禁用 GZip 压缩。 | false | 否 |
max_content_length_logs | 无符号整数 | 最大日志负载大小(字节)。必须小于 838860800 (~800MB)。 | 2097152 | 否 |
max_content_length_metrics | 无符号整数 | 最大指标负载大小(字节)。必须小于 838860800 (~800MB)。 | 2097152 | 否 |
max_content_length_traces | 无符号整数 | 最大跟踪负载大小(字节)。必须小于 838860800 (~800MB)。 | 2097152 | 否 |
max_event_size | 无符号整数 | 最大事件负载大小(字节)。必须小于 838860800 (~800MB)。 | 5242880 | 否 |
splunk_app_name | 字符串 | 用于按名称跟踪 Splunk Apps 的遥测数据。 | Alloy | 否 |
splunk_app_version | 字符串 | 用于按 App 版本跟踪遥测数据。 | "" | 否 |
health_path | 字符串 | 健康 API 的路径。 | /services/collector/health' | 否 |
health_check_enabled | 布尔值 | 用于在导出器启动时验证 Splunk HEC 的健康状况。 | true | 否 |
export_raw | 布尔值 | 当以 HEC 原始端点为目标时,仅发送日志正文。 | false | 否 |
use_multi_metrics_format | 布尔值 | 使用多指标格式以节省提取过程中的空间。 | false | 否 |
otel_to_hec_fields 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
severity_text | 字符串 | 将严重性文本字段映射到特定的 HEC 字段。 | "" | 否 |
severity_number | 字符串 | 将严重性数字字段映射到特定的 HEC 字段。 | "" | 否 |
heartbeat 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
interval | time.Duration | 心跳间隔的时间间隔,以秒为单位。 | 0秒 | 否 |
startup | 布尔值 | 在导出器启动时发送心跳事件。 | false | 否 |
telemetry 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | 布尔值 | 在导出器内部启用遥测。 | false | 否 |
override_metrics_names | map(string) | 覆盖导出器中内部指标的指标。 | 否 |
batcher 块
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | 布尔值 | 在发送到 consumerSender 之前是否不对批次进行排队。 | false | 否 |
flush_timeout | time.Duration | 批次将被发送的时间,无论其大小如何。 | 200毫秒 | 否 |
min_size_items | 无符号整数 | 批次被发送的项目数,无论超时与否。 | 8192 | 否 |
max_size_items | 无符号整数 | 批次项目的最大数量,如果批次超过此值,它将被分成更小的批次。必须大于或等于 min_size_items。将此值设置为零将禁用最大大小限制。 | 0 | 否 |
client 块
client
块配置组件使用的 HTTP 客户端。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
endpoint | 字符串 | 要使用的 Splunk HEC 端点。 | 是 | |
read_buffer_size | 整数 | HTTP 客户端用于读取服务器响应的读取缓冲区大小。 | 0 | 否 |
write_buffer_size | 整数 | HTTP 客户端用于写入请求的写入缓冲区大小。 | 0 | 否 |
timeout | duration | 在将请求标记为失败之前等待的时间。 | "15秒" | 否 |
max_idle_conns | 整数 | 限制客户端可以保持打开的空闲 HTTP 连接数。 | 100 | 否 |
max_idle_conns_per_host | 整数 | 限制主机可以保持打开的空闲 HTTP 连接数。 | 2 | 否 |
max_conns_per_host | 整数 | 限制每个主机的总连接数(拨号、活动和空闲)。零表示没有限制 | 0 | 否 |
idle_conn_timeout | duration | 空闲连接自行关闭之前等待的时间。 | "45秒" | 否 |
disable_keep_alives | 布尔值 | 禁用 HTTP 保持活动。 | false | 否 |
insecure_skip_verify | 布尔值 | 忽略不安全的服务器 TLS 证书。 | false | 否 |
retry_on_failure 块
retry_on_failure
块配置如何重试 splunkhec 的失败请求。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | 布尔值 | 启用重试失败的请求。 | true | 否 |
initial_interval | duration | 重试失败请求之前的初始等待时间。 | "5秒" | 否 |
max_elapsed_time | duration | 在丢弃失败的批次之前等待的最大时间。 | "5分钟" | 否 |
max_interval | duration | 重试之间等待的最大时间。 | "30秒" | 否 |
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"`,则将永远重试失败的请求,直到成功为止。
queue 块
queue
块配置在将数据发送到 HTTP 服务器之前批次的内存缓冲区。
支持以下参数
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
enabled | 布尔值 | 在将数据发送到客户端之前启用内存缓冲区。 | true | 否 |
num_consumers | 数字 | 并行发送写入队列的批次的读取器数量。 | 10 | 否 |
queue_size | 数字 | 队列中允许同时存在的最大未写入批次数量。 | 1000 | 否 |
当 enabled
为 true
时,数据首先写入内存缓冲区,然后再发送到配置的服务器。发送到组件 input
导出字段的批次会添加到缓冲区,只要未发送批次的数量不超过配置的 queue_size
。
queue_size
决定了端点中断可以容忍多长时间。假设每秒 100 个请求,默认队列大小 1000
提供大约 10 秒的中断容忍度。要计算 queue_size
的正确值,请将每秒平均传出请求数乘以可以容忍中断的时间(秒)。非常高的值可能会导致内存不足 (OOM) 终止。
num_consumers
参数控制有多少读取器从缓冲区读取并并行发送数据。num_consumers
的值越大,数据发送速度越快,但会增加网络流量。
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
是 Alloy 中与 OpenTelemetry Collector 中的 telemetry.metrics.level
功能门等效的项。可能的值为 `"none"`、"basic"`
、"normal"`
和 "detailed"`
。
导出字段
以下字段已导出,可以被其他组件引用
名称 | 类型 | 描述 |
---|---|---|
input | otelcol.Consumer | 其他组件可以用来发送遥测数据的值。 |
input
接受任何遥测信号(指标、日志或跟踪)的 otelcol.Consumer
数据。
组件健康状况
仅当给定无效配置时,otelcol.exporter.splunkhec
才会被报告为不健康。
Debug 信息
otelcol.exporter.splunkhec
不公开任何组件特定的 debug 信息。
示例
OpenTelemetry 接收器
此示例将发送到 otelcol.receiver.otlp.default
接收器的指标、日志和跟踪转发到 Splunk HEC 导出器。
otelcol.receiver.otlp "default" {
grpc {
endpoint = "localhost:4317"
}
http {
endpoint = "localhost:4318"
compression_algorithms = ["zlib"]
}
output {
metrics = [otelcol.exporter.splunkhec.default.input]
logs = [otelcol.exporter.splunkhec.default.input]
traces = [otelcol.exporter.splunkhec.default.input]
}
}
otelcol.exporter.splunkhec "default" {
client {
endpoint = "https://splunkhec.domain.com:8088/services/collector"
timeout = "10s"
max_idle_conns = 200
max_idle_conns_per_host = 200
idle_conn_timeout = "10s"
}
splunk {
token = "SPLUNK_TOKEN"
source = "otel"
sourcetype = "otel"
index = "metrics"
splunk_app_name = "OpenTelemetry-Collector Splunk Exporter"
splunk_app_version = "v0.0.1"
z
otel_to_hec_fields {
severity_text = "otel.log.severity.text"
severity_number = "otel.log.severity.number"
}
heartbeat {
interval = "30s"
}
telemetry {
enabled = true
override_metrics_names = {
otelcol_exporter_splunkhec_heartbeats_failed = "app_heartbeats_failed_total",
otelcol_exporter_splunkhec_heartbeats_sent = "app_heartbeats_success_total",
}
extra_attributes = {
custom_key = "custom_value",
dataset_name = "SplunkCloudBeaverStack",
}
}
}
}
转发 Prometheus 指标
此示例通过接收器从 Alloy 转发 Prometheus 指标,以转换为 OpenTelemetry 格式,然后再将其发送到 splunkhec。
prometheus.exporter.self "default" {
}
prometheus.scrape "metamonitoring" {
targets = prometheus.exporter.self.default.targets
forward_to = [otelcol.receiver.prometheus.default.receiver]
}
otelcol.receiver.prometheus "default" {
output {
metrics = [otelcol.exporter.splunkhec.default.input]
}
}
otelcol.exporter.splunkhec "default" {
splunk {
token = "SPLUNK_TOKEN"
}
client {
endpoint = "http://splunkhec.domain.com:8088"
}
}
转发 Loki 日志
此示例监视路径 /var/log
中以 .log
结尾的文件,使用 Loki 跟踪这些日志,并将日志转发到配置的 Splunk HEC 端点。Splunk HEC 导出器组件设置为每 5 秒发送一次心跳。
local.file_match "local_files" {
path_targets = [{"__path__" = "/var/log/*.log"}]
sync_period = "5s"
}
otelcol.receiver.loki "default" {
output {
logs = [otelcol.processor.attributes.default.input]
}
}
otelcol.processor.attributes "default" {
action {
key = "host"
action = "upsert"
value = "myhost"
}
action {
key = "host.name"
action = "upsert"
value = "myhost"
}
output {
logs = [otelcol.exporter.splunkhec.default.input]
}
}
loki.source.file "log_scrape" {
targets = local.file_match.local_files.targets
forward_to = [otelcol.receiver.loki.default.receiver]
tail_from_end = false
}
otelcol.exporter.splunkhec "default" {
retry_on_failure {
enabled = false
}
client {
endpoint = "http://splunkhec.domain.com:8088"
timeout = "5s"
max_idle_conns = 200
max_idle_conns_per_host = 200
idle_conn_timeout = "10s"
write_buffer_size = 8000
}
sending_queue {
enabled = false
}
splunk {
token = "SPLUNK_TOKEN"
source = "otel"
sourcetype = "otel"
index = "devnull"
log_data_enabled = true
heartbeat {
interval = "5s"
}
batcher {
flush_timeout = "200ms"
}
telemetry {
enabled = true
override_metrics_names = {
otelcol_exporter_splunkhec_heartbeats_failed = "app_heartbeats_failed_total",
otelcol_exporter_splunkhec_heartbeats_sent = "app_heartbeats_success_total",
}
extra_attributes = {
host = "myhost",
dataset_name = "SplunkCloudBeaverStack",
}
}
}
}
兼容组件
otelcol.exporter.splunkhec
具有可以被以下组件使用的导出
- 消耗 OpenTelemetry
otelcol.Consumer
的组件
注意
连接某些组件可能不合理,或者组件可能需要进一步配置才能使连接正常工作。有关更多详细信息,请参阅链接的文档。