如何使用Splunk Universal Forwarder转发syslog流且无需写入磁盘
Splunk Universal Forwarder 直接转发syslog流(无需落盘)实现方法
以下是CentOS 7环境下的两种常用实现方案,无需提前将syslog写入磁盘即可完成转发:
方案1:UF直接监听syslog端口接收全量日志
适合需要接收本机所有syslog流的场景:
- 进入UF配置目录
$SPLUNK_HOME/etc/system/local/,新建或编辑inputs.conf - 添加如下配置,以UDP 514端口为例:
[udp://0.0.0.0:514] connection_host = ip sourcetype = syslog index = <你的目标索引名> disabled = 0
- 重启UF生效:
$SPLUNK_HOME/bin/splunk restart
提示:如果要只保留local系列facility的日志,可以在UF的
props.conf和transforms.conf配置过滤规则,丢弃其他facility的日志即可。
方案2:rsyslog定向转发指定local设施日志到UF
适合只需要转发local0~local7等指定facility日志的场景,过滤逻辑更简单:
- 配置rsyslog转发规则
- 新建rsyslog规则文件
/etc/rsyslog.d/10-splunk-local.conf,避免修改主配置 - 添加规则,以转发local0、local1日志到本机UF的1514 UDP端口为例:
local0.* @127.0.0.1:1514 local1.* @127.0.0.1:1514 # 如需转发更多local设施,按上述格式新增行即可
- 重启rsyslog生效:
systemctl restart rsyslog
- 配置UF接收规则
- 编辑UF的
inputs.conf,添加本地端口监听配置:
[udp://127.0.0.1:1514] connection_host = dns sourcetype = syslog index = <你的目标索引名> disabled = 0
- 重启UF生效:
$SPLUNK_HOME/bin/splunk restart
可选优化项
- 可靠性优化:如果需要保障日志不丢失,将rsyslog配置中的
@改为@@(使用TCP协议),同时将UF inputs中的udp://改为tcp://即可 - 低权限运行适配:如果UF不用root运行,避免占用1024以下端口,直接用1514这类高位端口即可;如果必须用514端口,执行以下命令给splunkd开放端口权限:
setcap 'cap_net_bind_service=+ep' $SPLUNK_HOME/bin/splunkd - 避免重复上报:删除原有配置中读取本地syslog文件的monitor输入,避免同一份日志重复上报到Splunk服务端
内容的提问来源于stack exchange,提问作者Shreya Patni
相关产品推荐
相关产品推荐

