1. 值班监控服务器时,需一台台去登录查看服务器情况,很是麻烦,故用PHP SNMP做了个简单的服务器监控系统。结合了用来发短信的MAS系统,当服务器反生异常时可通过短信进行报警。 
  2.  
  3. 过程如下: 
  4.  
  5. 一、给各台被监控服务装上net-snmp 
  6.  
  7. centos可用YUM来在线安装软件包: 
  8.  
  9. yum -y install net-snmp net-snmp-devel net-snmp-utils net-snmp-perl 
  10.  
  11. 如果是redhat则在安装光盘中找到net-snmp这几个安装包,没有安装光盘去网上下也行,但注意要下载同一个版本的安装包.安装这些可能要一些别的软件支持,所以在安装时看还需要哪些源码包一并给装上。 
  12.  
  13. 安装命令示例:rpm -ihv net-snmp-devel-5.1.2-11.EL4.6.i386.rpm 
  14.  
  15. 安装完成后用rpm -qa | grep net-snmp查看安装情况 
  16.  
  17. 修改snmpd.conf: 
  18. # vi /etc/snmp/snmpd.conf 
  19. com2sec notConfigUser default public155 
  20. access notConfigGroup “” any noauth exact all none none 
  21. view all included .1 80 
  22. view systemview included .1.3.6.1.2.1.2 
  23.  
  24. 启动net-snmp 
  25. service snmpd start 
  26.  
  27. 测试: 
  28. snmpget -v 2c -c “public155″ 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3.1 
  29. snmpwalk -v 1 -c “public155″ 127.0.0.1 .1.3.6.1.4.1.2021.10.1.3 
  30.  
  31. 注意:在放监控程序的服务器上要装上net-snmp-devel,net-snmp-utils我开始只装了前两个包,导致后来编译PHP的SNMP扩展时出错。其它被监控的服务器上装前两个包就行了。 
  32.  
  33. 二、给主监控服务器安装PHP的SNMP扩展 
  34. 先要编译sockets snmp扩展支持,源码在php的源码包里有 
  35. cd /opt/php-5.2.7/ext/sockets 
  36. /opt/php527/bin/phpize 
  37. ./configure --with-php-config=/opt/php527/bin/php-config 
  38. make 
  39. make install 
  40.  
  41. 编译SNMP 
  42. cd /opt/php-5.2.7/ext/snmp 
  43. /opt/php527/bin/phpize 
  44. ./configure --with-php-config=/opt/php527/bin/php-config 
  45. make 
  46. make install 
  47.  
  48. 复制刚编译的扩展到PHP扩展安装目录 
  49. cp /opt/php527/lib/php/extensions/no-debug-non-zts-20060613/sockets.so /opt/php527/etc/ 
  50. cp /opt/php527/lib/php/extensions/no-debug-non-zts-20060613/snmp.so /opt/php527/etc/ 
  51.  
  52. 修改php.ini 
  53. vi /opt/php527/lib/php.ini 
  54. 加入 
  55. extension=sockets.so 
  56. extension=snmp.so 
  57.  
  58. 重启APACHE 
  59. /opt/http2210/bin/apachectl -k graceful 
  60.  
  61. php的监控程序当然是放在这台服务器上了,通过snmp获取各台被监控服务器的状态信息,当超出设定的警戒值后,就通过MAS系统发送信息到值班人的手机上。是不是很方便呢,呵呵。 
  62.  
  63. ps:如果没有发送短信的系统的话,可用139邮箱的短信提示功能来做:把报警以邮件的形式发送到值班人的139邮箱,手机上就能收到短信提示了。 
  64.  
  65. 三、用PHP开发监控程序 
  66.  
  67. 列一些用到的东西: 
  68.  
  69. 查看纯代码复制到剪贴板打印? 
  70. function get_server_info($host$community$objectid) { 
  71. $a = snmpget($host$community$objectid); 
  72. $tmp = explode(":"$a); 
  73. if (count($tmp) > 1) { 
  74. $a = trim($tmp[1]); 
  75. return $a
  76. $host="192.168.1.11"
  77. $community="public155"
  78. //获取$host服务器的1分钟平均负载 
  79. $load1 = get_snmp_server($host,$community,".1.3.6.1.4.1.2021.10.1.3.1") ; 
  80. 下面给出一些常见的$objectid: 
  81.  
  82. CPU Statistics 
  83.  
  84. Load 
  85. 1 minute Load: .1.3.6.1.4.1.2021.10.1.3.1 
  86. 5 minute Load: .1.3.6.1.4.1.2021.10.1.3.2 
  87. 15 minute Load: .1.3.6.1.4.1.2021.10.1.3.3 
  88.  
  89. CPU 
  90. percentage of user CPU time: .1.3.6.1.4.1.2021.11.9.0 
  91. raw user cpu time: .1.3.6.1.4.1.2021.11.50.0 
  92. percentages of system CPU time: .1.3.6.1.4.1.2021.11.10.0 
  93. raw system cpu time: .1.3.6.1.4.1.2021.11.52.0 
  94. percentages of idle CPU time: .1.3.6.1.4.1.2021.11.11.0 
  95. raw idle cpu time: .1.3.6.1.4.1.2021.11.53.0 
  96. raw nice cpu time: .1.3.6.1.4.1.2021.11.51.0 
  97.  
  98. Memory Statistics 
  99.  
  100. Total Swap Size: .1.3.6.1.4.1.2021.4.3.0 
  101. Available Swap Space: .1.3.6.1.4.1.2021.4.4.0 
  102. Total RAM in machine: .1.3.6.1.4.1.2021.4.5.0 
  103. Total RAM used: .1.3.6.1.4.1.2021.4.6.0 
  104. Total RAM Free: .1.3.6.1.4.1.2021.4.11.0 
  105. Total RAM Shared: .1.3.6.1.4.1.2021.4.13.0 
  106. Total RAM Buffered: .1.3.6.1.4.1.2021.4.14.0 
  107. Total Cached Memory: .1.3.6.1.4.1.2021.4.15.0 
  108.  
  109. Disk Statistics 
  110.  
  111. The snmpd.conf needs to be edited. Add the following (assuming a machine with a single / partition): 
  112.  
  113. disk / 100000 (or
  114.  
  115. includeAllDisks 10% for all partitions and disks 
  116.  
  117. The OIDs are as follows 
  118.  
  119. Path where the disk is mounted: .1.3.6.1.4.1.2021.9.1.2.1 
  120. Path of the device for the partition: .1.3.6.1.4.1.2021.9.1.3.1 
  121. Total size of the disk/partion (kBytes): .1.3.6.1.4.1.2021.9.1.6.1 
  122. Available space on the disk: .1.3.6.1.4.1.2021.9.1.7.1 
  123. Used space on the disk: .1.3.6.1.4.1.2021.9.1.8.1 
  124. Percentage of space used on disk: .1.3.6.1.4.1.2021.9.1.9.1 
  125. Percentage of inodes used on disk: .1.3.6.1.4.1.2021.9.1.10.1 
  126.  
  127. ==============================================