【rsyslog】使用rsyslog采集设备日志输出到logstash

本文档详细介绍了如何配置rsyslog模块,通过imudp输入模块监听514端口,接收到日志后按照指定模板格式化,并使用omfwd将日志转发到目标IP的5144端口。配置中涉及队列管理,包括最大文件大小、保存策略等,确保日志处理的高效和可靠性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

module(load="imudp" threads="4"
       timeRequery="8" batchSize="128")

input(type="imudp" port="514"
      ruleset="writeRemoteData")

template(name="outfmt" type="string" 
     string="{\"message\":\"%msg:::json%\",\"source\":\"%fromhost%\",\"facility\":\"%syslogfacility-text%\",
\"priority\":\"%syslogpriority-text%\",\"timereported\":\"%timereported:::date-rfc3339%\",\"timegenerated\":\"%timegenerated:::date-rfc3339%\"}")

ruleset(name="writeRemoteData"
	queue.filename="mainQ"
	queue.spoolDirectory="/app/wutongshu/rsyslog"
    queue.type="LinkedList"
	queue.maxfilesize="1024M"
	queue.saveOnShutdown="on"
    queue.size="2500000"
    queue.dequeueBatchSize="4096"
    queue.workerThreads="8"
#	queue.discardSeverity ="4"
    queue.workerThreadMinimumMessages="120000"
       ) {
    action(type="omfwd" template="outfmt" target="192.168.113.99" port="5144" protocol="tcp")
}

参考:高性能接收日志样例

参考:队列基础知识

参考:队列参数

参考:队列权威指南

### 配置 Rsyslog 将特定日志文件转发至远程服务器 为了实现将来自不同端口的日志消息分类处理并转发到远程 rsyslog 服务,在 `/etc/rsyslog.conf` 或者 `/etc/rsyslog.d/` 下创建一个新的配置文件中加入如下所示的内容: 对于版本8.2112的rsyslog,可以利用模块加载功能以及条件语句来完成复杂的需求。首先确保启用了网络支持以便能够向远端发送数据。 ```bash module(load="imtcp") # 加载TCP输入插件 input(type="imtcp" port="10514") # 定义第一个监听器及其端口号 input(type="imtcp" port="10515") # 第二个监听器定义 input(type="imtcp" port="10516") # 第三个监听器定义, 特殊情况下的端口 ``` 针对特殊需求——即仅当接收到的消息来源于10516端口且具有 `mail.*` 的设施级别时将其单独保存到指定位置,则可以通过以下方式设置动作规则: ```bash if ($port == "10516" and $syslogfacility-text == 'mail') then { action( type="omfile" file="/var/log/mail-special.log" ) } ``` 上述命令会检查传入连接是否来自于设定好的端口并且匹配相应的设施名称;如果满足条件则执行大括号内的操作,这里是指定要记录的位置为 `/var/log/mail-special.log`. 接着,为了让其他非邮件类别的日志也得到适当处理,还需要继续添加一般性的转发指令: ```bash *.* @remote-server-ip:port;RSYSLOG_SyslogProtocol23Format # 使用UDP协议传输给远程主机 # 或者使用下述更安全的方式通过TLS加密通道传送 *.* @@remote-server-ip:port;RSYSLOG_SyslogProtocol23Format ``` 注意这里的区别在于单个 '@' 表示采用 UDP 协议而双 '@' 则意味着 TCP 连接。最后面的部分指定了所使用的格式化模板,这有助于保持兼容性和一致性[^1]。 一旦完成了以上更改之后,请记得重启 rsyslog 服务使新的配置生效,并验证其工作状态以确认一切正常运行。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值