现在的位置: 首页monitor>正文
php+snmp监控远程服务器信息
2013年09月24日 monitor 暂无评论 ⁄ 被围观 5,328 view+

===================================================================

查看阅读 HOST-RESOURCES 的 MIB 文件

more net-snmp源码/mibs/HOST-RESOURCES-MIB.txt

===================================================================

host     		所有资源
hrSystem        系统日期/时间,初始化设备,内核引导参数,系统当前的登录用户数,当前的进程数,支持的最大进程数
hrStorage       内存大小,磁盘大小,使用情况等
hrDevice        设备ID,设备类型,对设备的描述,引导盘,挂载分区等
hrSWRun         线上系统的进程ID,进程名,涉及的参数,运行状态等
hrSWRunPerf     线上系统进程占用 CPU 的时间,占用内存的大小
hrSWInstalled   已安装的软件包名
hrMIBAdminInfo

获取内存大小,磁盘大小,使用情况等

/usr/local/snmp/bin/snmpwalk -v3 -t 500 ip:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' HOST-RESOURCES-MIB::hrStorage

===================================================================

查看阅读 IF-MIB 的 MIB 文件

# more net-snmp源码/mibs/IF-MIB.txt

===================================================================

ifIndex                 InterfaceIndex,
ifDescr                 DisplayString,
ifType                  IANAifType,
ifMtu                   Integer32,
ifSpeed                 Gauge32,
ifPhysAddress           PhysAddress,
ifAdminStatus           INTEGER,
ifOperStatus            INTEGER,
ifLastChange            TimeTicks,
ifInOctets              Counter32,
ifInUcastPkts           Counter32,   输入流量
ifInNUcastPkts          Counter32,   -- deprecated
ifInDiscards            Counter32,   已经丢弃的收到的数据包的总数
ifInErrors              Counter32,
ifInUnknownProtos       Counter32,
ifOutOctets             Counter32,
ifOutUcastPkts          Counter32,   输出流量
ifOutNUcastPkts         Counter32,   -- deprecated
ifOutDiscards           Counter32,
ifOutErrors             Counter32,
ifOutQLen               Gauge32,     -- deprecated
ifSpecific              OBJECT IDENTIFIER -- deprecated

① 查看网卡设备

/usr/local/snmp/bin/snmpwalk -v3 -t 500 ip:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' IF-MIB:ifDescr

② 监控IF-MIB::ifInUcastPkts(输入流量),IF-MIB::ifOutUcastPkts(输出流量),格式为.,如监控本地的第二块网卡 instance 为 2

/usr/local/snmp/bin/snmpwalk -v3 -t 500 ip:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' IF-MIB::ifInUcastPkts.2
/usr/local/snmp/bin/snmpwalk -v3 -t 500 ip:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' IF-MIB::ifOutUcastPkts.2

③ 监控 ifInDiscards(已经丢弃的收到的数据包的总数),格式同上

/usr/local/snmp/bin/snmpwalk -v3 -t 500 ip:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' ifInDiscards.2

===================================================================

用 snmptranslate 命令在 MIB OID 在数字和文字名称之间进行转换

===================================================================

① 用 snmptranslate 把 symbol 格式的 HOST-RESOURCES-MIB::hrSystem 转换为 numberic 格式的 oid,用-On(输出数字格式的 oid),使用 -IR(允许“随机”访问 MIB)

/user/local/snmp/bin/snmptranslate -On -IR  HOST-RESOURCES-MIB::hrSystem

② 用 snmptranslate 把 symbol 格式的 HOST-RESOURCES-MIB::hrSystem 转换为 symbol 格式的 oid,用-Onf(输出符号格式的 oid)

/user/local/snmp/bin/snmptranslate -Onf -IR HOST-RESOURCES-MIB::hrSystem

③ 用 snmptranslate 输出该对象(iso.org.dod.internet.mgmt.mib-2)的详细定义,用 -Td(包括文字名称、所属 MIB、类型、状态、读写权限、描述信息,数字格式的 OID)

