Linux CentOS6.x 下编译安装Cacti监控和配置的详细教程

Cacti简介

随着公司规模扩大,服务器也日渐增多,对服务器集群的网络流量和服务器性能实时监测显得愈发重要。开源阵营中常用有MRTG(MultiRouter Traffic Grapher)–基于SNMP的网络流量统计分析工具。它通过SNMP协议从设备得到并记录网卡信息,并将流量负载以图形的方式显示出来,系统负载小,使用方便。不过,由于MRTG存在诸多缺点,其作者Tobias Oetiker在1999年就已经开始开发另一套开源软件RRDTool来代替MRTG。,但是RRDTool的主要作用是数据的存储和将数据绘画成图像。要实现数据的采集和管理,需要通过cacti辅助RRDTool。

cacti是用PHP语言开发的一套完全面向RRDTool的B/S系统,它用SNMP服务获取数据,然后用RRDTool储存和更新数据并生成详细图表呈现给用户。因此,snmp和rrdtool是cacti的关键。snmp关系着数据的收集,rrdtool关系着数据的存储和图表的生成。cacti通过Mysql存储了所有RRDTool创建图像需要用到的信息以及管理信息,如:主机名、主机ip、snmp团体名、端口号、模板信息等。注意:SNMP抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。

名词解释

1.RRDtool是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直往下走下去。过了一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。

RRDtool源自MRTG(多路由器流量绘图器)。MRTG是有一个大学连接到互联网链路的使用率的小脚本开始的。MRTG后来被当作绘制其他数据源的工具使用,包括温度、速度、电压、输出量等等。

2.RRD
Round Robin Database环状数据库

3.SNMP
SNMP(Simple Network Management Protocol,简单网络管理协议)的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。在架构体系的监控子系统中将扮演重要角色。大体上,其基本原理是,在每一个被监控的主机或节点上 (如交换机)都运行了一个 agent,用来收集这个节点的所有相关的信息,同时监听 snmp 的 port,也就是 UDP 161,并从这个端口接收来自监控主机的指令(查询和设置)。

如果使用 RHEL5 的 net-snmp,那么被监控主机需要安装 net-snmp(包含了 snmpd 这个 agent),而监控端需要安装 net-snmp-utils。如果自行编译,需要 beecrypt(libbeecrypt)和 elf(libraryelf)的库。

每一个 agent 维护一个树形的数据库,称为 MID(Management Information Base, 管理信息库),其每一个节点称为 Object Identifier(OID),这在使用 net-snmp-utils 的工具时会用到。这些节点就表示了这台主机系统的设备如网卡的接口描述(eth0 等)、物理地址(MAC)、接口类型等,也可能是系统的信息,或者是需要监控的进程等…

应用场景极其优点

常见应用
服务器资源:CPU、内存、磁盘、进程、连接数等
服务器类型:WEB、Mail、FTP、数据库、中间件
网络接口:流量、转发速度、丢包率
设备运行状态:风扇、电源、温度
机房运行环境:电流、电压、温湿度

优点:
开源性;
界面相对其它监控软件漂亮,能划出漂亮的数据图;
跨平台监控;
可扩展性。

服务器实时监控系统架构及工作流程

整个监控系统主要由四部分组成:
1、Cacti系统–用户控制的平台,用户在此进行所有的设置与查看图表。当然Cacti也需要WEB服务器如Apache和PHP环境的支持;
2、SNMP采集工具–Unix下使用 Net-SNMP软件包自带的”snmpget”和”snmpwalk”等程序,windows下使用php的snmp功能;
3、RRDTool绘图引擎–性能数据的存储和绘画图像;
4、MySQL数据库–储存RRDTool绘图所需的信息。

