trssc 发表于 2019-1-11 08:58:20

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 &quot;2012-07-17 09:46:33&quot;    设置系统时钟
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 = &quot;/cacti/&quot;
然后进图形界面,点上面的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]
查看完整版本: cacti 监控