cacti 监控
cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。 SNMP是英文“Simple Network Management Protocol”的缩写,中文意思是“简单网络管理协议”。SNMP是目前最常用的环境管理协议。SNMP被设计成与协议无关,所以它可以在IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用。SNMP是一系列协议组和规范(见下表),它们提供了一种从网络上的设备中收集网络管理信息的方法。SNMP也为设备向网络管理工作站报告问题和错误提供了一种方法。
实验1:
http://www.cyberciti.biz/nixcraft/linux/docs/uniqlinuxfeatures/mrtg/
可以参考上面网站的
MRTG:Multi Router Traffic Grapher------MRTG是一个监控网络链路流量负载的工具软件,通过snmp协议得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非常直观的形式显示流量负载,但是采集的数据没有存储起来。
Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具。
Cacti 有三大组件:MySQL 数据库、RRDtool 工具、Net-Snmp 程序。
MySQL并不负责监控数据的存储,只保存模板和rra 文件与主机对应等信息,而真正的监控数据存储和图像展现都是rrdtool 来做的。而Net-SNMP 负责数据的采集。
cacti偏重于网络流量,系统负载方面的监控。
Nagios则比较注重于主机和服务的监控。
安装cacti-0.8.7h.tar.gz
yum install httpd php php-mysql php-gd php-xml php-snmp mysql mysql-devel net-snmp rrdtool net-snmp-devel net-snmp-utils -y
/etc/init.d/httpd start
net-snmp-utils-5.3.1-14.el5 #用于提供snmpget、snmpwalk等snmp数据采集命令
net-snmp-5.3.1-14.el5 #提供snmp数据采集服务
vim /etc/php.ini
date.timezone = Asia/Chongqing大概在947行
vim /etc/snmp/snmpd.conf
#com2sec notConfigUserdefault public
com2sec local localhost public#允许本机和本地192.168.0.0网络的主机
com2sec mynetwork 192.168.0.0/24 public
#group notConfigGroup v1 notConfigUser
#group notConfigGroup v2c notConfigUser
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
#view systemview included .1.3.6.1.2.1.1
#view systemview included .1.3.6.1.2.1.25.1.1
view all included.1 80
#accessnotConfigGroup "" any noauth exactsystemview none none
access MyROGroup "" any noauth exactall none none
access MyRWGroup "" any noauth exactall all none
syslocation RHEL6.0
syscontact Root
snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex 测试snmp的配置
tar zxf cacti-0.8.7h.tar.gz
mv cacti-0.8.7h/var/www/html/cacti
useradd cacti
cd /var/www/html/cacti/
chown -R cacti rra log
vim include/config.php
$database_username = "cacti";
$database_password = "westos";
mysqladmin create cacti 如果mysql有密码,则 mysqladmin create -pwestos cacti
cd /var/www/html/cacti
mysql cacti < cacti.sql 或mysql cacti -pwestos < cacti.sql 导入cacti的表结构
mysql
grant all on cacti.* to cacti@localhost identified by 'westos';
flush privileges;
mysql
show databases;
ll /var/www/html/cacti/rra
su - cacti
crontab -e
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
php /var/www/html/cacti/poller.php
打开浏览器 http://desktop77/cacti/install
进去安装,然后再登录adminadmin 进去后就可以查看图形
实验中遇到的问题:
1.如果系统时间设置的不对,则应调整系统时间
date -s "2012-07-17 09:46:33" 设置系统时钟
hwclock--hctosys 硬件时钟与系统时钟同步
安装cacti-spine-0.8.7h.tar.gz#此软件包是用来加速与数据库交互取数据的,默认使用cmd.php。因为cmd.php跨机房绘图有时不连贯,所以我们选用spine。此软件包限选。如果使用spine,就必须确保spine的路径正确。
yum install libtool -y
yum install mysql-devel -y
yum install net-snmp-devel -y
tar zxf cacti-spine-0.8.8a.tar.gz
cd cacti-spine-0.8.8a #安装其他插件需要安装此软件包
##解释下命令
(1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。
your source files --> --> --> configure.ac
2.aclocal (automake):根据已经安装的宏,用户定义宏和acinclud.m4文件中的宏将configure.ac文件所需要的宏集中定义到文件 aclocal.m4中。aclocal是一个perl 脚本程序,它的定义是:“aclocal - create aclocal.m4 by scanning configure.ac”
3.autoheader(autoconf): 根据configure.ac中的某些宏,比如cpp宏定义,运行m4,声称config.h.in
4.automake: automake将Makefile.am中定义的结构建立Makefile.in,然后configure脚本将生成的Makefile.in文件转换为Makefile。如果在configure.ac中定义了一些特殊的宏,比如AC_PROG_LIBTOOL,它会调用libtoolize,否则它会自己产生config.guess和config.sub
5.autoconf:将configure.ac中的宏展开,生成configure脚本。这个过程可能要用到aclocal.m4中定义的宏。
##以上是解释命令
aclocal如果没有这个命令,则是libtool没有安装
libtoolize--force
autoheader
autoconf 出现的错误可以不管
automake
./configure --with-mysql=/usr/local/lnmp/mysql/ #如果是源码安装的lnmp架构,则需接--with-mysql=/usr/local/lnmp/mysql/
make && make install
cd /usr/local/spine/etc/
cp spine.conf.dist spine.conf
vim spine.conf
DB_User cacti
DB_Pass westos
然后在cacti的图形界面配置:console-》setting-》paths-》找“Alternate Poller Path” 填“/usr/local/spine/bin/spine”-》找“poller” “Poller Type” 选“spine” ,最后保存
安装cacti插件
下载cacti-plugin-0.8.7h-PA-v3.0.tar.gz 安装原版插件补丁包
tar cacti-plugin-0.8.7h-PA-v3.0.tar.gz
cd cacti-plugin-arch
cp cacti-plugin-0.8.7h-PA-v3.0.diff /var/www/html/cacti/将插件文件放到cacti的目录
mysql cacti -pwestos < pa.sql将插件数据库文件导入mysql数据库
cd /var/www/html/cacti/
patch -p1 -N < cacti-plugin-0.8.7h-PA-v3.0.diff 在cacti目录下生成插件目录
然后可以在cacti的图形界面中:左列点用户管理-》点admin用户名-》右下勾上插件管理 -》保存
安装monitor,setting等插件
下载 cacti-settings.tar.gz ,cacti-monitor.tar.gz
tar zxf cacti-settings.tar.gz -C /var/www/html/cacti/plugins#公共设置
tar zxf cacti-monitor.tar.gz -C /var/www/html/cacti/plugins#实现监控功能
进cacti图形界面,点左列插件管理,安装并激活两个插件
cd /var/www/html/cacti/include/
vim config.php
在?>前面加$url_path = "/cacti/"
然后进图形界面,点上面的monitor,会有监控的主机情况
安装thold 实现报警功能
下载cacti-thold.tar.gz
tar zxf cacti-thold.tar.gz -C /var/www/html/cacti/plugins
进cacti图形界面,安装并激活
监控其他linux主机:比如222.24.25.44 #我当时监控其他linux主机,snmp可以采集到数据,就是不往rra目录里面写,但是rra已经有写权限了,就是因为spine的路径没写正确导致的。还有,出现问题一定要看cacti的log,里面有很详细的日志记录。
先执行这条命令:snmpwalk -v 1 -c public 222.24.25.44 IP-MIB::ipAdEntIfIndex
会出现以下语句就好了:
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.222.24.25.44 = INTEGER: 2
另外snmp的配置文件要修改,iptables要关掉
注:如果不能监控别的主机,cacti的监控界面没有任何图形,则需检查selinux,iptables,php配置文件的时区,系统时间(date)。如果cacti可以采集到其他主机的信息,但不能绘图,则需检查cacti目录下的rra,log目录的权限。
步骤(1).console->device然后点击右上角的Add.
Description:desktop85.example.com
Hostname: 192.168.0.25
Host Template : ucd/net SNMP Host
SNMP Options:
SNMP Version: Version 1
然后点击右下角的create。
(2)create之后在页面的右上角会出现 Create Graphs for this Host,点击一下
选择你要监控的主机Host:desktop25.example.com(192.168.0.25)
Graph Types:All
在下面的Graph Templates下选择:
Graph Template Name
Create: ucd/net - CPU Usage
Create: ucd/net - Load Average
Create: ucd/net - Memory Usage
然后你还可以create:select a graph type to create
在Data Query中选择你要监控的数据。可以全选,
然后再右下角的:select a graph type:In/Out Bits
之后点击Create。
(3)console->Graph Tree
在右上角点击:Add
Name:desktop25.example.com
Sorting Type:Mannual Ordering
然后点击create。
然后再弹出的一个页面上会显示Save Successful。然后你在添加:tree Items 点击右房的Add修改:tree Item Type 选择HOST,在 Tree Item values:Host选择:desktop25.example.com
然后在Round Robin Archive:后面选择:Daily(5 minutes Average)之后点击create。然后点击Save。
(4)此时你可以点击graphs 可以看到Host:desktop25.example.com点击一下可以看到你所监控的desktop25机子上的一些变化。
实验2:http://blog.运维网.com/e/u/themes/default/images/spacer.gif
整合nagios 的cacti:
先为cacti安装npc插件:npc-2.0.4.tar.gz
rpm -q php-pdo
rpm -q php-json 先检测这两个php相关包
vim /etc/php.ini 确保date.timezone=Asia/Chongqi时间设置正确
tar zxf npc-2.0.4.tar.gz-C /var/www/html/cacti/plugins
/etc/init.d/mysqld status 确保mysql运行
浏览器 http://222.24.25.248/cacti 进去安装npc插件
安装之后,点console -》设置-》npc->在remote command前打勾,并在下面两个框里写上:/usr/local/nagios/var/rw/nagios.cmdhttp://222.24.25.248/nagios 然后保存
下面配置nagios
vim /usr/local/nagios/etc/nagios.cfg 前三个是默认的,只需修改第四个
check_external_commands=1
command_check_interval=‐1
event_broker_options=‐1
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/nagios/etc/ndomod.cfg 大概在249行
下载:ndoutils-1.4b7.tar.gz 将nagios的数据导入到mysql数据库中
tar zxf ndoutils-1.4b7.tar.gz
cd ndoutils-1.4b7
./configure --with-mysql-lib=/usr/lib/mysql
如果不加 --with-mysql-lib=/usr/lib/mysql,则在安装完后重启nagios会报错:不能加载ndomod.o这个库
make
cdconfig
cp ndo2db.cfg /usr/local/nagios/etc/
cp ndomod.cfg /usr/local/nagios/etc/
cd../src
cp ndomod-3x.o /usr/local/nagios/bin/ndomod.o
cp ndo2db-3x /usr/local/nagios/bin/ndo2db
此时可以在数据库中查看
mysql -ucacti-pwestos
show database;
use cacti;
show tables; 会有以npc_为前缀的表
vim /usr/local/nagios/etc/ndo2db.cfg
db_name=cacti
db_prefix=npc_
db_user=cacti
db_pass=westos
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg启动ndo2db
配置完成
/etc/init.d/nagiosreload
如果tail /var/log/messages 显示:/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
Could not bind socket: Address already in use
则需:cd /usr/local/nagios/var/
rm ndo.sock -f
如果在cacti的npc里,nagios的状态为off,则/etc/init.d/nagiosrestart
页:
[1]