在一个良好的Cacti环境中,Cacti监控网络设备执行了如下过程:
0、Cacti向net-snmp发出命令。并指定要采集数据的主机地址,SNMP的OID值,数据文件存放的路径等。同时向数据库插入相关信息。
1、net-snmp使用snmpget命令向网络设备发出SNMP请求,运行SNMP agent的网络设备返回相关数据。
2、net-snmp采集回来数据后,传递给RRDtool程序,由RRDtool按要求存储数据到特定路径下以rrd为后缀的文件中。每个rrd文件都是一个数据库。
3、上述过程就已经完成了背景下的操作,如果用户不请求查看图形。那么就到此为止了。这个过程就是,用户发出查看特定交换机端口流量图形的请求。
4、Cacti根据用户请求,从数据库中查找特定设备接口的rrd文件的位置。
5、Cacti向RRDtool发出绘图命令,RRDtool绘图后,返回生成的PNG图形。
6、Cacti在网站上呈献生成的图形信息。

Cacti架构

1

Cacti工作原理

2

准备cacti安装环境

准备所需要的软件包

软件官网

Apache     http://www.apache.org/
Mysql      http://www.mysql.com/
Php        http://www.php.net
Rrdtool    http://oss.oetiker.ch/rrdtool/
Net-snmp   http://www.net-snmp.org/
Cacti      http://www.cacti.net/

下载软件

Rrdtool下载
# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.4.7.tar.gz
Net-snmp下载
# wget http://sourceforge.net/projects/net-snmp/files/net-snmp/5.6.2/net-snmp-5.6.2.tar.gz
Cacti下载
# wget http://www.cacti.net/downloads/cacti-0.8.8a.tar.gz

其中apache、mysql、php通过yum安装

安装所需要的软件

安装LAMP

cacti 需要LAMP环境的支持
LNMP编统安装可以参考“CentOS6.x 64位下编译安装nginx1.6.x+php5.5.x+mariaDB10.0.x的Shell脚本

[root@cacti ~]# yum -y install httpd mysql-server php php-mysql mysql-devel
[root@cacti ~]# chkconfig httpd on // 设置httpd开机启动
[root@cacti ~]# chkconfig mysqld on
[root@cacti ~]# /etc/init.d/httpd start // 启动httpd
[root@cacti ~]# /etc/init.d/mysqld start

安装完成后,可通过以下程序测试

[root@cacti html]# cat inex.php
< ?php
phpinfo();
?>

3

安装rrdtool

Rrdtool安装需要cairo、libxml2、pango库支持,可通过yum安装

[root@cacti ~]# yum -y install cairo-devel libxml2-devel pango-devel perl-devel perl-CPAN
[root@cacti ~]# tar zxvf rrdtool-1.4.7.tar.tar
[root@cacti ~]# cd rrdtool-1.4.7
[root@cacti rrdtool-1.4.7]# ./configure --prefix=/usr/local/rrdtool --disable-tcl
[root@cacti rrdtool-1.4.7]# make && make install
[root@cacti rrdtool-1.4.7]# ln -s /usr/local/rrdtool/bin/* /usr/local/bin/ # 建立符号连接

安装net-snmp

[root@cacti ~]# tar zxvf net-snmp-5.6.1.1.tar.gz
[root@cacti ~]# cd net-snmp-5.6.1.1
[root@cacti net-snmp-5.6.1.1]# ./configure --prefix=/usr/local/net-snmp
# 安装过程中会有交互式提示输入一些配置信息,根据提示输入即可
[root@cacti net-snmp-5.6.1.1]# make && make install
[root@cacti net-snmp-5.6.1.1]# cp EXAMPLE.conf /etc/snmp/snmp.conf
[root@cacti ~]# ln -s /usr/local/net-snmp/bin/* /usr/local/bin/ # 建立符号连接
[root@cacti ~]# /usr/local/net-snmp/sbin/snmpd -c /etc/snmp/snmp.conf # 启动
# 加入开机启动
[root@cacti ~]# echo "/usr/local/net-snmp/sbin/snmpd -c /etc/snmp/snmp.conf " >>/etc/rc.local

配置SNMP

