Winse Blog

走走停停都是风景, 熙熙攘攘都向最好, 忙忙碌碌都为明朝, 何畏之.

Cacti监控主机

其实通过yum好依赖的php、rrdtool、snmp后,安装配置Cacti其实很简单。

环境说明

五台机器:cu1~cu5(centos6.6), 其中仅cu2作为cacti服务器,所有服务器都安装snmp服务。

1
2
3
4
5
cu1     192.168.0.37 
cu2     192.168.0.214 
cu3     192.168.0.148 
cu4     192.168.0.30 
cu5     192.168.0.174 

软件安装

版本信息在贴的内容中体现。PHP不会,仅仅作为一个工具来使用。

Cacti服务器机器安装

mysql数据库5.1

1
2
[root@cu2 ~]# rpm -q mysql 
mysql-5.1.73-5.el6_6.x86_64

首先用yum安装依赖软件php,httpd,snmp和rrdtool

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
[root@cu2 ~]# yum install epel-release

[root@cu2 ~]# yum install httpd php php-devel php-mysql php-pear php-common php-gd php-mbstring php-cli php-snmp net-snmp net-snmp-utils net-snmp-libs rrdtool 
...

Installed:
  net-snmp-libs.x86_64 1:5.5-54.el6_7.1 net-snmp-utils.x86_64 1:5.5-54.el6_7.1 php.x86_64 0:5.3.3-46.el6_6          php-cli.x86_64 0:5.3.3-46.el6_6   php-common.x86_64 0:5.3.3-46.el6_6
  php-devel.x86_64 0:5.3.3-46.el6_6     php-gd.x86_64 0:5.3.3-46.el6_6         php-mbstring.x86_64 0:5.3.3-46.el6_6 php-mysql.x86_64 0:5.3.3-46.el6_6 php-pear.noarch 1:1.9.4-4.el6     
  php-snmp.x86_64 0:5.3.3-46.el6_6      rrdtool.x86_64 0:1.3.8-7.el6          

Dependency Installed:
  autoconf.noarch 0:2.63-5.1.el6               automake.noarch 0:1.11.1-4.el6                  dejavu-fonts-common.noarch 0:2.33-1.el6   dejavu-lgc-sans-mono-fonts.noarch 0:2.33-1.el6  
  dejavu-sans-mono-fonts.noarch 0:2.33-1.el6   fontpackages-filesystem.noarch 0:1.41-1.1.el6   lm_sensors-libs.x86_64 0:3.1.1-17.el6     net-snmp.x86_64 1:5.5-54.el6_7.1                
  php-pdo.x86_64 0:5.3.3-46.el6_6             

Updated:
  httpd.x86_64 0:2.2.15-47.el6.centos                                                                                                                                                       

Dependency Updated:
  httpd-tools.x86_64 0:2.2.15-47.el6.centos                                                                                                                                                 

Complete!

[root@cu2 ~]# service httpd start
Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 192.168.0.214 for ServerName
                                                           [  OK  ]
[root@cu2 ~]# service snmpd start
Starting snmpd:                                            [  OK  ]

[root@cu2 ~]# vi /etc/snmp/snmpd.conf 
     41 #com2sec notConfigUser  default       public
     42 com2sec notConfigUser  192.168.0.214       public
   ...
     63 #access  notConfigGroup ""      any       noauth    exact  systemview none none
     64 access  notConfigGroup ""      any       noauth    exact  all none none
   ...
     86 ##           incl/excl subtree                          mask
     87 view all    included  .1                               80  

[root@cu2 ~]# service snmpd restart

# 使用snmpwalk可以得到数据
[root@cu2 ~]# snmpwalk -Os -c public -v 1 cu2 system
[root@cu2 ~]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex

然后,把Cacti应用解压到httpd默认目录下/var/www/html。同时配置cacti连接到数据库。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@cu2 ~]# cd /var/www/html/
[root@cu2 html]# tar zxvf cacti-0.8.8f.tar.gz 

[root@cu2 html]# ln -s cacti-0.8.8f cacti

[root@cu2 html]$ mysql -u root -p -h 127.0.0.1
Enter password: 
mysql> 
mysql> create database cacti character set UTF8;
mysql> grant all on cacti.* to cacti@'%' identified by 'cacti';
mysql> flush privileges;
mysql> source /var/www/html/cacti/cacti.sql;

[root@cu2 html]# vi cacti/include/config.php 
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "127.0.0.1";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";

[root@cu2 html]$ vi /etc/php.ini 
date.timezone = "Asia/Shanghai"

# 重启httpd服务

[root@cu2 cacti]# php poller.php 

[root@cu2 cacti]# crontab -e
* * * * * php /var/www/html/cacti/poller.php > /var/www/html/cacti/log/cron.log 2>&1

打开浏览器访问:http://cu2/cacti/ 首先会进入到install步骤,按照提示一步下一步,最后输入admin/admin登录。点击右上角的Preview View就可以看到图了。

如果启动错误,查看日志文件看日志:

1
2
[root@cu2 cacti]# less /var/log/httpd/error_log 
[root@cu2 cacti]# less log/cacti.log 

添加插件

(网上很多文章都要打补丁,我这里的版本是最新的,同时plugin的补丁没有对应的版本,这里直接安装插件)

http://docs.cacti.net/plugins下载monitor。把下载文件解压到plugins目录下:

1
2
3
4
5
[root@cu2 plugins]# pwd
/var/www/html/cacti/plugins
[root@cu2 plugins]# ll
-rw-r--r-- 1 1000 users   44 Jul 20 21:42 index.php
drwxr-xr-x 4 root root  4096 Oct  6  2011 monitor

