Cacti+rrdtool+SNMP实现监控

(1) CPU 平均负载                (2) Memory内存使用情况
(3) 硬盘空间使用情况                (4) network流量,

Rrdtool 新操作系统版本已经改为mdadm =rrdtool

http://oss.oetiker.ch/rrdtool/pub/
官司方站 http://www.cacti.net/  
到官方网站下载最新版本

服务端
yum -y install net-snmp*
yum -y install php-snmp php-mbstring zlib* libart_lgpl* freetype* libpng* php-ftp php-gd php-ctype php-date php-libxml php-mysql php-zlib mysql-devel libgda-mysql zlib zlib-devel


打开默认的/etc/snmp/snmpd.conf文件,更改如下配置:
1、查找以下字段:
      sec.name  source          community
com2sec notConfigUser  default       public
将"comunity"字段改为你要设置的密码.比如"public".                                             
将“default”改为你想哪台机器可以看到你的snmp信息,如10.10.10.10。
服务端改为127.0.0.1

2、查找以下字段:
# Finally, grant the group read-only access to the systemview view.
#       group          context sec.model sec.level prefix read   write  notif
access  notConfigGroup ""      any       noauth    exact  all none none
将"read"字段改为all.

3、查找以下字段:
#           incl/excl subtree                          mask
#view all    included  .1                               80
将该行前面的"#"去掉.
保存关闭.

4、setup system service选取 snmpd   snmptrapd 开机启动
service snmpd start
service snmpdtrapd start
最后运行netstat -ln查看161端口是否打开了.

vi /etc/sysconfig/iptables  服端可以不用设定
-A RH-Firewall-1-INPUT -p udp -m udp --dport 161 -j DROP
-A RH-Firewall-1-INPUT -p udp --dport 161 -d 127.0.0.1-j ACCEPT
xx.xx.xx.xx 服务端的IP地址, 这意思是该端口只允许这IP通过,


1.编译rrdtool
把rrdtool包放到这个目录下:cd /usr/local/src/
tar -zxvf rrdtool-1.2.26.tar.gz
cd rrdtool-1.2.26
./configure --prefix=/usr/local/rrdtool
make
make install


2.安装cacti
把cacti放到apache2的web目录下cd /var/www/
tar xzvf cacti-0.8.7a.tar.gz
mv /root/snmp/cacti-0.8.7a /var/www/cacti
cd /var/www/cacti

然后创建cacti数据库:
mysql -u root -p
create database cacti;
GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'sky-Cacti';
flush privileges;
quit
导入cacti的表结构:
mysql cacti < cacti.sql #导入

3.设置cacti
编辑数据库连接文件vi /var/www/cacti/include/config.php
$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cactiuse”;
$database_password = “sky-Cacti”;

回到主机添加如下权限
useradd cactiuser –s /bin/nologin
cd /var/www/cacti
chown -R cactiuser:cactiuser rra log

给cacti的数据抓取添加一个定时job:
为cactiuser用户加入
vi /etc/crontab
*/5 * * * * cactiuser php /var/www/cacti/poller.php > /dev/null 2>&1

保存退出

vi /etc/httpd/conf/httpd.conf
add

Alias /cacti/ "/var/www/cacti/"
<Directory "/var/www/cacti">
    Options Indexes MultiViews
    AllowOverride None
    Allow from all
</Directory>

service httpd restart

4.cacti的web配置
http://XX.XX.XX.XX/cacti/
安装页面的第一步如果是全新安装的话,就直接下一步.
第二页上可能出现有binary找不到的提示信息:

这是由于服务器没有找到我们全新编译的rrdtool,这时手动修改一下位置就ok了:
/usr/local/rrdtool/bin/rrdtool

5.安装cactid
tar -zxvf cacti-spine-0.8.7a.tar.gz
cd cacti-spine-0.8.7a
./configure
make && make install

configure: error: MySQL libraries not found.
解决办法: vi configure
Line 5409: str="$i/lib/mysql/libmysqlclient.*"
改为 : str="$i/lib64/mysql/libmysqlclient.*"
Line 5412: MYSQL_LIB_DIR=$i/lib/mysql
改为 MYSQL_LIB_DIR=$i/lib64/mysql