注意,此处配置SNMP是用于检测本机的数据,也就是说,如果想用cacti检测其他linux主机,也要在其他linux主机上进行同样的SNMP配置,不然cacti服务器无法获取SNMP数据。
net-snmp版本为5.7.2.1或更高版本设置
我这里的net-snmp版本是5.7.2.1,配置过程如下:

#cd /etc/snmp
#cp snmpd.conf.exsample snmpd.conf
#vim snmpd.conf

# 1.监听
agentAddress  udp:127.0.0.1:161  # 注释掉该行
agentAddress udp:161,udp6:[::1]:161  # 修改为该行,也可以不要后面的IPv6部分。

# 2.v2c授权
找到
rocommunity public  default    -V systemonly
注释掉,添加一行
rocommunity public 192.168.1.101 

IP地址是监控服务器的IP,不解释

# 3.v3授权
暂不多赘述,因为现在利用snmp协议监控多使用1或者2版本。
修改好后,需要重启snmp使修改生效
[root@localhost ~]# ps -ef |grep snmp
root     15098     1  0 14:58 ?        00:00:00 /usr/local/net-snmp/sbin/snmpd -c /etc/snmp.conf
root     15257 12629  0 15:11 pts/0    00:00:00 grep snmp
[root@localhost ~]# kill 15098
[root@localhost ~]# /usr/local/net-snmp/sbin/snmpd -c /etc/snmp.conf

net-snmp低版本设置
注:以下配置在最新版本net-snmp-5.7.2.1版本中不存在,找不到相应的配置项

[root@server ~]#vi /etc/snmp/snmp.conf
#将下边这行中的default 
com2sec notConfigUser  default       public
#改为:127.0.0.1
com2sec notConfigUser  127.0.0.1       public
(注意这里:如果你以后想往cacti里添加其他机器,只要在被监控的主机上把127.0.0.1改为cacti服务器的地址就行了)
#将下边这行中的systemview
access  notConfigGroup ""      any       noauth    exact  systemview none none
#改为:all
access  notConfigGroup ""      any       noauth    exact  all none none
#将下边这行的注释“#”去掉
view all    included  .1          80

重启snmpd服务
上面这几个地方很重要,注意了,不然得不到数据
如果是用yum安装,则可以用以下命令启动

[root@server ~]# service snmpd restart
停止 snmpd:                                               [确定]
正在启动 snmpd:                                           [确定]
[root@server ~]# chkconfig snmpd on

编译安装启动方法

/usr/local/net-snmp/sbin/snmpd -c /etc/snmp.conf
echo "/usr/local/net-snmp/sbin/snmpd -c /etc/snmp.conf " >>/etc/rc.local  #加入开机启动

测试snmp是否正常
测试使用一些常用的命令来进行取 snmp 的操作

snmpwalk -c public -v 2c localhost
#  or
snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex

会显示输出如下:
IP-MIB::ipAdEntIfIndex.61.xxx.xxx.xxx = INTEGER: 2 IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1 IP-MIB::ipAdEntIfIndex.172.xxx.xxx.xxx = INTEGER: 3

也可以用snmpd -f -Le 命令查看当前有没有出什么错.
我们常用需要取到的几个信息可以测试一下是否都能取到.

检查内存使用量
snmpwalk  -v 2c   -c public [目标IP] memory

检查磁盘使用情况
snmpwalk -v 2c -c public [目标IP] .1.3.6.1.4.1.2021.9.1

磁盘的I / O
snmpwalk -v 2c -c public [目标IP] .1.3.6.1.4.1.2021.13.15.1.1 

SNMP设置参考文档:
Setting Up SNMP(官方):http://docs.cacti.net/manual:088:1_installation.1_install_unix.4_configure_snmp#setting_up_snmp

安装Cacti

为Cacti创建Web站点

# tar zxvf cacti-0.8.8a.tar.gz
# mv cacti-0.8.8a/* /var/www/html/  //将cacti中的内容移到 web目录

Cacti数据库设置

在数据库中建库、授权、导入数据库结构

