我需要使用名为Zenoss的监控工具在多台服务器上设置一个进程监控器。我面临的问题是如何通过SNMP获取特定进程的信息?我对SNMP一点也不熟悉,很难找到我需要的东西。
我一直在尝试使用一种名为SNMP Probe的工具,但它似乎只提供基本的系统信息,而不是我需要或可以使用的信息。
感谢您的帮助。
您需要的是查询hrSWRunTable,以便收集所需的信息。该MIB为您提供了许多信息,如进程名称、路径、类型、状态、参数、CPU和RAM使用情况,即使这两个信息存储在另一个MIB(hrSWRunPerfEntry)上。然而,如何进行"查询"取决于您使用的环境,我几乎可以肯定vbs包括SNMP库。
以下是通过NetSnmp从Linux主机检索的示例(我本想把它作为对@raz3r接受的答案的评论来添加,但我想要格式化文本的能力!)
snmptable -v2c -Ci -c public myserver HOST-RESOURCES-MIB::hrSWRunTable
SNMP table: HOST-RESOURCES-MIB::hrSWRunTable
index hrSWRunIndex hrSWRunName hrSWRunID hrSWRunPath hrSWRunParameters hrSWRunType hrSWRunStatus
1 1 "init" SNMPv2-SMI::zeroDotZero "/sbin/init" "" application runnable
2 2 "kthreadd" SNMPv2-SMI::zeroDotZero "kthreadd" "" application runnable
3 3 "ksoftirqd/0" SNMPv2-SMI::zeroDotZero "ksoftirqd/0" "" application runnable
// other rows snipped for brevity
我只是在做同样的事情
snmpwalk-v2c-c公共xxx.xxx.xxx.xx.1.3.6.1.2.1.25.4.2.1.2
主机资源-MIB::hrSWRunName
不幸的是,我无法找到确切的方法。最后,我在每台机器上都使用了一个vbs脚本来查找行为不端的进程并自动将其杀死。