概述
Splunk Sink Connector 消费 Kafka Topic 中的记录,并通过 Splunk HTTP Event Collector(HEC)将记录写入 Splunk。它位于 Kafka 与 Splunk 之间,适合把应用日志、审计事件、指标明细和业务事件持续送入 Splunk,以便检索、分析和告警。 Connector 默认使用 HEC/event 端点,将记录值包装为事件,并可为不同 Topic 设置 index、source 和 sourcetype。也可以切换到 /raw 端点发送原始内容,或通过 Kafka Header 动态覆盖 Splunk 元数据。任务会批量发送记录;默认未启用 HEC 确认时,成功的 HTTP 响应用于判定批次完成,启用确认后则等待 Splunk 返回对应的 indexer acknowledgement 再推进 Kafka Offset。故障恢复仍可能重放尚未提交的记录,因此下游应允许重复事件。
前置条件
- Splunk 已启用 HEC,并准备可用的 HEC URI 和 Token;Token 对默认或显式配置的 index 具有写入权限。
- 使用 HTTPS 并校验证书时,每个可能运行 Task 的 Worker 都能读取包含所需 CA 链的信任库文件。
- 启用 HEC 确认时,Splunk 中对应 Token 已启用 indexer acknowledgement。
授权许可
使用 Apache License 2.0。快速开始
提前准备 Connect Cluster、Kafka 输入 Topic 和 Splunk HEC,确认网络连通、Token 权限以及 Worker 对信任库的读取权限;创建和管理操作参见管理 Connector。以下配置使用 HTTPS/event 端点,并由 HEC Token 的默认设置决定 index、source 和 sourcetype。
JKS;使用其他受 JVM 支持的类型时添加 splunk.hec.ssl.trust.store.type。Token 和信任库密码应通过受控的配置管理方式提供。示例继承 Worker 的 Converter,实际记录编码不一致时应显式配置 key.converter 和 value.converter。
配置
HEC 连接与身份认证
splunk.hec.token
访问 Splunk HEC 的 Token。
- 类型:
password - 默认值:无,必填
- 重要级别:高
- 有效值 / 注意事项:使用已启用且有权写入目标 index 的 Token;按敏感配置管理,不写入日志或共享示例。
splunk.hec.uri
Splunk HEC 基础 URI。
- 类型:
string - 默认值:无,必填
- 重要级别:高
- 有效值 / 注意事项:可使用逗号分隔多个 HTTP 或 HTTPS URI;默认强制 HTTPS。避免在 URI 项目前后加入空白。
splunk.validation.disable
控制 Connector 配置校验时是否跳过对 Splunk 的实时请求。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:
false会使用第一个 HEC URI 对配置的 index 发送校验事件;true仅跳过该远程校验,不跳过必填项、URI、Kerberos 或 Task 配置检查。
kerberos.user.principal
用于 HEC HTTP 请求的 Kerberos Principal。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:启用 Kerberos 时必须与
kerberos.keytab.path同时设置;Kerberos 不替代 HEC Token。
kerberos.keytab.path
Kerberos Keytab 的 Worker 本地路径。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:启用 Kerberos 时必须与
kerberos.user.principal同时设置,并确保每个 Task 所在 Worker 可读取该文件。
TLS 安全
splunk.hec.ssl.enforced
控制是否强制 HEC URI 使用 HTTPS。
- 类型:
boolean - 默认值:
true - 重要级别:高
- 有效值 / 注意事项:
true拒绝 HTTP;设为false仍只接受 HTTP 或 HTTPS。使用 HTTP 会明文传输事件和 Token。
splunk.hec.ssl.validate.certs
控制 HTTPS 连接是否校验证书和主机名。
- 类型:
boolean - 默认值:
true - 重要级别:中
- 有效值 / 注意事项:保持
true时必须配置非空的splunk.hec.ssl.trust.store.path;仅在受控诊断或明确接受风险时关闭。
splunk.hec.ssl.trust.store.path
用于校验 Splunk 证书的信任库文件路径。
- 类型:
string - 默认值:空字符串
- 重要级别:高
- 有效值 / 注意事项:HTTPS 且启用证书校验时必填;路径必须对每个 Task 进程可见且可读。
splunk.hec.ssl.trust.store.type
信任库类型。
- 类型:
string - 默认值:
JKS - 重要级别:低
- 有效值 / 注意事项:常见值包括
JKS和PKCS12,实际支持范围取决于 JVM 安全提供程序。
splunk.hec.ssl.trust.store.password
加载信任库所需的密码。
- 类型:
password - 默认值:空字符串
- 重要级别:高
- 有效值 / 注意事项:按信任库实际设置填写并作为敏感配置管理;空字符串是 ConfigDef 默认值。
端点与事件格式
splunk.hec.raw
选择 HEC /raw 或 /event 端点。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:
false使用 JSON/event;true使用/raw,此时元数据按整个请求批次应用,事件字段增强和自定义 Header 字段不适用。
splunk.hec.raw.line.breaker
为 /raw 模式的每条记录追加分隔符。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:仅在
splunk.hec.raw=true时使用,并应与 Splunk sourcetype 的换行和事件切分规则一致。
splunk.hec.json.event.formatted
尝试把记录值解析为完整的 HEC JSON Event 对象。
- 类型:
boolean - 默认值:
false - 重要级别:低
- 有效值 / 注意事项:仅用于
/event;解析失败时记录值会回退为普通事件内容,而不是保持预格式化对象语义。
Splunk 元数据路由
splunk.indexes
为显式订阅的 Topic 指定 Splunk index。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:空值使用 HEC Token 默认 index;可提供一个值供所有 Topic 共用,或按
topics顺序提供等数量的逗号分隔值。topics.regex不支持这种位置映射。
splunk.sources
为显式订阅的 Topic 指定 Splunk source。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:可提供一个共用值,或按
topics顺序提供等数量的逗号分隔值;空值使用 HEC 默认设置,topics.regex不支持位置映射。
splunk.sourcetypes
为显式订阅的 Topic 指定 Splunk sourcetype。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:可提供一个共用值,或按
topics顺序提供等数量的逗号分隔值;空值使用 HEC 默认设置,topics.regex不支持位置映射。
Kafka Header 映射
splunk.header.support
启用 Kafka Header 到 Splunk 元数据和字段的映射。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:启用后,配置的 Header 可覆盖 index、host、source 和 sourcetype;
/raw会按这四类元数据对记录分组。
splunk.header.custom
指定写入 /event 字段的自定义 Kafka Header 名称。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:使用逗号分隔 Header 名称,需同时启用
splunk.header.support;不用于/raw的索引字段。
splunk.header.index
指定覆盖 Splunk index 的 Kafka Header 名称。
- 类型:
string - 默认值:
splunk.header.index - 重要级别:中
- 有效值 / 注意事项:仅在
splunk.header.support=true时使用,存在多个同名 Header 时使用最后一个值。
splunk.header.source
指定覆盖 Splunk source 的 Kafka Header 名称。
- 类型:
string - 默认值:
splunk.header.source - 重要级别:中
- 有效值 / 注意事项:仅在
splunk.header.support=true时使用,Header 值会转换为字符串。
splunk.header.sourcetype
指定覆盖 Splunk sourcetype 的 Kafka Header 名称。
- 类型:
string - 默认值:
splunk.header.sourcetype - 重要级别:中
- 有效值 / 注意事项:仅在
splunk.header.support=true时使用,Header 值会转换为字符串。
splunk.header.host
指定覆盖 Splunk host 的 Kafka Header 名称。
- 类型:
string - 默认值:
splunk.header.host - 重要级别:中
- 有效值 / 注意事项:仅在
splunk.header.support=true时使用,Header 值会转换为字符串。
事件字段与时间
splunk.hec.json.event.enrichment
为 /event 记录添加固定字段。
- 类型:
string - 默认值:空字符串
- 重要级别:低
- 有效值 / 注意事项:使用逗号分隔的
key=value项;每项必须恰好形成非空键和值,重复键以后出现的值为准。不适用于/raw。
splunk.hec.track.data
为 /event 添加 Kafka 位置和记录跟踪字段。
- 类型:
boolean - 默认值:
false - 重要级别:低
- 有效值 / 注意事项:可能包含 Topic、分区、Offset、时间戳、记录 key 和 Connect 主机信息;启用前评估敏感数据暴露。
splunk.hec.use.record.timestamp
使用 Kafka 记录时间戳作为普通 /event 事件时间。
- 类型:
boolean - 默认值:
true - 重要级别:中
- 有效值 / 注意事项:正则提取时间启用并成功时可覆盖该时间;不用于
/raw或已成功解析的预格式化事件。
splunk.hec.auto.extract.timestamp
控制是否向 HEC 请求附加 auto_extract_timestamp 参数。
- 类型:
boolean - 默认值:
null - 重要级别:低
- 有效值 / 注意事项:
null表示不发送该参数;显式设置true或false会将对应值交给 HEC。它与 Connector 的正则时间提取相互独立。
enable.timestamp.extraction
启用 Connector 侧的事件时间正则提取。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:仅用于普通
/event;启用时必须设置包含命名组time的timestamp.regex,并配置适用的时间格式。
timestamp.regex
从事件文本中提取时间值的 Java 正则表达式。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:启用提取时必须包含
(?<time>...)命名组;表达式针对事件的字符串表示执行。
timestamp.regex.timeout.ms
单条记录执行时间正则表达式的超时。
- 类型:
int - 默认值:
500 - 重要级别:中
- 有效值 / 注意事项:单位毫秒,最小值为
1;超时后保留此前已有的事件时间。
timestamp.format
解析正则提取值的时间格式。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:提取 Unix Epoch 时使用
epoch;其他值按 JavaSimpleDateFormat模式解析。启用提取时应显式设置。
timestamp.timezone
解析非 Epoch 时间时使用的时区。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:使用有效的 Java 时区 ID;仅在正则提取和非 Epoch 格式下生效。
HEC 确认与重试
splunk.hec.ack.enabled
启用 Splunk HEC indexer acknowledgement 轮询。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:启用前必须为 HEC Token 开启 indexer acknowledgement。关闭时,成功的 HTTP 响应即用于判定批次完成,但不表示事件已经持久化并可检索;默认值以 ConfigDef 的
false为准。
splunk.hec.event.timeout
等待 HEC 确认的超时时间。
- 类型:
int - 默认值:
300 - 重要级别:中
- 有效值 / 注意事项:单位秒,仅在
splunk.hec.ack.enabled=true时使用;应设置为适合 HEC 处理延迟的正值。
splunk.hec.ack.poll.interval
轮询 HEC 确认状态的间隔。
- 类型:
int - 默认值:
10 - 重要级别:中
- 有效值 / 注意事项:单位秒,仅在 HEC 确认启用时使用;线程调度要求可用的正值。
splunk.hec.ack.poll.threads
轮询 HEC 确认状态的线程数。
- 类型:
int - 默认值:
2 - 重要级别:中
- 有效值 / 注意事项:仅在 HEC 确认启用时使用,应配置正整数;默认值以 ConfigDef 的
2为准。
splunk.hec.max.outstanding.events
限制尚未完成的在途事件数量。
- 类型:
int - 默认值:
1000000 - 重要级别:中
- 有效值 / 注意事项:达到阈值会触发反压和可重试异常;结合单条记录大小、批量、确认延迟和 Worker 内存设置正值。
splunk.hec.max.retries
控制 Connector 对失败批次的内部重试次数。
- 类型:
int - 默认值:
5 - 重要级别:中
- 有效值 / 注意事项:正值限制失败批次的重试计数;在此实现中,
0或负值不会进入次数上限条件,表现为不限次数。它不同于 Kafka Connect 框架的errors.retry.timeout。
splunk.hec.backoff.threshhold.seconds
设置 HEC 通道失败后的反压时长。
- 类型:
int - 默认值:
60 - 重要级别:中
- 有效值 / 注意事项:单位秒;配置名中的
threshhold是公开键名的既有拼写,必须原样使用。
批量、并发与传输
splunk.hec.max.batch.size
设置单个 HEC 批次的最大记录数。
- 类型:
int - 默认值:
500 - 重要级别:中
- 有效值 / 注意事项:按记录数而非字节数计算;ConfigDef 默认值为
500。应使用正值,并结合单条事件大小和 HEC 请求限制调整。
splunk.flush.window
设置批量发送的时间窗口。
- 类型:
int - 默认值:
30 - 重要级别:低
- 有效值 / 注意事项:单位秒;达到批量记录数或在后续记录到达时观察到窗口经过会触发发送。仅正值会替换内部窗口。
splunk.hec.threads
设置每个 Task 内部发送 HEC 批次的线程数。
- 类型:
int - 默认值:
1 - 重要级别:低
- 有效值 / 注意事项:大于
1启用并发发送和有界队列;它不同于tasks.max,提高该值可能改变批次完成顺序。
splunk.hec.concurrent.queue.capacity
设置并发 HEC 发送队列的批次数容量。
- 类型:
int - 默认值:
100 - 重要级别:低
- 有效值 / 注意事项:必须大于
0;主要在splunk.hec.threads>1时承载待发送批次。
splunk.hec.total.channels
设置每个 Task 使用的 HEC 通道总量。
- 类型:
int - 默认值:
2 - 重要级别:高
- 有效值 / 注意事项:应使用正值;与多个 URI 和多个 HEC 线程共同决定通道分配,不等同于 Task 数量。
splunk.hec.max.http.connection.per.channel
设置每个目标的 HTTP 连接池上限。
- 类型:
int - 默认值:
2 - 重要级别:中
- 有效值 / 注意事项:应使用正值;总连接池还会受 HEC URI 数量影响。
splunk.hec.http.keepalive
控制 HEC HTTP 连接是否使用 Keep-Alive。
- 类型:
boolean - 默认值:
true - 重要级别:中
- 有效值 / 注意事项:
true或false;通常保持启用以复用连接。
splunk.hec.socket.timeout
设置 HEC 客户端声明的 Socket 超时时间。
- 类型:
int - 默认值:
60 - 重要级别:低
- 有效值 / 注意事项:单位秒;使用正值并结合网络和 HEC 响应时间评估。
splunk.hec.lb.poll.interval
设置 HEC URI 健康检查间隔。
- 类型:
int - 默认值:
120 - 重要级别:低
- 有效值 / 注意事项:单位秒;小于或等于
0会关闭带外健康检查。
splunk.hec.enable.compression
控制 HEC 请求实体是否使用 Gzip 压缩。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:同时适用于
/event和/raw;可减少网络传输量,但会增加 Worker 与 Splunk 的压缩处理开销。
Kafka Connect 身份、订阅与转换
connector.class
指定 Connector 实现类。
- 类型:
string - 默认值:无,必填
- 重要级别:高
- 有效值 / 注意事项:使用
com.splunk.kafka.connect.SplunkSinkConnector。
tasks.max
设置 Connector 可创建的最大 Task 数量。
- 类型:
int - 默认值:
1 - 重要级别:高
- 有效值 / 注意事项:最小值为
1;有效并行度还受输入 Topic 分区数限制。每个 Task 具有独立的 HEC 客户端和内部线程。
tasks.max.enforce
控制 Kafka Connect 是否强制 Connector 遵守 tasks.max。
- 类型:
boolean - 默认值:
true - 重要级别:低
- 有效值 / 注意事项:此项已弃用并计划在未来主版本移除;保持
true并通过tasks.max管理任务数,没有同名替代属性。
topics
指定 Connector 消费的 Kafka Topic。
- 类型:
list - 默认值:空列表
- 重要级别:高
- 有效值 / 注意事项:使用逗号分隔,必须与
topics.regex二选一。使用位置对应的splunk.indexes、splunk.sources或splunk.sourcetypes时必须选择本项。
topics.regex
使用正则表达式订阅 Kafka Topic。
- 类型:
string - 默认值:空字符串
- 重要级别:高
- 有效值 / 注意事项:必须是有效 Java 正则表达式,并与
topics二选一;不能使用位置对应的 Splunk 元数据列表,应改用 HEC 默认值或 Kafka Header。
key.converter
指定记录 key 的 Kafka Connect Converter。
- 类型:
class - 默认值:
null - 重要级别:低
- 有效值 / 注意事项:
null继承 Worker 配置;显式类必须是可实例化的Converter。记录 key 默认不作为事件内容发送。
value.converter
指定记录 value 的 Kafka Connect Converter。
- 类型:
class - 默认值:
null - 重要级别:低
- 有效值 / 注意事项:
null继承 Worker 配置;转换结果会由 Connector 序列化为文本、JSON 或 HEC Event 内容。
header.converter
指定 Kafka Header 的 Converter。
- 类型:
class - 默认值:
null - 重要级别:低
- 有效值 / 注意事项:
null继承 Worker 配置;启用splunk.header.support时应确保 Header 转换结果符合预期。
transforms
指定在 SinkTask 处理前依次执行的单消息转换(SMT)别名。
- 类型:
list - 默认值:空列表
- 重要级别:低
- 有效值 / 注意事项:别名必须唯一;每个转换还需配置
transforms.<alias>.type及其专属属性。
config.action.reload
控制 Config Provider 值变化或到期时的处理方式。
- 类型:
string - 默认值:
restart - 重要级别:低
- 有效值 / 注意事项:可选值为
restart或none;Config Provider 的注册属于 Worker 配置。
Kafka Connect 错误处理
errors.retry.timeout
设置 Kafka Connect 框架阶段可重试错误的总重试时长。
- 类型:
long - 默认值:
0 - 重要级别:中
- 有效值 / 注意事项:单位毫秒;
0不重试,-1表示无限重试。它不替代 Connector 自己的 HEC 批次重试。
errors.retry.delay.max.ms
设置 Kafka Connect 框架重试之间的最大等待时间。
- 类型:
long - 默认值:
60000 - 重要级别:中
- 有效值 / 注意事项:单位毫秒;与
errors.retry.timeout配合使用,不影响 HEC 通道的反压时长。
errors.tolerance
控制 Kafka Connect 框架是否容忍可报告的记录处理错误。
- 类型:
string - 默认值:
none - 重要级别:中
- 有效值 / 注意事项:可选值为
none或all;主要适用于转换、SMT 等框架阶段,不保证覆盖 Connector 内部的异步 HEC 失败。
errors.log.enable
控制是否记录 Kafka Connect 框架处理错误。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:该日志与 Connector 自身日志独立;启用后结合日志访问控制和保留策略使用。
errors.log.include.messages
控制框架错误日志是否包含记录上下文。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:启用后可包含 Topic、分区、Offset 和时间戳等信息;评估日志中的数据暴露风险,并与
errors.log.enable配合使用。
errors.deadletterqueue.topic.name
指定 Kafka Connect 框架死信 Topic。
- 类型:
string - 默认值:空字符串
- 重要级别:中
- 有效值 / 注意事项:空值关闭 DLQ;通常与
errors.tolerance=all配合。DLQ Topic 不能被topics或topics.regex订阅,且该机制不覆盖所有 Connector 内部 HEC 失败。
errors.deadletterqueue.topic.replication.factor
设置 Kafka Connect 自动创建 DLQ Topic 时的复制因子。
- 类型:
short - 默认值:
3 - 重要级别:中
- 有效值 / 注意事项:仅在 Connect 创建 DLQ Topic 时使用;值不得超过 Kafka 集群可用 Broker 数量。
errors.deadletterqueue.context.headers.enable
控制是否为 DLQ 记录添加 Kafka Connect 错误上下文 Header。
- 类型:
boolean - 默认值:
false - 重要级别:中
- 有效值 / 注意事项:启用后添加
__connect.errors.*Header;仅在配置了 DLQ 时有意义。
最佳实践
在生产接入时启用 HEC 确认
适用业务场景:快速开始已经完成基本写入,生产环境需要在 Splunk 返回 indexer acknowledgement 后再推进对应 Kafka Offset,并能接受故障恢复期间可能出现重复事件。 配置示例:沿用快速开始配置,并在 Splunk 中为同一 HEC Token 启用 indexer acknowledgement,再添加以下配置。扩展为多 Topic 的固定元数据路由
适用业务场景:初始单 Topic 接入已稳定,需要把应用日志和审计日志写入不同 index,并为每类数据设置明确的 source 与 sourcetype。 配置示例:在快速开始配置中替换topics,并添加与 Topic 顺序一一对应的元数据列表。
topics 数量相同的值;使用多个值时,位置必须严格对应。该方式不适用于 topics.regex。需要动态路由时应启用 Kafka Header 映射,或使用 HEC Token 默认元数据,并验证生产者 Header 值域和访问权限。
随吞吐增长逐步提高发送并行度
适用业务场景:单 Task、单 HEC 发送线程已稳定运行,但 Kafka 积压持续增长,Splunk HEC 和网络仍有可用容量,需要通过更多 Task、连接和压缩提高吞吐。 配置示例:以具有至少四个输入分区、HEC 可承载相应并发为前提,在快速开始配置上添加以下起始值,再通过压测逐项调整。监控
监控内容
关注 Kafka Connect 集群健康、Connector 和 Task 状态、消费与 HEC 写入吞吐、Kafka lag 和端到端延迟、Offset 提交进度、错误与重试,以及 Worker JVM 的堆内存、GC 和线程信号;同时关注 HEC 健康、确认超时、反压和重复事件。只有部署启用了相应框架错误处理时才关注 DLQ 活动,不能把 DLQ 视为所有 HEC 发送失败的兜底。导入 Grafana 大盘
下载AutoMQ Connect Cluster Grafana 大盘,准备可查询 Kafka Connect 指标的 Prometheus 兼容数据源,并确保采集标签与大盘筛选条件一致;在 Grafana 的导入页面上传 JSON,选择对应数据源后保存。限制条件
- 启用 HEC 确认并满足确认条件时,交付语义为至少一次;重试、崩溃、再均衡或确认响应缺失仍可能产生重复事件。未启用确认时,Connector 在成功 HTTP 响应后完成批次,不提供 indexer acknowledgement 保障。两种模式都不提供 exactly-once 或目标端去重。
- Splunk 返回
Invalid data format时,Connector 会把该响应视为已完成并允许 Kafka Offset 推进,即使对应事件被忽略。 topics.regex不能使用splunk.indexes、splunk.sources和splunk.sourcetypes的位置映射,需改用 Kafka Header 或 HEC Token 默认值。- HTTPS 且启用证书校验时,必须配置 Worker 可读取的自定义信任库路径。
/raw模式的 Splunk 元数据作用于整个请求批次,自定义 Kafka Header 不会作为索引字段加入原始事件。
常见问题
Connector 正常运行,但 Splunk 中查不到事件
检查 Task 日志和状态、HEC 健康、Token 是否启用及是否允许写入目标 index,并确认 URI、端点模式和/raw 换行规则正确。若启用了 HEC 确认,核对 Splunk Token 的 indexer acknowledgement 设置;若 Splunk 返回 Invalid data format,Connector 可能已推进 Offset。修正 HEC、权限或事件格式后,用一条小型有效事件重新验证。
故障恢复或重启后出现重复事件
HEC 可能已经接收批次,但 Kafka Offset 尚未提交,或确认响应在超时、连接切换和再均衡期间丢失。检查 HEC 确认和重试日志、Task 重启记录及 Offset 进度。正确启用 indexer acknowledgement,并按实际延迟设置超时;对不能接受重复的数据,在事件中保留稳定标识并在查询或后续处理中去重。Kafka lag 持续增加或同一批记录反复重放
检查最早未完成批次的 HEC 响应、确认轮询、失败重试和在途事件数量,并确认至少一个 HEC 通道健康。先恢复 Token、index、网络或 HEC 容量,再评估并行度;不要在未确认数据边界前直接重置 Offset,因为这可能造成数据缺失或更多重复。HTTPS 校验或 Task 启动时报信任库错误
确认splunk.hec.ssl.trust.store.path 在每个 Worker 上存在且可读,类型和密码正确,信任库包含 Splunk 证书的签发链,并核对 URI 主机名与证书匹配。修正信任库后重新启动 Task;不要把关闭证书校验作为长期解决方案。
事件写入了错误的 index、source 或 sourcetype
检查topics 顺序与三类元数据列表的数量和顺序,以及 Kafka Header 映射是否覆盖了静态值。使用 topics.regex 时,位置映射不会生效,应改用 Header 或 HEC Token 默认值。/raw 还会按一组请求元数据发送批次,应确保同一批记录适合共享这些元数据。
Splunk 中的事件时间不符合预期
依次检查 Kafka 记录时间戳、splunk.hec.use.record.timestamp、正则命名组、超时日志、timestamp.format、timestamp.timezone 和 HEC 自动时间提取设置。选择一种主要时间来源并用代表性事件验证,避免同时启用会相互覆盖的提取路径。