# mysql -uroot -p  //连接到mysql创建数据库
mysql> create database cacti default character set utf8; # 创建cacti数据库
mysql> grant all privileges on cacti.* to 'cactiuser'@'localhost' identified by '123456';
# 建立了一个数据库cacti,mysql用户cactiuser,密码为123456,同时把数据库cacti授权于用户cactiuser
mysql>flush privileges; # 重载mysql授权表,使设置生效
mysql> use cacti;  # 切换数据库
mysql> source /var/www/html/cacti/cacti.sql; # 导入cacti数据库,注意导入cacti.sql时该文件的路径
mysql> \q # 退出,或quit命令

配置cacti连接数据库

修改网站配置文件,使用正确连接数据库参数

#vi /var/www/html/cacti/include/config.php  
修改mysql数据库、用户名、密码:
/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost"; # 此处一定要设置为localhost,否则可能连接不上数据库,我也不知道为什么,反正这么改就行
$database_username = "cactiuser";     
$database_password = "cacti";
$database_port = "3306"; 
$url_path = "/cacti/";改为$url_path = "/";  //更改usr_path,不然访问cacti时地址还得加http://192.168.0.2/cacti

配置cacti目录权限

如果打开浏览器, 发现不能显示或者显示禁止访问, 请将/var/www/html/cacti 目录的属主设置为运行 httpd 的用户

