2 个版本
0.1.1 | 2022年1月25日 |
---|---|
0.1.0 | 2022年1月25日 |
#25 in #syslog
125KB
81 行
📥 cisco-logger
起源
我的 Cisco 交换机可以配置为向系统日志服务器发送系统日志消息。这是一个很好的功能,因为服务器可以将其自己的日志收集这些信息。通常这是一个常规的 syslogd/rsyslogd 或一些兼容的服务器,但在我的 Linux 磁盘上,我正在使用 systemd 日志进行记录。
我正在使用一个“穷人版的系统日志服务器”,如这里所描述,但尽管它的简单性,经过一段时间后,我发现这种方法的局限性,所以我决定写一个自己的工具来满足我的需求...
关于
这是一个小工具,用于解析由 Cisco 硬件生成的 RFC 3164 系统日志 消息。我仅在 Cisco Sx220 系列
上进行了测试,但也许它应该可以在更多的 Cisco 硬件上工作(只要系统日志消息格式保持不变,并且可能性很大 - 因为这是 RFC 标准)。
功能
其中一个主要功能是将系统日志消息格式化为具有花哨(彩色)且用户友好的外观。对我来说主要问题是,例如,我得到了由交换机生成的原始消息
<189>12月24 2021 21:18:13 192.168.1.1 %端口-5:千兆以太网 11 链路已建立
遗憾的是,除了端口号码外,这个消息没有告诉我 什么 连接到这个 #11 端口。
即使在 Cisco 本身中正确设置了端口的描述,它也不会直接在日志中暴露这些信息。
我决定创建一个简单的配置文件,我将端口号分配给用户友好的描述,其中包含有关连接到指定端口的设备的信息。
结果,该工具能够将上述信息记录如下
局限性
因为我只有一个 Cisco 交换机在我的网络中,所以我不需要在每个消息中通知其 IP 地址,所以我将其删除。同样适用于设施,它似乎始终设置为 LOG_LOCAL7
。
消息也包含时间戳。然而,这个问题在于精度。它只有秒级分辨率。因此,我决定忽略这些信息,尤其是在我通过systemd单元运行此工具的情况下,因为systemd内部会为每条消息生成时间戳,所以打印这些信息完全没有意义。此外,systemd允许以更高的精度显示消息(下面有命令示例)。
配置文件
工具正在搜索以下配置文件
/etc/cisco-logger.conf
示例文件可能包含以下内容
[listen]
address = 0.0.0.0:514
[ports]
3 = "Wi-Fi Access Point 📡"
4 = "Raspberry Pi"
5 = "Laptop 💻"
8 = "Computer 🖥️"
14 = "ethlcd 📟"
端口描述是可选的。如果您不提供端口描述(或只提供其中一些的描述),它将只显示原始端口名称,无法匹配描述。
systemd集成
以下是systemd的示例服务文件
systemd/cisco-logger.service
您需要根据需要调整它(例如,检查二进制路径)。
将单元文件放置在正确的位置并重新加载systemd后,可以像往常一样启动单元
systemctl start cisco-logger.服务
使用以下命令可以查看带颜色和精确时间戳的日志
journalctl-f-a-o short-precise-u cisco-logger
依赖项
~2.5MB
~42K SLoC