0x1 rsyslog
这里记录 rsyslog 的方式作为日志服务器持久化日志,为什么需要rsyslog呢? 举一个身边常见的例子,常见的三层交换机、路由器等网络设备保存的日志条目只有512条,并且网络设备的日志量是不低的,那么意味着,如果有一个网络问题出现,想要排查之前十几分钟甚至半个小时的日志都非常困难,所以需要一个日志系统来持久化保存历史
0x2 为什么rsyslog
其实翻一翻文档可以看到,网络设备默认配置 syslog 协议发送日志到服务器,这部分已经能够被 logstash 替换了,所以最终我们的目标可以是,直接对接网络设备和 elfk。 但 syslog 胜在简单,如果小公司不想单独弄一个复杂的日志系统,那么简单的 rsyslog 服务器也是能够满足需求的
rsyslog 配置
这里以收集 H3C 设备日志为例,其中 H3C 的配置部分参考本站内的文档 H3C设备持久化日志到rsyslog服务器
:
-
使用 yum 安装 rsyslog
-
修改 rsyslog 配置文件 /etc/rsyslog.conf,开启 udp 和 tcp 端口监听:
# Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514 # Provides TCP syslog reception $ModLoad imtcp $InputTCPServerRun 514
在文件的前面部分,默认是注释的,启动 rsyslog 服务不会监听,取消注释即可
-
在配置文件最后追加如下内容:
$template h3c,"/data/logs/h3c/%FROMHOST-IP%.log" local6.* ?h3c #$template huawei,"/log_data/huawei/%FROMHOST-IP%.log" #local5.* ?huawei #$template cisco,"/log_data/cisco/%FROMHOST-IP%.log" #local4.* ?cisco
这里提供了三种品牌设备的日志收集方式,配置格式不是强制的。以 h3c 为例:第一行定义了一个h3c名字的模板,并且定义了保存的路径和文件名(以源ip命名),第二行定义收集 local6 类型的所有日志为应用到上面定义的 h3c 这个模板上。其中最关键的是这里 local6 要和网络设备中的配置一致即可。
-
至此重启 rsyslog 服务,在网络设备与日志服务器之间网络正常的情况下,即可在上面定义的目录中看到最新的日志
评论