用 Cacti 监视 Linux 服务器
2009年08月17日 | 标签: cacti, linux | 作者:vpsee
给每年的 hacker 大会提供网络支持是件很有挑战的事情,弄不好就会有 hacker 当场黑掉网络这种尴尬事情出现。看看刚刚过去的 Defcon 大会技术人员是怎么架设网络的,使用了哪些有趣的硬件和软件,这里有 图片报道:2009 Defcon 的网络 和 图片报道:2008年 Defcon 的网络。Defcon 技术人员用 OpenBSD 做 Firewall 跑在 Xeon 服务器上,用 Cacti 监测流量。VPSee 一直都用 Nagios 来监测自己的多台服务器,对 Cacti 很好奇,今天刚好有时间安装试试看。
安装 Cacti
安装必要的软件包:
# yum install net-snmp-utils php-snmp net-snmp-libs # yum install perl-rrdtool rrdtool
从 Cacti 官方网站下载 cacti-0.8.7e.tar.gz:
# tar zxvf cacti-0.8.7e.tar.gz # mv cacti-0.8.7e /var/www/cacti
给 cacti 打补丁:
# wget http://www.cacti.net/downloads/patches/0.8.7e/cli_add_graph.patch # wget http://www.cacti.net/downloads/patches/0.8.7e/snmp_invalid_response.patch # wget http://www.cacti.net/downloads/patches/0.8.7e/template_duplication.patch # wget http://www.cacti.net/downloads/patches/0.8.7e/fix_icmp_on_windows_iis_servers.patch # wget http://www.cacti.net/downloads/patches/0.8.7e/cross_site_fix.patch # patch -p1 -N < cli_add_graph.patch # patch -p1 -N < cross_site_fix.patch # patch -p1 -N < fix_icmp_on_windows_iis_servers.patch # patch -p1 -N < snmp_invalid_response.patch # patch -p1 -N < template_duplication.patch
配置 Cacti
创建 Cacti 需要的数据库:
# mysql -u root -p mysql> CREATE DATABASE cacti; mysql> GRANT ALL ON cacti.* TO vpsee@localhost IDENTIFIED BY 'password'; mysql> FLUSH privileges;
初始化 Cacti 数据库表:
# mysql -u vpsee -p cacti < /var/www/cacti/cacti.sql
修改 Cacti 配置文件以连接到上面的数据库:
# vi /var/www/cacti/include/config.php $database_type = "mysql"; $database_default = "cacti"; $database_hostname = "localhost"; $database_username = "vpsee"; $database_password = "password"; $database_port = "3306";
安装 Cacti 插件工具
# wget -c http://mirror.cactiusers.org/downloads/plugins/cacti-plugin-0.8.7e-PA-v2.6.zip # unzip cacti-plugin-0.8.7e-PA-v2.6.zip # patch -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7e-PA-v2.6.diff # mysql -u vpsee -p cacti < cacti-plugin-arch/pa.sql
安装 Monitor 插件
安装 monitor 插件可以监视 host/device 是否在线,先把 monitor 插件移到 plugins 目录,然后在 include/global.php 激活插件:
# wget -c http://cactiusers.org/downloads/monitor.tar.gz # tar zxvf monitor.tar.gz # mysql -u vpsee -p cacti < monitor/monitor.sql # mv monitor /var/www/cacti/plugins/ # vi /var/www/cacti/include/global.php $plugins = array(); //$plugins[] = 'thold'; $plugins[] = 'monitor';
配置 Web Server
配置 Web 服务器指向 Cacti 的安装目录 /var/www/cacti/
配置 SNMP
在需要监测的 Linux 机器上配置和启动 snmpd:
# vi /etc/snmp/snmpd.conf agentaddress tcp:161 rocommunity mycommunity
启动 snmpd:
# /etc/init.d/snmpd start # chkconfig snmpd on
配置 Cron
每5分钟执行一次:
# crontab -e */5 * * * * /usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1
运行
打开浏览器,访问 http://www.example.com/cacti/ 应该可以看到界面了,默认用户名/密码是:admin/admin
不能显示图形?
登入进去后发现其他都正常就是图形不能显示出来,运行一下 poller.php 后可以看到图片了,但又出现新问题,图片上没有数据,并且报错:
# php /var/www/cacti/poller.php 08/14/2009 10:03:40 AM - POLLER: Poller[0] WARNING: Cron is out of sync with the Poller Interval! The Poller Interval is '300' seconds, with a maximum of a '300' second Cron, but 2420 seconds have passed since the last poll! OK u:0.00 s:0.00 r:1.00 OK u:0.00 s:0.00 r:1.00 08/14/2009 10:03:42 AM - SYSTEM STATS: Time:1.2165 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:6 RRDsProcessed:6 OK u:0.00 s:0.00 r:1.00 OK u:0.00 s:0.00 r:1.00 OK u:0.00 s:0.00 r:1.00 OK u:0.00 s:0.00 r:1.02
怀疑是 crond 的问题,检查一下 crond,发现系统上没有 crond,安装完后刷新页面,图形就能正确显示了。
# ps aux | grep crond root 17047 0.0 0.0 3908 696 pts/1 S+ 10:32 0:00 grep crond # yum install vixie-cron # /etc/init.d/crond start
如果图形还不能正确显示,检查一下执行 cron 的用户存不存在:
*/5 * * * * cacti /usr/bin/php /var/www/cacti/poller.php > /dev/null 2>&1
需要一个 cacti 用户执行 cron,所以需要创建一个 cacti 用户,我用的是 root。