路由器、交换机、负载均衡、入侵防护系统等网络设备,可以通过syslog输出日志,您使用本地的中央rsyslog转发这些日志给日志易。
大多数网络设备使用旧的非结构化的日志格式,并使用UDP协议传输。日志易使用新的RFC5424标准来结构化日志,我们选择更可靠的TCP传输协议,我们将展示将旧日志转换为这种新的标准格式配置Linux系统的rsyslog协议进行转发。
添加UDP输入
创建一个新的UDP配置文件或打开现有的:
sudo vim /etc/rsyslog.d/forward_udp_2_tcp.conf
复制并粘贴此配置启用syslog,默认 UDP输入端口为514,会通过TCP协议转发数据到collector01的5140端口
# Modules
$ModLoad imudp
$UDPServerRun 514
# log every host in its own directory
$template RemoteHost,"/data/syslog/%$YEAR%-%$MONTH%-%$DAY%/%HOSTNAME%.log"
# 写本地文件
$template LocalFileFormat,"%timestamp:::date-rfc3339% %HOSTNAME% %syslogfacility-text% %syslogseverity-text% %syslogtag%%msg%\n"
# 写远程Collector,这里将appname固定为"switch",注意修改token和tag
$template RizhiyiFormat,"<%pri%>%protocol-version% %timestamp:::date-rfc3339% %HOSTNAME% switch %procid% %msgid% [your-token@32473 tag=\"udp\"]%msg%\n"
# 发送数据,注意修改collector01为具体的collector地址
#if $inputname == 'imudp' then ?RemoteHost;LocalFileFormat
if $inputname == 'imudp' then @@collector01:5140;RizhiyiFormat
if $inputname == 'imudp' then ~
重启rsyslog进程:
#如果是CentOS 7及以上版本,重启此服务命令为:
$sudo systemctl restart rsyslog.service
#否则为
$sudo service rsyslog restart
发送一条测试日志
使用netcat发送一条测试日志,使用rsyslog来验证能够接收UDP信息:
echo ":hello" | nc -u -w 1 localhost 514
该消息应显示在您的系统日志和日志易中:
tail -f /data/syslog/$(date +%Y-%m-%d)/localhost.log
配置网络设备
获取本地中央rsyslog的IP地址,然后配置网络设备发送日志到这个IP,请查看您的设备文档如何配置。
ifconfig eth0
校验
搜索日志易中过去一小时的网络设备日志。这可能需要几十秒钟的时间来索引日志。如果它没有正常工作,请参阅下面的疑难解答。
如果您在验证时看不到搜索结果,请检查下列常见问题
建立索引可能需要几十秒钟,请稍等
请使用类似Linux的tcpdump进行抓包分析,查看本地中央rsyslog服务器是否从网络设备接收到UDP消息