/user/local/snmp/bin/snmptranslate -Td iso.org.dod.internet.mgmt.mib-2

④ 用 snmptranslate 打印从指定OID(.1.3.6.1.2.1)开始一直到该 OID(.1.3.6.1.2.1)所属的 MIB 子树末端的树型结构信息

/user/local/snmp/bin/snmptranslate -Tp iso.org.dod.internet.mgmt.mib-2

⑤ 用snmptranslate导出所有已经加载的 MIB 的数据,每个对象一行

/user/local/snmp/bin/snmptranslate -Ta iso.org.dod.internet.mgmt.mib-2

⑥ 用snmptranslate导出所有已经加载的 MIB 的对象,并且输出完整的 oid 路径

/user/local/snmp/bin/snmptranslate -Tl iso.org.dod.internet.mgmt.mib-2

⑦ 用snmptranslate导出已经加载的所有 MIB 的数字格式的 oid ,不含值和类型,仅仅有 oid 而已

/user/local/snmp/bin/snmptranslate -To iso.org.dod.internet.mgmt.mib-2

⑧ 用snmptranslate只输出文字格式的 OID 名称而已

/user/local/snmp/bin/snmptranslate -Ts iso.org.dod.internet.mgmt.mib-2

===================================================================

利用snmp监控实例

===================================================================

//根据oid获取单个信息
//exec("/usr/local/snmp/bin/snmpget -O vt -v3 -t 500 -r 3 IP:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' .1.3.6.1.2.1.25.2.3.1.6.31", $snmp);
exec("/usr/local/snmp/bin/snmpwalk -v3 -t 500 IP:161 -u '用户名' -l 'auth' -a 'MD5' -A '密码' HOST-RESOURCES-MIB::hrStorage", $snmp);
foreach($snmp as $value)
{
        if(stristr($value,'hrStorageIndex'))
        {
                $arr = explode('=',$value);
                $num = str_replace('INTEGER:','',$arr[1]);
                $num_arr[] = intval($num);
                $result[trim($arr[0])] = trim($arr[1]);
        }
        else
        {
                $arr = explode('=',$value);
                $result[trim($arr[0])] = trim($arr[1]);
        }
}

foreach($num_arr as $v)
{
        $k_descrc = 'HOST-RESOURCES-MIB::hrStorageDescr.'.$v;
        $k_units = 'HOST-RESOURCES-MIB::hrStorageAllocationUnits.'.$v;
        $k_size = 'HOST-RESOURCES-MIB::hrStorageSize.'.$v;
        $k_used = 'HOST-RESOURCES-MIB::hrStorageUsed.'.$v;
        $desc = str_replace('STRING: ','',$result[$k_descrc]);
        $unit = intval(str_replace('INTEGER:','',$result[$k_units]));
        $size = intval(str_replace('INTEGER:','',$result[$k_size]));
        $used = intval(str_replace('INTEGER:','',$result[$k_used]));

        $total = ($size/1024)*($unit/1024);
        $total = ($total >= 1024) ? ceil($total/1024).'GB ' : ceil($total).'MB ';
        $used = ($used/1024)*($unit/1024);
        $used = ($used >= 1024) ? ceil($used/1024).'GB ' : ceil($used).'MB ';

        echo '【'.$desc.'】 total:'.$total.'used:'.$used."\n";
}

结果:

【Physical memory】 total:16GB 	used:6GB
【Virtual memory】  total:32GB 	used:6GB
【Memory buffers】  total:16GB	used:373MB
【Cached memory】   total:2GB 	used:2GB
【Swap space】      total:16GB 	used:0MB
【/】 		      total:214GB   used:96GB
【/boot】 	      total:194MB   used:29MB
【/opt/hiker】 	  total:886GB   used:62GB

给我留言

留言无头像?


×
腾讯微博