最近参加一个项目,需要做一个系统监控,需求是用控制主机来获取各个代理机器的一些主机信息,使用SNMP协议取得。
整机情报:
1.3.6.1.2.1.1.1.0 sysDescr 获取被监控系统的硬件和软件的基本信息
1.3.6.1.2.1.1.5.0 sysName 获取被监控系统的主机名
1.3.6.1.2.1.4.20.1.1.[实际IP地址] ipAdEntAddr.[实际IP地址] 因为网卡不唯一的原因,这里实际上可以获取多个网卡信息
1.3.6.1.2.1.25.2.2.0 总物理内存(KB)
1.3.6.1.2.1.25.2.3.1.4.[9] 总簇数量(括号里面的数字代表物理内存)
1.3.6.1.2.1.25.2.3.1.6.[9] 已使用的簇数量
1.3.6.1.2.1.25.2.3.1.5.[9] 总共可以使用的块
1.3.6.1.2.1.25.3.3.1.2.[3-6] 4核心各自的CPU使用率(这里不清楚为什么从3开始,可能前面两个被隐藏了?)
各进程情报:
1.3.6.1.2.1.25.4.2.1.2.[PID] 可以根据进程名来查找OID组下面对应的PID是多少
1.3.6.1.2.1.25.5.1.1.2.[PID] 各进程分配的内存(KB)
1.3.6.1.2.1.25.5.1.1.1.[PID] 各个进程从开始运行开始所用的时间片数量(单位:百分之一秒)
没有直接获取进程占用百分比的方法,这里必须要手工计算,计算方式如下:
时间片1:第一次获取的PID时间片
总时间1:第一次获取的所有PID的时间片
时间片2:第二次获取的PID时间片
总时间2:第二次获取的所有PID的时间片
PID占用率=(时间片2-时间片1)/(总时间2-总时间1)
所以这个时间间隔比较关键,因为SNMP并没有实时的汇报进程信息(或许可以配置?),我在实验的时候,是间隔了2分钟,这个时间片才反映过来。
这里可能需要注意一下。