# chown -R www.www /var/www/html/cacti # 设置目录所有者
经测试,只需要执行上面这条语句即可,下面这些操作可以不用执行
添加cacti用户,否则cacti不能写入rrd和log目录,将会无法生成图片
#useradd cacti -d /var/www/html/cacti -s /bin/false  
#chown -R cacti /var/www/html/cacti/rra /var/www/html/cacti/log  
chown cacti:www /var/www/html/cacti/scrips/*

SELINUX设置

如果还是无法访问或无法打开页面,输入以下命令试试(若没有关闭SELINUX,可以执行这条命令设置权限)

# chcon -R -h -t httpd_sys_content_t /var/www/html/cacti

或者关闭SELINUX
SELINUX关闭有2种方法:
○1[root@server ~]# vim /etc/selinux/config
修改如下:
SELINUX=enforcing             //修改为:SELINUX=disabled
重启: 
[root@server ~]# reboot          //重启后永久生效
○2[root@server ~]# setenforce 0     //临时关闭,即时生效

注意:#setenforce 0 如果不关闭会出现很多问题,如访问不了,没有权限等

防火墙设置

开放80端口、3306端口、161端口

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 161 -j ACCEPT

特别提示:很多网友把这两条规则添加到防火墙配置的最后一行,导致防火墙启动失败,正确的应该是添加到默认的22端口这条规则的下面
添加好之后防火墙规则如下所示:

#########################################################
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 161 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
#########################################################

/etc/init.d/iptables restart #最后重启防火墙使配置生效

或者关闭防火墙
关闭防火墙有2种方法:

○1[root@server ~]# chkconfig iptables off     //关闭防火墙,重启后生效。
○2[root@server ~]#iptables –F              //即时生效,不需要重启

同步系统时间和修改时区

在这里需要注意一点当需要监控其他主机时,需要与配置cacti服务器的主机的时间一致,这样才能正确采集图像。

ntpdate 0.centos.pool.ntp.org

修改php.ini时区(不修改后面显示图错误)

[root@localhost ~]# vim /etc/php.ini
date.timezone = Asia/Chongqing

通过安装向导完成Cacti的安装

完成cacti最后的配置,在浏览器输入:http://localhost/cacti,将进入cacti登录页面,第一次登陆用户名和密码都是admin,它会要求你立即设置新密码。接着设置cacti用到的命令正确路径,一定要正确,如下图:

1

浏览器下具体配置如下:
#用浏览器打开 :http://服务器IP/cacti ; 会显示cacti的安装指南,设置好就不会再提示。
#Cacti 默认的用户名与密码是:admin,输入用户名与密码,点击:login
#为了安全的原因,第一次登录成功后,Cacti会强制要求更改新password,输入新密码并确认密码,点击“save”,进入cacti控制台界面;
#点“Next”
#选择“New Install”,点击“Next”
#指定 rrdtool php snmp 工具的Binary文件路径,确保所有的路径都是显示“FOUND”,没有“NOT FOUND”的,点击Finish 完成安装。
注意:/usr/local/rrdtool-1.3.6/bin/rrdtool
/usr/local/php/bin/php
这两个路径一般cacti找不到,要手动填进去。
还有要注意的是,在Settings 选项里有个rrdtool的版本选项,一定要选择你当前使用的版本,要不没有图像
5

完成设置后,通过http://localhost/cacti/graph_view.php,选择服务器即可看到监控图标。

添加监控客户端

如需添加其他主机,该主机必须安装正确配置net-snmp,配置方法如上所述。

Cacti监控Linux客户端

说明:要使用Cacti监控一台Linux主机,需要在被监控的主机上安装net-snmp等相关的软件包;
同时需要开启防火墙UDP161端口

开启防火墙UDP161端口

vi /etc/sysconfig/iptables #编辑防火墙配置
-A INPUT -m state –state NEW -m udp -p udp –dport 161 -j ACCEPT
/etc/init.d/iptables restart #重启防火墙使配置生效

安装net-snmp

安装snmp相关软件包,这里使用CentOS的yum命令在线安装
在被监控的Linux客户端上安装net-snmp
yum -y install net-snmp
chkconfig snmpd on #设置开机启动
service snmpd start #启动snmpd

设置snmp v3验证账户

使用安全性更好的v3验证方式。
如开启snmpd服务先要停止:
service snmpd stop

有两个方法设置验证账户。
方法一:
执行:

mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
vim /etc/snmp/snmpd.conf

输入:
rouser snmpuser auth

在v3中,“rouser”用于表示只读帐号类型,随后的“snmpuser”是指定的用户名,后边的“auth”指明需要验证。

继续执行:
vim /var/lib/net-snmp/snmpd.conf

在最后加入:
createUser snmpuser MD5 7uO5ja7dO1

方法二:
使用net-snmp-config –create-snmpv3-user命令。
net-snmp-config –create-snmpv3-user -ro

6

-ro表示只读,username为snmpuser,密码为7uO5ja7dO1,用于加密的密码为12345678。(密码都要超过8位)
另外还有一个net-snmp-create-v3-user和这个命令功能相同。这里使用方法二创建验证账户。

配置编辑

[root@client ~]#vim /etc/snmp/snmpd.conf
#更改以下部分:
#将下边这行中的default
com2sec notConfigUser default public
改为:10.10.10.100(服务器IP地址)
com2sec notConfigUser 10.10.10.100 public
(注意这里:如果你以后想往cacti里添加其他机器,只要在被监控的主机上把127.0.0.1改为cacti服务器的地址就行了)
将下边这行中的systemview
access notConfigGroup “” any noauth exact systemview none none
# systemview 改为all
access notConfigGroup “” any noauth exact all none none
将下边这行的注释“#”去掉
view all included .1 80

#重启snmpd服务
[root@client ~]#service snmpd restart
[root@client ~]# chkconfig snmpd on # 设置snmpd开机自启动

netstat -nlup |grep “:161” #检查snmp服务器是否运行,出现类似下面输出结果,说明snmp运行正常
udp 0 0 0.0.0.0:161 0.0.0.0:* 2765/snmpd

至此,被监控的Linux主机设置完成。

检查net-snmp

无密码测试:
让我们测试一下,看看snmp是否已经正常工作 ,下面的命令 应该会得到本机的ip地址信息
snmpwalk -c public -v 1 -m ALL 127.0.0.1 .1.3.6.1.2.1.4.20
如果你添加了远程主机就用下面的命令测试
snmpwalk -c public -v 1 -m ALL 192.168.1.118 .1.3.6.1.2.1.4.20

有密码测试:
snmpwalk -v3 -u snmpuser -l auth -a MD5 -A 7uO5ja7dO1 127.0.0.1 system
7

命令格式:
snmpwalk -v3 -u 用户名 -l auth -a MD5 -A 密码 被监控服务器IP system

如果出现问题请注意一下snmp协议的版本,都用version 1是一种解决方法
如果都用version 1,需要把所有监控机和被监控机的snmpd.conf改一下
#vi /etc/snmp/snmpd.conf
#将下边这行
view systemview included .1.3.6.1.2.1.1

#改为
view systemview included .1.3.6.1.2.1

监控机上添加主机

1、Console -> Devices,点击Devices栏右边的Add。
8

如图设置好相关参数,点击Create。

上部出现SNMP Information表明添加成功:

    System:Linux server01 2.6.18-274.7.1.el5.028stab095.1 #1 SMP Mon Oct 24
    20:49:24 MSD 2011 i686
    Uptime: 137307 (0 days, 0 hours, 22 minutes)
    Hostname: server01
    Location: Unknown
    Contact: root@localhost

2、创建监控图形
点击Create Graphs for this Host。前面选择的模板是ucd/net SNMP Host,在ucd/net – CPU Usage、ucd/net – Load Average、ucd/net – Memory Usage、Up eth0后打上勾,监控CPU使用率、系统负载、内存信息及网卡数据流量。Select a graph type可以选择In/Out Bytes。点击下面的Create,图形创建完成。

3、将图形添加到Graph Trees
Console -> Graph Trees,点击后面的Add。输入Name,点击Create。
9
Console -> Graph Management,在CPU Usage、Load Average、Memory Usage、Traffic – eth0口打上勾,后面的下拉框选择“Place on a Tree (server02)”,点击Go。然后到下个页面点击Continue。

3、设置Poller
Console -> Settings -> Poller,设置Poller Interval和Cron Interval为Every Minute。

Cacti监控Windows客户端

详细内容请参考:
CentOS 6.3 运维监控之Cacti 监控主机系统(二) :http://yanghuawu.blog.51cto.com/2638960/987339

配置cron计划任务

刚安装好应该是看不到图像的因为还要用php去执行脚本
现在以 cacti用户身份添加一条计划任务 ,最好让他每分钟执行一次,以便生成一个监控图表。

[root@server cacti]#crontab -e   或crontab –u cacti –e 
加入以下内容,注意:poller.php 的路径
*/1 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
[root@server cacti]#service crond restart

