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

社区

otelcol.exporter.splunkhec

社区:此组件由 Alloy 用户社区开发、维护和支持。Grafana 不为此组件提供商业支持。要启用和使用社区组件,您必须将 --feature.community-components.enabled flag 设置为 true

otelcol.exporter.splunkhec 接受来自其他 otelcol 组件的指标和跟踪遥测数据,并将其发送到 Splunk HEC。

注意

otelcol.exporter.splunkhec 是对来自 otelcol-contrib 发行版的上游 OpenTelemetry Collector splunkhec 导出器的封装。错误报告或功能请求将在必要时重定向到上游存储库。

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

用法

alloy
otelcol.exporter.splunkhec "LABEL" {
    splunk {
        token = "YOUR_SPLUNK_TOKEN"
    }
    client {
        endpoint = "http://splunk.yourdomain.com:8088"
    }
}

参数

otelcol.exporter.splunkhec 组件不支持任何参数,并且完全通过子块进行配置。

otelcol.exporter.splunkhec 的定义中支持以下块

层次结构描述必需
splunksplunk配置 Splunk HEC 导出器。
splunk->otel_to_hec_fieldsotel_to_hec_fields配置 OpenTelemetry 到 HEC 字段的映射。
splunk->telemetrytelemetry配置导出器的遥测。
splunk->heartbeatheartbeat配置导出器的心跳设置。
splunk->batcherbatcher基于超时和最小项目数配置批处理请求。
clientclient配置用于将数据发送到 Splunk HEC 的 HTTP 客户端。
retry_on_failureretry_on_failure配置失败请求的重试机制。
queuequeue配置发送前的数据批处理。
debug_metricsdebug_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 块

名称类型描述默认值必需
intervaltime.Duration心跳间隔的时间间隔,以秒为单位。0秒
startup布尔值在导出器启动时发送心跳事件。false

telemetry 块

名称类型描述默认值必需
enabled布尔值在导出器内部启用遥测。false
override_metrics_namesmap(string)覆盖导出器中内部指标的指标。

batcher 块

名称类型描述默认值必需
enabled布尔值在发送到 consumerSender 之前是否不对批次进行排队。false
flush_timeouttime.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
timeoutduration在将请求标记为失败之前等待的时间。"15秒"
max_idle_conns整数限制客户端可以保持打开的空闲 HTTP 连接数。100
max_idle_conns_per_host整数限制主机可以保持打开的空闲 HTTP 连接数。2
max_conns_per_host整数限制每个主机的总连接数(拨号、活动和空闲)。零表示没有限制0
idle_conn_timeoutduration空闲连接自行关闭之前等待的时间。"45秒"
disable_keep_alives布尔值禁用 HTTP 保持活动。false
insecure_skip_verify布尔值忽略不安全的服务器 TLS 证书。false

retry_on_failure 块

retry_on_failure 块配置如何重试 splunkhec 的失败请求。

支持以下参数

名称类型描述默认值必需
enabled布尔值启用重试失败的请求。true
initial_intervalduration重试失败请求之前的初始等待时间。"5秒"
max_elapsed_timeduration在丢弃失败的批次之前等待的最大时间。"5分钟"
max_intervalduration重试之间等待的最大时间。"30秒"
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"`,则将永远重试失败的请求,直到成功为止。

queue 块

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

支持以下参数

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

enabledtrue 时,数据首先写入内存缓冲区,然后再发送到配置的服务器。发送到组件 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"`

导出字段

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

名称类型描述
inputotelcol.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。

alloy
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 秒发送一次心跳。

alloy
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 的组件

注意

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