6设置
vi  /usr/local/spine/etc/spine.conf
DB_Host         localhost
DB_Database     cacti  #数据库名
DB_User         cactiuser #连接数据用户
DB_Pass         sky-Cacti  #密码
DB_Port         3306

http://XX.XX.XX.XX/cacti/
    

选取 Paths 在Cactid poller File Path 输入/usr/local/cactid/bin/cactid (新版本输入 /usr/local/spine/bin/spine)
save
    

save
窗体底端
7、排错
1. 首先检查一下rra/下面,有没有数据
2. snmpwalk -v 2c -c public ServerIP if 用来测试被控对象(serverIP)是否开启了SNMP服务
3. snmpwalk -v 2c ServerIP -c public .1.3.6.1.4.1.2021.10.1.3 查看被控端是否有CPU负载的数据返回
4. /usr/local/bin/php /usr/local/apche2/htdocs/cacti/poller.php 用来测试PHP是否可以采集到数据。如果上面的都正确,但这步出错,很有可能是PHP配置的问题,或开启了SuLinux。
5. 如果按第2步snmpwalk能采集到数据,但第3步无法采集,可能是PHP设置的问题,修改PHP.ini,很有可能是PHP权限问题。

6. 创建监控后,没有图表标示,1权限是否正确,2上面提到的5分钟刷新是否加入,
也可以手工运行php /var/www/cacti/poller.php

上面的安装比较麻烦,需要装不少库,其实,可以,可以直接RPM安装,RedHat的系统,直接从安装光盘上找到这几个库,安装就可.主要的包有:
libart_lgpl
libart_lgpl-devel
libpng
libpng-devel
zlib
zlib-devel
freetype
freetype-devel
找到上面这些包,直接rpm –ivh *.rpm

8添加监控server
Console  Create New Graphs右边 Create New Hot


注意选取类型,LINUX的操作系统的主机选取(Local Linux Machine)
       Windows主机操作系统主机选取(Windows 2000/XP Host) 也支持2003的
        交换机选取ucd/net SNMP Host
Snmp Community 一般情况下填写 public

创建后如果正常通接到主机,显示如下:
sky (192.168.18.198)
SNMP Information
System: Linux localhost.SKY 2.6.18-8.el5 #1 SMP Thu Mar 15 19:57:35 EDT 2007 i686
Uptime: 449371 (0 days, 1 hours, 14 minutes)
Hostname: localhost.SKY
Location: Unknown (edit /etc/snmp/snmpd.conf)
Contact: Root root@localhost (configure /etc/snmp/snmp.local.conf)        

Associated Graph Templates 添加如下


添加监控
Console  Create New Graphs 在下拉例表中,选取服务器地址


添加有提示要修改颜色等,默认即可以直接添加CREATE
到这里添加完成了,5分钟后看结果

9查看结果
GraphsFitter by host (选取你要检查看的server)点击图表进入详细图表.

10修改编辑设定
Console  Create New Graphs在下拉例表中,选取服务器地址Edis thist Host=》这里可以更改设定


FreeBSD安装SNMP
cd /usr/ports/net-mgmt/net-snmp #snmp的存放路径
make install clean #安装snmp
vi /etc/rc.conf
snmpd_enable="YES"
snmpd_flags="-a -p /var/run/snmpd.pid"
snmptrapd_enable="YES"
snmptrapd_flags="-a -p /var/run/snmptrapd.pid"

mkdir /usr/local/etc/snmp
cp /usr/local/share/snmp/snmpd.conf /usr/local/etc/snmp/
vi /usr/local/etc/snmp/snmpd.conf #按LINUX方法修改
如果没有snmpd.conf这文件,也可以在LINUX主机拷贝过来。
/usr/local/etc/rc.d/snmpd.sh start #启动snmpCacti+rrdtool+SNMP实现监控_休闲 Cacti+rrdtool+SNMP-server.rar (427.91 KB)