Cacti监控系统预实施文档 1.0 by zhxiaom5
QQ:450104579
(一) 软件安装环境及相关版本说明
1. 所采用的实验环境为:Linux localhost.localdomain 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010 i686 i686 i386 GNU/Linux;CentOS release 5.5 (Final)
2. 所采用的lamp环境都是使用yum直接安装,具体的版本如下:Server version: Apache/2.2.3;PHP 5.1.6 (cli) (built: Jun 27 2012 12:21:16) Zend Engine v2.1.0, Copyright (c) ;1998-2006 Zend Technologies;Server version: 5.0.95 Source distribution
3. 所采用的rrdtool版本为:rrdtool-1.4.7-1.el5.wrl.i386.rpm
4. 其他的依赖包或者相关软件,都是采用yum进行安装。
(二) LAMP环境安装
1. 安装前防火墙准备(不一定是为了lamp而准备):
A. 关闭iptables
#service iptables stop
B.关闭SELinux
#vi /etc/selinux/config
将文件中的SELINUX="" 为 disabled ,然后重启。
如果不想重启系统,使用命令setenforce 0
注:
setenforce 1 设置SELinux 成为enforcing模式
setenforce 0 设置SELinux 成为permissive模式
在lilo或者grub的启动参数中增加:selinux=0,也可以关闭selinux
小注:
----------------------------------------------------------------------------------------------
查看selinux状态:
/usr/bin/setstatus -v
如下:
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
getenforce/setenforce查看和设置SELinux的当前工作模式
2. 系统的时区准备:
A. 同步网络时间:ntpdate us.pool.ntp.org 。
B. 修改时区:cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
3. yum安装lamp和相关依赖包:
4. yum -y install mysql mysql-server mysql-devel httpd php php-mysql zlib freetype libjpeg fontconfig gd libxml2 php-gd rrdtool net-snmp net-snmp-utils
service httpd start
service mysqld start
chkconfig httpd on
chkconfig mysqld on
service snmpd start
chkconfig snmpd on
(三) cacti的安装以及初步调整
1. 安装rrdtool:到rrdtool的官网下载rpm包,进行安装
rpm -ivh rrdtool-1.4.7-1.el5.wrl.i386.rpm --nodeps --force
启动rrdtool服务并且加入启动列表
service rrdcached start
chkconfig rrdcached on
2. ①下载
#wget www.cacti.net/downloads/cacti-0.8.8a.tar.gz
②配置
解压并放到apache文档目录(/var/www/html)
#tar -xf cacti-0.8.8a.tar.gz
#mv cacti-0.8.8a /var/www/html/cacti
编辑CentOS cacti配置文件,连接MySQL服务的用户名,密码,端口等。
#cd /var/www/html
#vi cacti/include/config.php
$database_type = “mysql”;
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “cacti”;
$database_port = “3306″;
③添加计划任务(使cacti每5分钟获得一次数据)
添加一个cacti的用户并添加cron任务:
#useradd cacti
#su cacti
#crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null 2>&1
必须以cacti用户进行,如果以root用户进行,则无法实现
④更改属组
把cacti网站目录所属组改为cacti
#su root
#chgrp -R cacti /var/www/html/cacti
#chown -R cacti /var/www/html/cacti/rra
#chown -R cacti /var/www/html/cacti/log
#chown -R cacti /var/www/html/cacti/poller.php
3. 数据库配置
①创建cacti数据库
#mysql
msyql>create database cacti;
②导入cacti.sql
#mysql -u root -p cacti < /var/www/html/cacti/cacti.sql
有密码的输入密码,没密码的直接回车
③应用
mysql> use cacti
mysql> grant all on cacti.* to cacti@localhost identified by ‘cacti’;
mysql> flush privileges;
mysql> exit
4. web登陆cacti
①http://ip/cacti
(这里如果出现“403 forbidden”的错误,请把selinux关闭)
打开网页—>next—>选择new install,使用一路回车法.完成
的用户名为: admin 密码为: admin (初次登陆成功会提示更改密码)
(四) cacti的优化
1. 使用spine取代cmd.php加快速度:
从添加device好到设备up,spine只需要不到一分钟,而cmd等的时间较长,超过10分钟。 当设备down后 2分钟之内spine可以发出alert,而cmd可能需要10分钟以上。
A.从cacti网站下载spine源码包
wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.8a.tar.gz
B.解压到本地目录,编译安装
安装spine需要有net-snmp-devel、mysql、mysql-devel、openssl-devel支持,
请查看下是否已经安装。
使用以下命令来编译安装:
tar xvzf cacti-spine-0.8.8a.tar.gz
cd cacti-spine-0.8.8a
./configure
make
make install
默认安装在/usr/local/spine/目录下。
C.复制一份spine的配置文件。
cd /usr/local/spine/etc/
cp spine.conf.dist spine.conf
编辑spine.conf文件,设置Cacti数据的连接信息。
DB_Host localhost # 主机地址
DB_Database cacti # 数据库
DB_User cacti # 数据库用户
DB_Pass cacti # 数据库连接密码
DB_Port 3306 # 数据库连接端口
D.设置Spine
a)以admin用户登录到Cacti。
b)从目录菜单中选择设置"Settings",选择"Paths"选项卡。
c)在"Spine Poller File Path"中输入Spine可执行程序的完整路径,
对我来说是/usr/local/spine/bin/spine,保存设置。
d)选择"Poller"选项卡。
e)在"Poller Type"下拉框设置中,选择"spine"。
同时设置spine的Maximum Threads per Process, Number of PHP Script Servers, Script and Script Server Timeout Value几个参数。
通常会把Maximum Threads per Process设置成cpu * 2。在这里,我们设置成8.
完成这些设置后,Cacti将会每5分钟执行一次Spine,来代替原来的cmd.php。
如果使用spine的过程中有任何问题,你可以随时将"Poller Type"切换回"cmd.php"
E.修改crontab任务
crontab -u cacti -e
*/1 * * * * /usr/local/bin/php /usr/local/apache/htdocs/cacti/poller.php > /dev/null 2>&1
F. 更新rebuild rrd cache
进入cli 目录执行
php -q rebuild_poller_cache.php –d
--------------------------------------------------以下没有经过试验------------------------------------------
2、进程调整
对于进程和线程的调整有利于缩短采集时间,可以进行大量的采集。在CU论坛上看有人说cacti能够同时采集1k服务,这样的性能没有测试过,但是有人测试过同时采集200台服务器的,占用的内容只有几百兆,cpu的利用率也很低,说明一台的普通的机器排除网络链路延时采集的性能是相当强悍的
Settings -> Poller -> "Maximum Concurrent Poller Processes"(最大并发轮询器进程),修改该值
Settings -> Poller -> "Maximum Threads per Process"(每进程最大线程数),修改该值
Settings -> Poller -> "Number of PHP Script Servers"(PHP脚本服务程序数),修改该值
通过修改这三个参数,可以提高一部分的性能
3、增加php 的内存使用的上限值
# vi /etc/php.ini
memory_limit = 256M (预设是128MB,根据内存的使用情况,可以改大一点)
4、定期 optimize cacti 数据库
cacti 的 poller_output 会不明原因的长大,大到数据越写越慢,直到无法更新。每隔一段时间手动 “Truncate poller_output table” 后,就会继续正常运作;所以我们可以利用crontab定期清除数据
#vi /etc/cron.d/truncate_poller
0 0 * * 0 root /usr/local/mysql/bin/mysql --user=cacti --password=2010 cacti -e ‘truncate table poller_output;’
#chkconfig --level 3 crond on && service crond start
5、修改mysql的最大连接数
一般默认安装的时候没有调整最大连接数的话,当需要并发量的时候可以出图就会断断续续的
mysql> set GLOBAL max_connections=200000;
或者直接修改my.cnf配置文件,增加:max_connections = 200000;
---------------------------------------------------------------------------------------------------------------------------
(五) 编辑cacti脚本批量增加网络设备或者主机
在实际生产中,所要监控的设备成百上千,为了方便添加主机和图像,采用cacti内部提供的函数进行脚本化添加,减轻工作量。
1. 脚本中所使用和函数查询方法(常用的命令已经给出)
php add_device.php --list-snmp-queries 查看设备类型
php add_device.php --list-host-templates 查看主机模版
php add_device.php --list-graph-templates 查看图形模版
php add_device.php --list-communities 查看共同体名
php add_device.php --list-snmp-fields --host-id=405 查看主机snmp类型
php add_device.php --list-trees #查看树的id
php add_device.php --list-hosts # 查看存在主机
php -q add_tree.php --list-trees #查看树的ID
小注:最根本的方法还是到cacti的cli目录下,使用php add_device.php –help,类似这个样子,会列出详细的使用方法
2. 自己编写的脚本示例
#!/bin/bash
#by 张孝明
#cacti批量加监控
#读取IP列表
host_ips=`cat ips.txt`
cd /var/www/html/cacti/cli
for host_ip in $host_ips
do
#添加cacti设备
php add_device.php --description="$host_ip" --ip="$host_ip" --template=1 --version=2 --community="jurassic"
#读取设备ID
host_ids=`php add_graphs.php --list-hosts | grep $host_ip | awk -F " " '{print $1}'`
#创建模板图像
php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=25
php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-template-id=35
#创建端口流量图像
php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=25 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --snmp-value="GigabitEthernet 0/49
"
php add_graphs.php --host-id="$host_ids" --graph-type=ds --graph-template-id=25 --snmp-query-id=1 --snmp-query-type-id=16 --snmp-field=ifDescr --sn
mp-value="GigabitEthernet 0/50
"
#创建锐捷交换机cpu图像
php add_graphs.php --host-id="$host_ids" --graph-type=cg --graph-temp
late-id=35
#添加设备到相应的组
php add_tree.php --host-id="$host_ids" --type=node --node-type=host --
tree-id=2
done
(六) cacti插件的安装和使用
我们常用的插件有:
settings :用于邮件报警
monitor:以图片的方式显示设备状态
threshold/thold: 用于设备异常预警,阀值报警
syslog:日志管理
weathermap:网络状况示意图绘画
1. 插件的安装
前四个插件直接从cacti官网下载,解压,放置到plugins目录下,注意权限,然后开启就可以了。重点是weathermap插件,它的安装也是下载解压,放到目录下,但是注意它所需求的权限是web服务器为运行者,所以web服务器的执行者必须有执行权限。可以设置为全部777.
2. 插件的使用
启用采取console-->configuration_pluginsMangement-->actions
A. setting插件使用
在console选项卡下,点击左侧菜单中的Settings链接,在右侧出现的web页中点击Misc选项卡来配置Monitor插件。
以下所看到的是Monitor选项卡下所监控的机器状态。当有机器Down掉后,相应机器图标将由绿色变成红色,并发出声音进行报警。
B.Threshold插件的使用
下图是添加Threshold插件和Monitor插件后的cacti界面:
选中console选项卡,在左侧菜单中点击Settings,然后点击Alerting/Thold选项卡,来设置Threshold插件。
设置完成后在console选项卡下左侧菜单中点击Threshold Templates 。
点击Add按钮来添加一个Threshold模板。
在此,以添加一个监控硬盘空间的Threshold模板为例。
在Data Field下拉框中选择hdd_free,然后点击go按钮。
填写以下信息,在Low Threshold文本框中填入1000,意思是当剩余的硬盘空间小于1000M时,发送邮件报警。在Threshold CDEF下拉框选择Divide by 1024,填入警报邮箱,完成Threshold模板的添加。
应用刚才创建的Threshold模板。在console选项卡下点击Devices,选择要应用此模板的Host,点击最上面的Create Graphs for this Host链接,然后点击Auto-create thresholds链接来应用刚创建的Threshold模板。
设置完成后在console选项卡下左侧菜单中点击Thresholds 。
在此可以管理已创建的警报。
C.weathermap的使用和其他插件的使用参考《Cacti插件使用文档
》
点击threshld选项卡可以查看警报的触发情况。