如果系统是最小安装,可能没有crontab组件,安装一个即可
安装crontab:

[root@CentOS ~]# yum install -y vixie-cron 
# chkconfig crond on

#确保 /var/www/html/cacti/rra/目录存在;
#如果暂时未看到图表,先手动执行一下,看rrd目录是否生成图像

[root@server cacti]# su cacti
[root@server html]# php /var/www/html/cacti/poller.php > /dev/null 2>&1
[root@server cacti]# ls /var/www/html/cacti/rra/
如果有文件生成表示执行成功了

清空下poller cache
Console -> System Utilities -> Rebuild Poller Cache。

都设置完后,图形上数据不会马上出来,等会儿最多半天就会有。

Cacti常用插件安装

MySQL监控

至于 cacti的插件,我用了 mysql-cacti-templates 来监控mysql
10

可以参考这篇文章http://xok.la/2009/05/cacti_mysql_monitor.html
需要注意的是数据库权限 ,要在被监控的mysql数据库里面给cacti授权
mysql> grant process,super on *.* to ‘cactiuser’@’192.168.1.163’ identified by ‘admin’;
mysql> grant all privileges on cacti.* to cactiuser@”192.168.1.163″ identified by “admin”;

Nginx监控

用的是 cacti-nginx 这个插件 可以参考这篇文章
http://xok.la/2009/05/cacti_nginx_monitor.html
不过这篇文章有一点没有提 那就是添加模板最后一步
在 URL of nginx stub status这个里面一定要加上 完整URL,如http://192.168.1.163/NginxStatus
client 和socket 两个都要加,要不没有数据
11

