说明:
cacti通过snmp协议来获取设备信息。当cacti无法获取设备信息时,可以通过snmpwalk来判断哪里无法获取。例:snmpwalk -v 2c -c public 127.0.0.1 .1.3.6.1.4.1.2021.58就可以获取cpu 1min的负载。
linux下常用snmp oid
CPU Statistics
Load 1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1 5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2 15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3 CPU time percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0 raw user cpu time: .1.3.6.1.4.1.2021.11.50.0 percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0 raw system cpu time: .1.3.6.1.4.1.2021.11.52.0 percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0 raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0 raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0
Memory Statistics
Total Swap Size: .1.3.6.1.4.1.2021.4.3.0 Available Swap Space: .1.3.6.1.4.1.2021.4.4.0 Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0 Total RAM used: .1.3.6.1.4.1.2021.4.6.0 Total RAM Free: .1.3.6.1.4.1.2021.4.11.0 Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0 Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0 Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0
Disk Statistics
The snmpd.conf needs to be edited. Add the following (assuming a machine with a single ‘/’ partition): disk / 100000 (or) includeAllDisks 10% for all partitions and disks The OIDs are as follows Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1 Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1 Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1 Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1 Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1 Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1 Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1 System Uptime: .1.3.6.1.2.1.1.3.0
实例:
//These Commands you need to run on the SNMP server /Get available disk space for / on the target host snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.9.1.7.1 //this will return available disk space for the first entry in the ‘disk’ section of snmpd.conf; replace 1 with n for the nth entry //Get the 1-minute system load on the target host snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.1 //Get the 5-minute system load on the target host snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.2 //Get the 15-minute system load on the target host snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.10.1.3.3 //Get amount of available swap space on the target host snmpget -v 1 -c “community” target_name_or_ip .1.3.6.1.4.1.2021.4.4.0
附录:
Variable Descriptor Object Identifier System Group sysDescr 1.3.6.1.2.1.1.1 sysObjectID 1.3.6.1.2.1.1.2 sysUpTime 1.3.6.1.2.1.1.3 sysContact 1.3.6.1.2.1.1.4 sysName 1.3.6.1.2.1.1.5 sysLocation 1.3.6.1.2.1.1.6 sysServices 1.3.6.1.2.1.1.7 Interfaces Group ifNumber 1.3.6.1.2.1.2.1 ifTable 1.3.6.1.2.1.2.2 ifEntry 1.3.6.1.2.1.2.2.1 ifIndex 1.3.6.1.2.1.2.2.1.1 ifDescr 1.3.6.1.2.1.2.2.1.2 ifType 1.3.6.1.2.1.2.2.1.3 ifMtu 1.3.6.1.2.1.2.2.1.4 ifSpeed 1.3.6.1.2.1.2.2.1.5 ifPhysAddress 1.3.6.1.2.1.2.2.1.6 ifAdminStatus 1.3.6.1.2.1.2.2.1.7 ifOperStatus 1.3.6.1.2.1.2.2.1.8 ifLastChange 1.3.6.1.2.1.2.2.1.9 ifInOctets 1.3.6.1.2.1.2.2.1.10 ifInUcastPkts 1.3.6.1.2.1.2.2.1.11 ifInNUcastPkts 1.3.6.1.2.1.2.2.1.12 ifInDiscards 1.3.6.1.2.1.2.2.1.13 ifInErrors 1.3.6.1.2.1.2.2.1.14 ifInUnknownProtos 1.3.6.1.2.1.2.2.1.15 ifOutOctets 1.3.6.1.2.1.2.2.1.16 ifOutUcastPkts 1.3.6.1.2.1.2.2.1.17 ifOutNUcastPkts 1.3.6.1.2.1.2.2.1.18 ifOutDiscards 1.3.6.1.2.1.2.2.1.19 ifOutErrors 1.3.6.1.2.1.2.2.1.20 ifOutQLen 1.3.6.1.2.1.2.2.1.21 ifSpecific 1.3.6.1.2.1.2.2.1.22 IP Group ipForwarding 1.3.6.1.2.1.4.1 ipDefaultTTL 1.3.6.1.2.1.4.2 ipInReceives 1.3.6.1.2.1.4.3 ipInHdrErrors 1.3.6.1.2.1.4.4 ipInAddrErrors 1.3.6.1.2.1.4.5 ipForwDatagrams 1.3.6.1.2.1.4.6 ipInUnknownProtos 1.3.6.1.2.1.4.7 ipInDiscards 1.3.6.1.2.1.4.8 ipInDelivers 1.3.6.1.2.1.4.9 ipOutRequests 1.3.6.1.2.1.4.10 ipOutDiscards 1.3.6.1.2.1.4.11 ipOutNoRoutes 1.3.6.1.2.1.4.12 ipReasmTimeout 1.3.6.1.2.1.4.13 ipReasmReqds 1.3.6.1.2.1.4.14 ipReasmOKs 1.3.6.1.2.1.4.15 ipReasmFails 1.3.6.1.2.1.4.16 ipFragsOKs 1.3.6.1.2.1.4.17 ipFragsFails 1.3.6.1.2.1.4.18 ipFragCreates 1.3.6.1.2.1.4.19 ipAddrTable 1.3.6.1.2.1.4.20 ipAddrEntry 1.3.6.1.2.1.4.20.1 ipAdEntAddr 1.3.6.1.2.1.4.20.1.1 ipAdEntIfIndex 1.3.6.1.2.1.4.20.1.2 ipAdEntNetMask 1.3.6.1.2.1.4.20.1.3 ipAdEntBcastAddr 1.3.6.1.2.1.4.20.1.4 ipAdEntReasmMaxSize 1.3.6.1.2.1.4.20.1.5 ICMP Group icmpInMsgs 1.3.6.1.2.1.5.1 icmpInErrors 1.3.6.1.2.1.5.2 icmpInDestUnreachs 1.3.6.1.2.1.5.3 icmpInTimeExcds 1.3.6.1.2.1.5.4 icmpInParmProbs 1.3.6.1.2.1.5.5 icmpInSrcQuenchs 1.3.6.1.2.1.5.6 icmpInRedirects 1.3.6.1.2.1.5.7 icmpInEchos 1.3.6.1.2.1.5.8 icmpInEchoReps 1.3.6.1.2.1.5.9 icmpInTimestamps 1.3.6.1.2.1.5.10 icmpInTimestampReps 1.3.6.1.2.1.5.11 icmpInAddrMasks 1.3.6.1.2.1.5.12 icmpInAddrMaskReps 1.3.6.1.2.1.5.13 icmpOutMsgs 1.3.6.1.2.1.5.14 icmpOutErrors 1.3.6.1.2.1.5.15 icmpOutDestUnreachs 1.3.6.1.2.1.5.16 icmpOutTimeExcds 1.3.6.1.2.1.5.17 icmpOutParmProbs 1.3.6.1.2.1.5.18 icmpOutSrcQuenchs 1.3.6.1.2.1.5.19 icmpOutRedirects 1.3.6.1.2.1.5.20 icmpOutEchos 1.3.6.1.2.1.5.21 icmpOutEchoReps 1.3.6.1.2.1.5.22 icmpOutTimestamps 1.3.6.1.2.1.5.23 icmpOutTimestampReps 1.3.6.1.2.1.5.24 icmpOutAddrMasks 1.3.6.1.2.1.5.25 icmpOutAddrMaskReps 1.3.6.1.2.1.5.26 TCP Group tcpRtoAlgorithm 1.3.6.1.2.1.6.1 tcpRtoMin 1.3.6.1.2.1.6.2 tcpRtoMax 1.3.6.1.2.1.6.3 tcpMaxConn 1.3.6.1.2.1.6.4 tcpActiveOpens 1.3.6.1.2.1.6.5 tcpPassiveOpens 1.3.6.1.2.1.6.6 tcpAttemptFails 1.3.6.1.2.1.6.7 tcpEstabResets 1.3.6.1.2.1.6.8 tcpCurrEstab 1.3.6.1.2.1.6.9 tcpInSegs 1.3.6.1.2.1.6.10 tcpOutSegs 1.3.6.1.2.1.6.11 tcpRetransSegs 1.3.6.1.2.1.6.12 tcpConnTable 1.3.6.1.2.1.6.13 tcpConnEntry 1.3.6.1.2.1.6.13.1 tcpConnState 1.3.6.1.2.1.6.13.1.1 tcpConnLocalAddress 1.3.6.1.2.1.6.13.1.2 tcpConnLocalPort 1.3.6.1.2.1.6.13.1.3 tcpConnRemAddress 1.3.6.1.2.1.6.13.1.4 tcpConnRemPort 1.3.6.1.2.1.6.13.1.5 tcpInErrs 1.3.6.1.2.1.6.14 tcpOutRsts 1.3.6.1.2.1.6.15 UDP Group udpInDatagrams 1.3.6.1.2.1.7.1 udpNoPorts 1.3.6.1.2.1.7.2 udpInErrors 1.3.6.1.2.1.7.3 udpOutDatagrams 1.3.6.1.2.1.7.4 udpTable 1.3.6.1.2.1.7.5 udpEntry 1.3.6.1.2.1.7.5.1 udpLocalAddress 1.3.6.1.2.1.7.5.1.1 udpLocalPort 1.3.6.1.2.1.7.5.1.2 SNMP Group snmpInPkts 1.3.6.1.2.1.11.1 snmpOutPkts 1.3.6.1.2.1.11.2 snmpInBadVersions 1.3.6.1.2.1.11.3 snmpInBadCommunityNames 1.3.6.1.2.1.11.4 snmpInBadCommunityUses 1.3.6.1.2.1.11.5 snmpInASNParseErrs 1.3.6.1.2.1.11.6 NOT USED 1.3.6.1.2.1.11.7 snmpInTooBigs 1.3.6.1.2.1.11.8 snmpInNoSuchNames 1.3.6.1.2.1.11.9 snmpInBadValues 1.3.6.1.2.1.11.10 snmpInReadOnlys 1.3.6.1.2.1.11.11 snmpInGenErrs 1.3.6.1.2.1.11.12 snmpInTotalReqVars 1.3.6.1.2.1.11.13 snmpInTotalSetVars 1.3.6.1.2.1.11.14 snmpInGetRequests 1.3.6.1.2.1.11.15 snmpInGetNexts 1.3.6.1.2.1.11.16 snmpInSetRequests 1.3.6.1.2.1.11.17 snmpInGetResponses 1.3.6.1.2.1.11.18 snmpInTraps 1.3.6.1.2.1.11.19 snmpOutTooBigs 1.3.6.1.2.1.11.20 snmpOutNoSuchNames 1.3.6.1.2.1.1
_________________________________________________________________________________________________________________
“什麼?SNMP可以抓到远端主机的CPU负载量?!” ㄏㄏ~~我第一次就是有这样的想法耶!所以,我想对於第一次接触到 SNMP的人应该也是会有相同的相法吧!
废话不多说以下便是我找了很多资料所整理出来的!一般来讲,SNMP定义了一个叫做MIB(Management Information Base,MIB)的管理物件库,MIB是一个按照层次结构组织的树状结构,其定义方式类似於功能变数名称系统,而OSI组织为树中每一层的每个节点定义唯一的一个数位标识,这样树中的每个节点都可以用从根开始到目的节点的相应的标识对应的一连串的数位来表示,如1.3.6.1.2.1.1表示了MIBII中系统组子树,而1.3.6.1.2.1.1.1.0表示系统组中的系统描述(sytem Descrption)物件。每个物件的一连串数位表示被称为物件识别字(Object Indentifier,OID),我们便可利用OID来取出我们所需要的数值了。
看不懂吗??没关系,以MRTG来远端监测CPU负载量统计来说,不懂SNMP、MIB、OID 的关系没啥影响,还是可以透过我后面的资料来作便可完成,只是SNMP是个很有趣的协定,由於本篇文章的重点不是SNMP协定的介绍,所以请有兴趣的人除了可以参考O’Reilly所出的”SNMP 网管实务”外,本篇文章后面我会将一些参考资料的网址写出,有兴趣的人可以看看了解一番。
接下来我将我整理出来的OID及其相关作用整理出来於后,希望对於需要的人有所帮助。(注:下面是我针对Redhat 8.0内定的SNMP所整理出来的资料)
1. PROCESSOR相关的 MIB值 : .1.3.6.1.4.1.2021.10.1.3.x
OID
MIB
Description
laLoad.1
.1.3.6.1.4.1.2021.10.1.3.1
每隔1分钟CPU负载平均值
laLoad.2
.1.3.6.1.4.1.2021.10.1.3.2
每隔5分钟CPU负载平均值
laLoad.3
.1.3.6.1.4.1.2021.10.1.3.3
每隔15分钟CPU负载平均值
注:产生出来的数值以%为单位。
2. MEMORY相关 MIB值 : .1.3.6.1.4.1.2021.4.x.x
OID
MIB
Description
memTotalSwap
.1.3.6.1.4.1.2021.4.3.0
Swap空间总容量
memAvailSwap
.1.3.6.1.4.1.2021.4.4.0
Swap剩余空间容量
memTotalReal
.1.3.6.1.4.1.2021.4.5.0
实体记忆体空间总容量
memAvailReal
.1.3.6.1.4.1.2021.4.6.0
实体记忆体剩余空间容量
memTotalFree
.1.3.6.1.4.1.2021.4.11.0
实体记忆体+Swap剩余空间容量
注:产生出来的数值以Bytes为单位。
3. DISK相关 MIB值 : .1.3.6.1.2.1.25.2.3.1.x.x
由於DISK这部分的值,每部机器因硬体设备、分割方式、…等不同而有不同的结果,所以这份资料的整理我将会在”远端主机DISK负载量统计”该篇文章中再作完整的整理与解释。
在此,主机CPU负载量统计方面,我们已经学会了如何去取出我们所需要的数值了,接下来的介绍便是利用这些数值加上MRTG来绘出我们所需要的图形了。一般来说,利用读取SNMP来绘制主机CPU负载量统计除了前一章节所说的Script加上mrtg.cfg的方式外,还可以直接只写一个mrtg.cfg即可,本章节则利用后者来完成MRTG绘图。
以下是mrtg.cfg.cpu.2内容:
WorkDir:/var/www/html/mrtg
Interval: 5
WriteExpires: Yes
Options[_]: gauge,absolute,growright,nopercent
Language: big5
Refresh: 300
Target[snmp_cpu]:.1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@主机IP或主机名称
MaxBytes[snmp_cpu]: 100
Directory[snmp_cpu]: cpu
YLegend[snmp_cpu]: Load Average (%)
ShortLegend[snmp_cpu]: %
Unscaled[snmp_cpu]: dwmy
LegendO[snmp_cpu]: CPU 每1分钟负载平均值;
LegendI[snmp_cpu]: CPU 每5分钟负载平均值;
Title[snmp_cpu]: Mosquito伺服器 CPU 负载率
PageTop[snmp_cpu]:
Mosquito伺服器 CPU 负载率
System: | Redhat 8.0 |
Maintainer: | Mosquito |
IP: | 10.70.220.234 |
Legend1[snmp_cpu]: CPU 每1分钟负载平均值
Legend2[snmp_cpu]: CPU 每5分钟负载平均值
#
#注:主机IP或主机名称直接填写要监测的主机或网路设备即可,但前题是该主机需开启SNMP协定。
编辑好了mrtg.cfg.cpu.2后一样要将/usr/bin/mrtg /etc/mrtg/mrtg.cfg.cpu.2 执行三次后放置到crontab 内每隔五分钟定时执行(注),以产生监测数据出来。
注:将下面这行字加入到 /etc/crontab 内然后执行 service crond restart重新启动服务即可。
0-59/5 * * * * root /usr/bin/mrtg /etc/mrtg/mrtg.cfg.cpu.2
最后,本篇文章所用的mrtg.cfg.cpu.2其中有一行为:
Directory[snmp_cpu]: cpu
所使用的用浏览器检视时必须要多加入一个目录名称才可以看得到图形出来,
例如:http://主机IP位址或是主机名称/mrtg/cpu /snmp_cpu.html