我需要监视放置在与我的农场不同位置的几台 Linux 服务器。
我有VPN连接到这个远程位置。
在内部,我使用Zenoss 4来监视系统,我也想使用Zenoss来监视远程系统。对于合同政策,我不能对 Zenoss 数据使用 VPN 连接(例如 SNMP 或 SSH)。
我创建的是一堆脚本,用于将所需数据从远程系统获取到内部服务器。返回数据的格式为每个位置一个 CVS,包含来自放置在该位置的所有设备的数据。
例如:
$ cat LOCATION_1/current/current.csv
APPLIANCE1,out_of_memory,no,=,no,3,-
APPLIANCE1,postgre_idle,no,=,no,3,-
APPLIANCE2,out_of_memory,no,=,no,3,-
APPLIANCE2,postgre_idle,no,=,no,3,-
CVS 的格式是这样的:
主机名,CHECK_NAME,RESULT_VALUE,比较,DESIRED_VALUE,信息
当机器放置在内部农场中时,如何将这些数据集成到 Zenoss 中?如有必要,我最终可以更改获取数据的格式。
谢谢
一种可能性是,与远程系统通信的内部服务器(我们称之为INTERNAL1
)将事件重新发出为SNMP陷阱(或将它们写入rsyslog
文件),然后在Zenoss中处理它们。
例如,消息可以以服务器的名称开头:"[APPLIANCE1] Out of Memory"
。在 Zenoss Web 界面 (http://my_zenoss_install.local:8080/zport/dmd/Events/editEventClassTransform) 的"Event Class transform"部分,您可以转换传入消息的属性(使用 Python)。我经常使用它来降低事件的严重性。例如,
if evt.component == 'abrt' and evt.message.find('Saved core dump of pid') != -1:
evt.severity = 2 # was originally 3, I think
根据您的需要,您可以将evt.device
设置为APPLIANCE1
消息是否来自INTERNAL1
,并且包含[APPLIANCE1]
标记作为消息前缀,或者您希望用于唯一标识来自远程系统的消息/陷阱的任何其他内容。
我不认为这是实现目标的最佳方式。我对Zenoss的了解严格限于我目前需要使用它的内容。
附言:这是 Zenoss 关于使用事件转换的相当古老的文档。不幸的是,Zenoss 中的文档稀疏且分散(您可能已经了解过),因此可能需要在 Zenoss 论坛上搜索旧帖子和/或提问。
远程位置部署一个收集器,然后将该主机添加到收集器池中,还可以监视远程 Linux 服务器