进阶应用

大家可以访问Cacti论坛,可以学到更多东东,不过我觉得CACTI建图的基本原理是先创建数据模板,然后创建图形模板,而图形模板是调用数据模板而来,意思就是将数据转换到图形上来输出,这样便于我们直观查看到,然后我们可以把相应的图形模板加到主机模板里面去,这样我们就可以在创建设备监控的时候就可以选择相应的主机模板来创建图形喽,说了这么多不知道你明白了没有?这是CATCI精髓之所在,你一定要搞明白,其时我们导入的这些模板可以在数据模板里面找得到,你可以深入研究它究竟是怎样写公式来得到相关数据滴.

Cacti脚本及模板论坛:http://forums.cacti.net/forum-12.html

一个完整的cacti脚本及模板列表:http://forums.cacti.net/about15067.html

最后谈谈Cacti数据采集方式,总结如下表

方式 非SNMP 数据 重点 难易度
snmp get 不支持 单个 OID和类型
data queries 不支持 多个 编写XML
脚本 支持 多个 编写脚本

Cacti有三种数据采集方式,snmp get / data queries /script,从以上表格我们可以看出snmp get方式最简单也是最容易,但灵活性有限,比如说我们主机有多个CPU,而用snmpget方式只能监控单个CPU数据,想要输出多个CPU的数据到一张图,我们只能用data queries或脚本方式来实现,当某些设备不支持SNMP我就可能通过脚本的方式,把数据收集计算以后返回给Cacti然后以图形的方式显示出来,这也显示出了Cacti强大的扩展性和灵活性.
更多进阶应用信息请参考:Cacti进阶应用篇:http://allanfan.blog.51cto.com/520839/401941/

CACTI流量监控配置方法

详情请参考:CACTI流量监控配置说明:http://wenku.baidu.com/link?url=HsigvWgnR3zl4OdvBZVZl3TG-ALSz9zkWOoWpJENWtk4KGsb0E3yQ5Vnj5JPN-dW34XVHfCt_v3T7R3rS59AT_wOJkDoswXFXRypdZCCcb7

常见故障排除

1、字体在图形中显示不正常的解决方法:下载并安装cjkuni-fonts中文字体,字体名ukai.ttf;
方法1:

#wget http://ftp.debian.org/debian/pool/main/t/ttf-arphic-ukai/ttf-arphic-ukai_0.2.20080216.1.orig.tar.gz
#tar zxvf ttf-arphic-ukai_0.2.20080216.1.orig.tar.gz
#cp ukai.ttc /usr/share/fonts/ukai.ttc 

方法2:如果我们使用的是 RHEL 和 Centos 有更加容易的方法

yum install fonts-chinese

