我在公司工作了 1 年半多,但公司的日志服务器我真的是很少摸过,都是前辈大佬们留下来的遗物,已经 1 年多没有怎么维护过了。我们的日志服务器主要是自动收集各核心设备的告警信息,并展示到我们的监控墙中,并存储到硬盘中以便往后查询。
我比较了其他日志服务器平台,还是不如 Kiwi Syslog 直接方便,毕竟在 Windows 就能直接用了,所以先作为本次的主角
搭建 Kiwi Syslog
日志服务器的实现原理是,在服务器开启 UDP 514 端口(可以开 TCP/SNMP trip),再配置远程设备的信息系统,指定到日志服务器的 IP 或 DNS 地址即可。
怎么安装与琐碎
你上网找吧,破解版或体验版就看别人的讲解好一点。安装完毕后记得先在防火墙放行 514 端口,如果设定成其他端口或开启 TCP 端口需要放行相关端口才可以接收。
安装完毕后
这个工具基本部署后就能拎包入住,不过个人建议先点击 [File] -- [Setup],将 [Inputs] 的 [UDP] 中的 [Date encoding] 改为 UTF-8
,避免不同设备的编码问题。
搞定完毕后,我们就开始配置远程设备的日志信息平台吧
用华为交换机发送日志
毕竟爷的家里没有实体交换机,只能在公司摸一摸。所以只能用在大学中又爱又恨的 eNSP
模拟交换机配置信息中心系统,发送到我的 Kiwi Syslog
服务器中。
拓扑图
很简单的 HCNA 范例,但由于需要跟物理机通信必须开 Cloud 桥接到电脑的虚拟网卡中。
Cloud 的配置,使用 VMware 虚拟机的 NAT 网卡,实际上不需要开启虚拟机。其实开一张虚拟 Loopback 网卡就行了。
配置命令
交换机链路配置就不展示了,但本次实现需要所有设备除了模拟PC外都要连通物理机,所以需要全网可达外网。主要是怎样配置华为的 info-center
发送到我们的日志服务器中。
其中:
- loghost 是远程日志服务器的主机IP,而 channel loghost 是 loghost 通道,可以理解为一个消息区域
- timestamp log date 设置日志时间格式
- 在 loghost频道中,关闭所有模块的状态
将 192.168.223.1 作为日志主机,设置信息级别为
信息级
,并允许所有信息输出到这个模块info-center enable
info-center loghost 192.168.223.1 channel loghost
info-center timestamp log date
info-center source default channel loghost debug state off log state off trap state off
info-center loghost 192.168.223.1 facility local6 language english
info-center source default channel loghost log level informational
配置完毕后,输入 show channel loghost 查看是否通道是否生效。
关于配置相关问题可见下方的参考资料中,我也是拿来的。
用 Python3 发送日志信息
这是最简单的发送日志信息的脚本,用 logging 的日志库发送日志信息。除了交换机,我们也可以通过服务器以脚本的形式发送到日志服务器中。
import logging
import logging.handlers
logger = logging.getLogger()
fh = logging.handlers.SysLogHandler(('127.0.0.1', 514), logging.handlers.SysLogHandler.LOG_AUTH)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)
logger.warning("加油!奥力给!!")
实验情况
我们将交换机到 PC 的链路 shutdown
,按理来说在 Kiwi Syslog 会出现 Down 的日志告警。如图所示,连我敲的命令和状态信息都会直接输出在前端,可说明成功收集到日志了
执行下脚本,也会收到电脑发出的日志信息。
进阶
只展示我们想看的内容
如果未来再搞几百台设备,一堆无用的数据刷着我们就无法正常获得我们想要的,那有没有一款可以过滤信息的日志服务...................Kiwisyslog 就自带这功能了!
打开 Setup
,在 [Rules] 的标签中点击左上角的新建的图标按钮,然后名字自取,改成想要的名称。目前我的想法先把接口中断的告警发送到另一个展示页 (Display 01)中
先在 [Filters] 新建一个标签,看到 [New Filter] 点击进去,在头上有个两个选择栏,
- Field:Message text
- Filter Type:Complex 或 Simple(看需求,Complex 可以匹配多个关键字,会正则建议 RegExp)
- 内容,字符串必须带双引号,否则点击 OK 会报错。
设置好过滤器规则,我们就要配置 Actions,跟上面一样,也要在 [Actions] 中新建标签页,将内容展示到 Display 01 中,最后OK 即可。
我们再执行shutdown操作,可以看到日志已经输出到 01 分区中了,其他日志不会再出现。
我想收告警邮件
啊,我的老伙计,因为系统刷得太快,我们查阅还要翻翻滚动条才能看到最近的日志,就想看回以前的告警岂不是很麻烦,一个一个文件得找。用邮件提醒是好办法,收到什么值得注意的告警发一份日志文字到我的邮箱,我有空再去瞧瞧就行。(兄啊,你就不会去 Kiwisyslog 网页端看吗?)
(公司的kiwi还是旧版,完全不支持 SSL 的 SMTP 端口,逼得我自建邮箱给同事们看。而新版已经支持加密的 SSL,ohhhhhhhh)
在 Kiwisyslog 也有邮件提醒功能,同样打开 [Setup] 的 [E-mail] ,先配置好相关邮箱配置。如果 Test 中收到邮件就表示成功了
好了好了,最后我们配置下如果上面的端口断了,发送一份告警邮件到我的邮箱。在上面的过滤规则的行为中再添加一个动作即可。配置如下,配置完毕务必 Test 一下。
再执行一下刚才的操作,看看有无收到相关邮件。(如果没有收到邮件,要关掉kiwi syslog,以管理员权限运行才可以。)
参考资料
- Python 发送 syslog :https://blog.csdn.net/oXiaoChong12345/article/details/74769277
- Huawei设备配置syslog : https://blog.csdn.net/gaohaicheng123/article/details/78750981
评论已关闭