cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。
Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量
snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学

 
  
  1. 安装环境 centos6 64bit 
  2. 1搭建所需环境 
  3. [root@localhost ~]# rpm -qa | grep zlib 
  4. zlib-1.2.3-27.el6.x86_64 
  5. zlib-devel-1.2.3-27.el6.x86_64 
  6.  
  7. [root@localhost ~]# rpm -qa | grep libpng 
  8. libpng-static-1.2.46-1.el6_1.x86_64 
  9. libpng-1.2.46-1.el6_1.x86_64 
  10. libpng-devel-1.2.46-1.el6_1.x86_64 
  11.  
  12. [root@localhost ~]# rpm -qa | grep freetype 
  13. freetype-demos-2.3.11-6.el6_1.8.x86_64 
  14. freetype-devel-2.3.11-6.el6_1.8.x86_64 
  15. freetype-2.3.11-6.el6_1.8.x86_64 
  16.  
  17. [root@localhost ~]# rpm -qa | grep jpeg 
  18. libjpeg-6b-46.el6.x86_64 
  19.  
  20. [root@localhost ~]# rpm -qa | grep php 
  21. php-mysql-5.3.3-3.el6_1.3.x86_64 
  22. php-cli-5.3.3-3.el6_1.3.x86_64 
  23. php-snmp-5.3.3-3.el6_1.3.x86_64 
  24. php-gd-5.3.3-3.el6_1.3.x86_64 
  25. php-common-5.3.3-3.el6_1.3.x86_64 
  26. php-pdo-5.3.3-3.el6_1.3.x86_64 
  27. php-5.3.3-3.el6_1.3.x86_64 
  28.  
  29. [root@localhost ~]# rpm -qa | grep perl 
  30. perl-libs-5.10.1-119.el6_1.1.x86_64 
  31. perl-DBI-1.609-4.el6.x86_64 
  32. perl-Pod-Escapes-1.04-119.el6_1.1.x86_64 
  33. perl-devel-5.10.1-119.el6_1.1.x86_64 
  34. perl-Module-Pluggable-3.90-119.el6_1.1.x86_64 
  35. perl-5.10.1-119.el6_1.1.x86_64 
  36. perl-ExtUtils-MakeMaker-6.55-119.el6_1.1.x86_64 
  37. perl-Pod-Simple-3.13-119.el6_1.1.x86_64 
  38. net-snmp-perl-5.5-37.el6_2.1.x86_64 
  39. perl-DBD-MySQL-4.013-3.el6.x86_64 
  40.  
  41. yum install tcl* 
  42.  
  43. [root@localhost ~]# rpm -qa | grep mysql 
  44. php-mysql-5.3.3-3.el6_1.3.x86_64 
  45. mysql-connector-odbc-5.1.5r1144-7.el6.x86_64 
  46. mysql-connector-java-5.1.12-2.el6.x86_64 
  47. mysql-libs-5.1.52-1.el6_0.1.x86_64 
  48. mysql-server-5.1.52-1.el6_0.1.x86_64 
  49. mysql-bench-5.1.52-1.el6_0.1.x86_64 
  50. mysql-5.1.52-1.el6_0.1.x86_64 
  51. mysql-devel-5.1.52-1.el6_0.1.x86_64 
  52. mysql-embedded-5.1.52-1.el6_0.1.x86_64 
  53.  
  54. [root@localhost ~]# rpm -qa | grep net-snmp 
  55. net-snmp-utils-5.5-37.el6_2.1.x86_64 
  56. net-snmp-libs-5.5-37.el6_2.1.x86_64 
  57. net-snmp-5.5-37.el6_2.1.x86_64 
  58. net-snmp-perl-5.5-37.el6_2.1.x86_64 
  59. net-snmp-devel-5.5-37.el6_2.1.x86_64 
  60.  
  61. 2安装rrdtool 
  62. tar zxvf rrdtool-1.2.27.tar.gz 
  63. cd rrdtool-1.2.27 
  64. ./configure --prefix=/usr/local (关于这个指定路径的问题 一说是必须指定路径) 
  65. make 
  66. make install 
  67.  
  68. 3安装cacti 
  69. tar zxvf cacti-0.8.7i.tar.gz 
  70. mv cacti-0.8.7i /var/www/html/cacti 
  71.  
  72. 4 mysql>create database cacti default character set utf8; 
  73.   mysql>grant all privileges on cacti.* to cacti@localhost identified by '123456'; 
  74.   mysql>flush privileges; 
  75.  
  76. 5vim /var/www/html/cacti/include/config.php 
  77. $database_type = "mysql"
  78. $database_default = "cacti"
  79. $database_hostname = "localhost"
  80. $database_username = "cacti"
  81. $database_password = "123456"
  82.  
  83. 5关闭selinux或者 setenforce 0 
  84.  
  85. 6 useradd cacti 
  86.   chown -R cacti.cacti /var/www/html/cacti 
  87.   chmod 777 -R  /var/www/html/cacti 
  88.    
  89. 7 /etc/init.d/httpd start 
  90.   /etc/init.d/mysqld start 
  91.   /etc/init.d/iptables stop 
  92.    
  93.    
  94. 8输入http://ip/cacti/ 进行安装以及路径的选择   
  95. 问题1 CACTI不能显示图像,rra下没有文件!权限,PATH,snmpwalk没问题 
  96. 把 Data Source Debug 的命令在cacti服务器端执行一次,就可以了 
  97. 问题2 cacti图像不连续的解决方法 
  98. 1 [root@localhost rra]# /usr/local/bin/rrdtool fetch localhost_mem_swap_4.rrd  AVERAGE 用此命令检查 如果是nan说明没有采集到数据 
  99. 1324534200: -nan 
  100. 1324534500: -nan 
  101. 1324534800: -nan 
  102. 1324535100: -nan 
  103. 1324535400: -nan 
  104. 1324535700: -nan 
  105. 1324536000: -nan 
  106. 1324536300: -nan 
  107. 1324536600: -nan 
  108. 1324536900: -nan 
  109.  
  110. 2这个一般是网络问题或者是snmp有问题 解决办法就是 
  111. 进入cacti管理界面执行  管理--图像管理---随便点击一个图片---然后打开图像调试模式--保存  然后就好了 
  112.  
  113. 问题3 cacti监控远程主机的配置 
  114. 一 被监控端操作 
  115. 1被监控端vim /etc/snmp/snmpd.conf的配置如下(确保配置文件有如下内容) 
  116. com2sec notConfigUser   127.0.0.1       public 
  117. com2sec notConfigUser  192.168.1.130(被监控的IP)       public 
  118. group   notConfigGroup v1           notConfigUser 
  119. group   notConfigGroup v2c           notConfigUser 
  120. view    systemview    included   .1.3.6.1.2.1.1 
  121. view    systemview    included   .1.3.6.1.2.1.2 
  122. view    systemview    included   .1.3.6.1.2.1.25.1.1 
  123. view    all           included   .1                                
  124. access   notConfigGroup ""      any       noauth    exact  all        none none 
  125. com2sec  notConfigUser   default   public 
  126. com2sec  *.*.*.0         192.168.1.130/24   public 
  127. group MyRWGroup  any        local 
  128. group MyROGroup  any        mynetwork 
  129. group notConfigUser any     zoom 
  130. view all     included  .1                               80 
  131. view mib2   included  .iso.org.dod.internet.mgmt.mib-2 fc 
  132. access MyROGroup ""      any       noauth    0      all    none   none 
  133. access MyRWGroup ""      any       noauth    0      all    all    all 
  134. syslocation Unknown (edit /etc/snmp/snmpd.conf) 
  135. syscontact Root <root@localhost> (configure /etc/snmp/snmp.local.conf) 
  136. dontLogTCPWrappersConnects yes 
  137.  
  138. 2重启snmp服务 
  139. /etc/init.d/snmpd restart 
  140.  
  141. 3iptables关闭 
  142. /etc/init.d/iptables stop 
  143.  
  144.  
  145. 二 cacti监控端 
  146. 1 snmpwalk -v 1 192.168.1.130 -c public 执行检测看到如下结果 表明配置成功 
  147. HOST-RESOURCES-MIB::hrSWInstalledDate.858 = STRING: 2011-12-22,1:22:25.0,-8:0 
  148. HOST-RESOURCES-MIB::hrSWInstalledDate.859 = STRING: 2011-12-22,1:18:49.0,-8:0 
  149. HOST-RESOURCES-MIB::hrSWInstalledDate.860 = STRING: 2011-12-22,1:20:12.0,-8:0 
  150. HOST-RESOURCES-MIB::hrSWInstalledDate.861 = STRING: 2011-12-22,1:22:25.0,-8:0 
  151. HOST-RESOURCES-MIB::hrSWInstalledDate.862 = STRING: 2011-12-22,1:18:57.0,-8:0 
  152. HOST-RESOURCES-MIB::hrSWInstalledDate.863 = STRING: 2011-12-22,1:20:24.0,-8:0 
  153. HOST-RESOURCES-MIB::hrSWInstalledDate.864 = STRING: 2011-12-22,1:22:25.0,-8:0 
  154. HOST-RESOURCES-MIB::hrSWInstalledDate.865 = STRING: 2011-12-22,1:19:3.0,-8:0 
  155. HOST-RESOURCES-MIB::hrSWInstalledDate.866 = STRING: 2011-12-22,1:20:29.0,-8:0 
  156. HOST-RESOURCES-MIB::hrSWInstalledDate.867 = STRING: 2011-12-22,1:22:26.0,-8:0 
  157. HOST-RESOURCES-MIB::hrSWInstalledDate.868 = STRING: 2011-12-22,1:19:4.0,-8:0 
  158. HOST-RESOURCES-MIB::hrSWInstalledDate.869 = STRING: 2011-12-22,1:20:30.0,-8:0 
  159. DISMAN-EVENT-MIB::mteEventNotificationObjects."_snmpd".'_linkDown' = STRING: _linkUpDown 
  160. DISMAN-EVENT-MIB::mteEventNotificationObjects."_snmpd".'_linkUp' = STRING: _linkUpDown 
  161. DISMAN-EVENT-MIB::mteEventNotificationObjects."_snmpd".'_mteTriggerFailure' = STRING: _triggerFail 
  162. DISMAN-EVENT-MIB::mteEventNotificationObjects."_snmpd".'_mteTriggerFalling' = STRING: _triggerFire 
  163. DISMAN-EVENT-MIB::mteEventNotificationObjects."_snmpd".'_mteTriggerFired' = STRING: _triggerFire 
  164. DISMAN-EVENT-MIB::mteEventNotificationObjects."_snmpd".'_mteTriggerRising' = STRING: _triggerFire 
  165. NOTIFICATION-LOG-MIB::nlmConfigGlobalEntryLimit.0 = Gauge32: 1000 
  166. NOTIFICATION-LOG-MIB::nlmConfigGlobalAgeOut.0 = Gauge32: 1440 minutes 
  167. NOTIFICATION-LOG-MIB::nlmStatsGlobalNotificationsLogged.0 = Counter32: 0 notifications 
  168. NOTIFICATION-LOG-MIB::nlmStatsGlobalNotificationsBumped.0 = Counter32: 0 notifications 
  169.  2cacti控制端监控查看 
  170.  
  171. 问题4 监控设备处于unknow状态 
  172. acti新添加的主机能手动获取snmp信息,但cacti里面一直是unknown,本机没有问题,就是新增加的主机出不了图。 
  173.  
  174. 故障排除: 
  175. 操作流程: 
  176. 1 进入控制台-系统工具-重建绘图器缓存 
  177. 2 在cacti服务器上运行 
  178. /usr/bin/php /var/www/html/poller.php 
  179. 数分钟后,假如还是不行,重复上述操作一次,即可!