cacti简介:
rrdtool create
周期性执行能够取得数据的命令,并将取回的数据保存至rrd文件当中
利用rrdtool绘图并显示
php开发网页程序
LAMP,LNMP
--enable-sockets
插件机制
thold
模板:
图形模板
数据模板
主机模板
一、安装cacti
安装环境:
主机操作系统:Centos6.5
cacti安装前提条件:需要先装好lnmp环境和rrdtool
1、配置并安装epel的yum源
[root@localhost ~]# wget
[root@localhost ~]# rpm -ivh epel-release-6-8.noarch.rpm
2、安装httpd、mysql、php、rrdtool
[root@localhost ~]yum install httpd mysql mysql-server php* rrdtool net-snmp net-snmp-utils
3、解压cacti包
tar xf cacti-0.8.8h.tar.gz -C /var/www/html
4、对主网页文件做软链接
cd /var/www/html
ln -sv cacti-0.8.8h cacti
5、在mysql里创建cacti数据库并把cacti.sql语句导入表中
cd /var/www/html
[root@localhost cacti]#mysadmin create cacti
[root@localhost cacti]# mysql cacti < cacti.sql
6、创建个Cacti数据库访问用户
mysql -e "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'huaxia'”
[root@localhost cacti]# mysqladmin flush-privileges;
7、修改cacti的config.php文件
cd /var/www/html/cacti/include
vim config.php修改cacti连接数据库的选项
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "huaxia";
$database_port = "3306";
$database_ssl = false;
8、创建周期性获取数据的用户
[root@localhost include]# useradd cactiuser
9、修改cacti主目录下log和rra目录的属主和属组,需要把属主和属组改为周期性获取数据的用户
rra:保存rrd文件的目录
log:保存日志的目录
[root@localhost cacti]# chown -R cactiuser:cactiuser rra log
10、启动apache服务
[root@localhost cacti]# service httpd start
正在启动 httpd:httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[确定]
11、访问cacti
注意:防火墙要是打开请放通80端口,selinux也必须关闭
12、点击到如下图所示的登录界面:
默认用户名是admin,密码也是admin
首次登录系统提示需要修改用户名和密码,我们这里修改为
用户名:admin
密码: huaxia
13、登录进系统的主界面:
14、主控界面的Console
Collection Methods :(收集方法)
Data Queries:数据查询方法 -> xml格式数据收集方法
Data Input Methods:数据输入方法 -> 命令或者脚本
脚本:
只需要指定如何获取数据,并且获取到的数据经过处理后按规定输出
15、给cacti定义一个周期性的任务计划,使用cacati的主目录下的poller.php实现,poller只支持单线程的监控,实现多线程的需要spine实现
[root@localhost ~]# echo '*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php &>/dev/null' > /var/spool/cron/cactiuser
[root@localhost ~]# crontab -u cactiuser -e
16、修改php支持的时区
[root@localhost ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
17、查看任务计划的执行情况,看到任务计划已经在执行
[root@localhost log]# tail -f cacti.log
03/19/2017 02:00:03 AM - SYSTEM STATS: Time:0.7099 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/19/2017 02:05:01 AM - SYSTEM STATS: Time:0.7950 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
二、配置cacti
1、配置本机使用snmp
Device -> localhost
2、数据源
定义数据源的模板,数据源关联的主机,数据源生成的rrd文件的路径,开启的调试模式
3、使用ntpdate更新了服务器的时间,发现cacti的主配置文件下的rra目录里没有生成rrd文件,查看日志有下面报错!
root@localhost log]# tail -f cacti.log
03/18/2017 06:53:26 PM - POLLER: Poller[0] NOTE: Cron is configured to run too often! The Poller Interval is '300' seconds, with a minimum Cron period of '300' seconds, but only -26195 seconds have passed since the poller last ran.
使用下面的方法解决
[cactiuser@localhost ~]$ /usr/bin/php /var/www/html/cacti/poller.php --force
sh: /usr/local/bin/rrdtool: 没有那个文件或目录
03/18/2017 07:09:43 PM - SYSTEM STATS: Time:0.8497 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
又报错
03/18/2017 07:15:02 PM - 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 319 seconds have passed since the last poll!
过会了又正常了
03/18/2017 07:15:02 PM - SYSTEM STATS: Time:0.5702 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/18/2017 07:20:02 PM - SYSTEM STATS: Time:0.6918 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/18/2017 07:25:03 PM - SYSTEM STATS: Time:0.7356 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/18/2017 07:30:02 PM - SYSTEM STATS: Time:0.8958 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/18/2017 07:35:03 PM - SYSTEM STATS: Time:0.8467 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/18/2017 07:40:02 PM - SYSTEM STATS: Time:0.7094 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
03/18/2017 07:45:03 PM - SYSTEM STATS: Time:0.7294 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
4、发现了cacti主配置文件里rra主目录下没有生成rrd文件,查看Cacti Setting 下的Paths路径下有很多错误,如下图所示:
因为没使用编译的方式安装rrdtool和net-snmp net-snmp-utils等软件,系统默认会使用编译的路径去找相应的文件,我们这里把路径改为软件指向的实际路径
5、改完路径,查看到cacti主目录下rra文件里已生成rrd文件
[root@localhost rra]# ls
localhost_load_1min_5.rrd localhost_mem_buffers_3.rrd localhost_mem_swap_4.rrd localhost_proc_7.rrd localhost_users_6.rrd
6、使用rrdtool获取localhost_mem_buffers_3.rrd的数据,指定获取的时间间隔是300秒,获取的是平均值,从下面看到已获取到数据
[root@localhost rra]# rrdtool fetch -r 300 localhost_mem_buffers_3.rrd AVERAGE
1489837200: -nan
1489837500: -nan
1489837800: -nan
1489838100: -nan
1489838400: -nan
1489838700: 2.7524972797e+05
1489839000: -nan
7、查看绘的图,如下图所示:
三、写个监控本机TCP链接数的脚本,用Cacti实现监控
流程:
定义数据收集方法->数据模板->数据资源->图像模板->出图
1、[root@localhost ~]# vim tcpconn.sh
#!/bin/bash
#
# $1: hostname or IP
# $2: snmp community
SNMPNETSTAT=/usr/bin/snmpnetstat
ESTABLISHED=`$SNMPNETSTAT -v 2c -c $2 -Can -Cp tcp $1 | grep -i 'established' | wc -l `
echo -n "established:$ESTABLISHED"
2、把脚本复制到cacti的脚本目录里
[root@localhost ~]# cp tcpconn.sh /var/www/html/cacti/scripts/
3、配置数据收集方法:
定义方法的名称、输入类型、脚本的路径和所跟的参数等
定义输入、输出的区域
可以看到数据输入方法已经加入方法列表
4、添加数据模板
定义模板的名称、数据源的名称、数据输入方法、数据聚合的方式等等
5、定义关联到主机上的数据源
定义数据模板、rrd文件路径等
6、创建图像模板
定义一些标题和模板名称等
在图像模板上添加图片
图像添加完,效果如下:
7、往设备上添加图片
定义图片模板、主机、数据源等
8、查看生成的图片
9、在图像模板上添加几个项目,用于显示当前值、最大值、平均值
在图像上可以看到几个项目已经添加到图像上
四、安装spine
1、编译安装spine
tar -zxvf cacti-spine-0.8.8h.tar.gz
cd cacti-spine-0.8.8h
./configure --prefix=/usr/local/cacti-spine
make
报错:提示没有头文件
common.h:133:38: 错误:net-snmp/net-snmp-config.h:没有那个文件或目录
common.h:134:32: 错误:net-snmp/utilities.h:没有那个文件或目录
common.h:135:40: 错误:net-snmp/net-snmp-includes.h:没有那个文件或目录
common.h:136:33: 错误:net-snmp/config_api.h:没有那个文件或目录
解决方法:
yum install -y net-snmp-devel
重新编译安装
./configure --prefix=/usr/local/cacti-spine
make && make install
2、编辑配置文件
cd /usr/local/cacti-spine/
cp spine.conf.dist spine.conf
sed -e '/^$/d;/^#/d' spine.conf
DB_Host localhost
DB_Database cacti
DB_User cactiuser
DB_Pass huaxia
DB_Port 3306
3、测试spine安装是否正确,输出下面信息表示安装成功
/usr/local/cacti-spine/bin/spine --conf=/usr/local/cacti-spine/etc/spine.conf
SPINE: Using spine config file [/usr/local/cacti-spine/etc/spine.conf]
SPINE: Version 0.8.8h starting
SPINE: Time: 0.3763 s, Threads: 5, Hosts: 3
4、打开cacti网页
conslole->Settings->Poller
将cmd.php改为poller,并保存
Console->Settings->Paths,添加spine命令的路径并保存
五、安装setting,thold,monitor
在安装thold插件,必须先安装settings插件,后安装thold插件。因为seettigs插件提供email的相关设置,thold插件的报警功能是根据settings里的设置来决定发送邮件的。
把插件解压要插件目录里
tar -xf settings-v0.71-1.tgz -C /var/www/html/cacti/plugins
tar -xf thold-v0.5.0.tgz -C /var/www/html/cacti/plugins
tar -xf monitor-v1.3-1.tgz -C /var/www/html/cacti/plugins
打开cacti主页,Consle->Plugin Management ->将插件安装和启用,如下图所示表示已经正确的启用:
六、配置邮件告警通知
在Conlsole->setting->Mail/DNS里填写好一些信息
发送邮件测试:正常
七、设置主机宕机邮件提醒
Console->Settings->Thresholds
八、设置插件monitor显示模式
配置完成
注意:需要关闭机器上的selinux服务,并且防火墙打开的话,需放行udp的161端口
九、cacati客户端安装并配置和出图
客户端机器上
1、yum -y install net-snmp
2、编辑/etc/snmp/snmp.conf
3、启动snmp服务即可
service snmpd start
4、服务器端的配置:
Console->devices->add->添加主机
编辑箭头指向的几个选项主要是指定主机名和IP地址和主机模板等。填写完了,然后为该主机创建图像
5、点击"Create Graphs for this Host" ,添加"Graph Templates"和"Data Query"等模板并把方框勾上,这里因为已经配置完"Graph Templates"和"Data Query",所以背景显示为暗。配置完点击"Create"
6、将图像添加到"Graph Trees"里
Console->Graph Trees ->add
把"Tree Item Type"和"Host"、"Graph Grouping Style"添加下,添加完如下图所示:
7、出图,这是是监控远程客户机系统性能的几个参数