安装完成后注意在”设置”中更改下面两个必改项.
(1. 常规->RRDTool应用程序版本 改为1.4.x,默认有可能为1.0.x.不改可能图像不能正常显示出来.
(2. 路径->RRDTool默认字体路径 改为上面安装的 ukai.ttf 的文件路径,如果是使用的 yum 安装的话,就是 /usr/share/fonts/chinese/TrueType/ukai.ttf
2、cacti无法显示监控图表的解决方法:
1)首先确认/var/www/html/cacti/rrd目录是否可写,照上文设置用户权限;
2)字体路径是否设置正确,如上文所述;
3)RRDTool版本设置是否正确(查看RRDTool版本命令:#rrdtool -v),设置方法:Console -> Cacti Settings -> Genera -> RRDTool Utility Version -> RRDTool 1.3.X;(默认为1.0.x,不改可能图像不能正常显示出来)

3.安装完毕在浏览器上无法看到数据的png图片。请查看apache的log
如果出现:
[Thu Feb 09 15:12:24 2006] [error] [client 127.0.0.1] File does not exist:/var/www/html/favicon.ico
ERROR: opening ‘/var/www/html/cacti/rra/localhost_mem_buffers_3.rrd’: Permission denied(没有权限)
PS:解决方法:关闭selinux,即可解决问题。
注意:无法获取数据图大多和poller.php,cmd.php权限有关。

4.当cacti 有图没有数据时,而且状态为nan的错误
PS:这个很可能是snmp的问题,执行以下命令,没有得到如图的结果。就说明snmp不支持64位MIB库。请重新编译安装snmp。

[root@server ~]# snmpwalk -c public -v 2c 127.0.0.1 IF-MIB::ifHCInOctets 
IF-MIB::ifHCInOctets.1 = Counter64: 2105
IF-MIB::ifHCInOctets.2 = Counter64: 1810779 

5.如果出现问题请注意一下snmp协议的版本,被监控主机无法获得snmp信息,还有可能是对方主机snmp版本和当前主机的snmp版本不一致导致的。都用version 1是一种解决方法
如果都用version 1,需要把所有监控机和被监控机的snmpd.conf改一下
#vi /etc/snmp/snmpd.conf
将下边这行
view systemview included .1.3.6.1.2.1.1
改为:
view systemview included .1.3.6.1.2.1
PS:rrdtools版本要一致,特别是在升级cacti时候。版本不一致,可能rra数据格式不同。
就无法处理。

排错方法以及思路

1.查看log下的日志文件。一般那里会有提示;

[root@server ~]# tail /var/log/httpd/error_log    //查看日志
[root@server ~]# tail /var/log/messages         //查看日志

2.测试SNMP是不是工作正常 #snmpwalk -v 2c -c public hostIP 如果正常的话会出现一些数据。不正常会出现一些错误,也会有对应的错误提示;
例如:
snmpwalk -v 2c -c public ServerIP if 用来测试被控对象(serverIP)是否开启了SNMP服务
snmpwalk -v 2c ServerIP -c public .1.3.6.1.4.1.2021.10.1.3 查看被控端是否有CPU负载的数据返回
3.自动运行poller.php没有,有没有加入cacti的的用户,有没有给cacti用户写入rra/ log/的权限;
4.#crontab -u cactiuser -e 为cactiuser加上自动运行poller.php的任务:
*/5 * * * * root /usr/local/bin/php /usr/local/share/cacti/poller.php /dev/null 2>&1
5.把cacti目录里的cmd.php和poller.php文件加下运行的权限;
6./usr/local/bin/php /home/wwwroot/cacti/poller.php 用来测试PHP是否可以采集到数据。如果上面的都正确,但这步出错,很有可能是PHP配置的问题,或开启了SuLinux。

参考资料:
官方资料
cacti的官方文档在http://docs.cacti.net/manual:088,至少好好读一读InstallationBasicsTemplates三章。

安装相关
cacti监控系统之一 cacti,snmp安装:http://coolnull.com/493.html
cacti安装与配置:http://liyaoyi.blog.51cto.com/442933/846891
CentOS环境Cacti的安装与配置:http://www.linuxidc.com/Linux/2011-09/43909.htm
CentOS 6.3 运维监控之Cacti 详细安装(一):http://yanghuawu.blog.51cto.com/2638960/984793
Centos/Linux下安装配置Cacti中文版:http://www.haiyun.me/archives/centos-install-cacti.html
Cacti监控服务器配置教程(基于CentOS+Nginx+MySQL+PHP环境搭建):http://www.osyunwei.com/archives/3209.html

设置相关
Cacti安装配置以及监控经验分享:http://luxiaok.blog.51cto.com/2177896/1006175
CentOS Linux安装cacti:http://www.live-in.org/archives/1198.html
centos6.4安装cacti0.8.8b:http://guotiegang55.blog.51cto.com/929937/1287535

常见问题
Cacti中文版在Centos5(Rhel5)上的安装:http://www.php-oa.com/2008/01/12/centos5-cacti.html

发表评论?

0 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据