然后进入Plugin Management页面http://cu2/cacti/plugins.php,就能看到Monitor插件。点击表格Actions列的安装和启用图标(按钮),启用后,最上面页签会增加新的页签项monitor。

点击monitor页签,可以查看机器存活的状态。

同时Settings页面多了Misc选项卡,可以配置修改monitor属性。

注意:网上版本资料都有配置config.php添加plugins变量。我这里没进行这个操作也是ok的,安装-启用成功后会把monitor下面的sql更新到数据库,不需要手动执行。

安装spine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
注意:设置下umask避免不需要的麻烦: umask 0022
[root@cu2 ~] tar zxvf cacti-spine-0.8.8f.tar.gz

[root@cu2 cacti-spine-0.8.8f]# yum install -y mysql-devel net-snmp-devel

[root@cu2 cacti-spine-0.8.8f]# ./configure --prefix=/usr/local/cacti-spine
[root@cu2 cacti-spine-0.8.8f]# make && make install
# 如果make缺少报了错,需要重新configuration一遍

[root@cu2 cacti-spine-0.8.8f]# cd /usr/local/cacti-spine/etc
[root@cu2 etc]# mv spine.conf.dist spine.conf
[root@cu2 etc]# vi spine.conf 
DB_Host         127.0.0.1
DB_Database     cacti
DB_User         cacti
DB_Pass         cacti
DB_Port         3306
  • 然后修改Cacti使用spine来获取信息。

在[Settings]-[Paths]添加Spine Poller File Path为/usr/local/cacti-spine/bin/spine。在[Poller]选项卡,[Poller Type]修改为spine,[Poller Interval]和[Cron Interval]修改为一分钟即Every Minute。

  • 添加“每分钟”流量视图:

点击Console -> Data Templates -> [Interface -> Traffic ] 添加“每分钟”流量视图,将轮询时间设置为60秒,Heartbeat时间设置为120秒(traffic_in/traffic_out里面的Heartbeat时间也设置为120秒)

被监控机器配置

被监控的机器,仅仅需要安装snmp即可。然后配置snpmd.conf即可。

1
2
3
4
5
6
7
8
9
10
11
12
[root@cu5 ~]# yum install  net-snmp net-snmp-utils net-snmp-libs -y
[root@cu5 ~]# vi /etc/snmp/snmpd.conf 
     41 #com2sec notConfigUser  default       public
     42 com2sec notConfigUser  192.168.0.214       public
   ...
     63 #access  notConfigGroup ""      any       noauth    exact  systemview none none
     64 access  notConfigGroup ""      any       noauth    exact  all none none
   ...
     86 ##           incl/excl subtree                          mask
     87 view all    included  .1                               80  

[root@cu2 ~]# service snmpd restart

然后在Cacti的web页面添加Device(主机):

  • 点击Console->Devices,打开设备管理页面。
  • 点击右上角的add,添加一个新的机器
  • 当主机的信息填好之后,点击Create
    • Host Template就是一个模板,会事先建立一些Associated Graph Templates和Associated Data Queries的数据,如Load Average,Memory Uages等。如果不确定直接选None即可。
    • SNMP Version选Version 2,SNMP Community与snmpd.conf中对应,如果安装上面操作,默认即可。
  • 此时你的页面左上角应该显示:Save Successful,并且已经显示出了主机信息和SNMP信息,如果SNMP信息显示 SNMP error,请查看最后的问题综述。
  • 这时我们就可以添加相应的监控项了,在页面最下方的Associated Graph Templates中添加图形模板,在Associated Data Queries中添加数据模板。
  • 保存,点击右上角的Create Graphs for this Host,来为刚才通过模板所获得到的数据进行画图。
  • 选择好需要画图的项目后,点击右下角的Create,左上角会出现被创建出来的画图项。

总结就是添加设备,然后生成图形,最后等待生成画图查看。

在Graphs界面左边显示树新添加主机。

  • 在Cacti界面Graph Trees中,选择进入节点(或者系统默认的Default Tree)。
  • 添加一个新的显示项,在Tree Item Type中选择Host,然后在下面的Host中选择我们刚才创建的主机。点击Create。

http://docs.cacti.net/templates

进阶

http://skypegnu1.blog.51cto.com/8991766/1537374

cacti是如何获取数据呢?
其实cacti获取数据的方式是多样化的,通过周期性的执行某个脚本,或者使用snmp,更或者是ssh,这些都是根据实际需要以及方便性来抉择。cacti需要周期性的驱动这些获取数据的脚本执行,并把取得的数据保存至相应的rrd数据库中。 cacti是如何保存数据(创建rrd,并更新数据)呢? 这就是数据模板的功能。 cacti是如何展示数据(绘图)呢? 这就是图形模板的功能。

http://skypegnu1.blog.51cto.com/8991766/1537615 http://skypegnu1.blog.51cto.com/8991766/1538459 http://skypegnu1.blog.51cto.com/8991766/1547029

资料

入门的文档不错,可以到微盘下载。

1
2
3
4
5
6
7
8
9
Cacti.0.8_Beginner.Guide.pdf

Cacti实战指南--备份还原.pdf
Cacti实战指南-完美部署.pdf
Cacti实战指南-巧设轮询.pdf
Cacti实战指南-插件安装.pdf
Cacti实战指南-用户权限.pdf
Cacti实战指南-邮件预警.pdf
Cacti实战指南-阀值预警.pdf

参考

–END

Comments