最近刚换工作,公司40多人共用一个20M带宽的无线网络,路由器为思科R2911。老大让我整一个cacti来监控思科路由网卡流量。整了几天都获取不了snmp数据,最后要了路由权限才发现,上任运维临走把路由snmp服务关了,留下的文档写的很详细的他怎么打开并配置的snmp,心中一万个草泥马奔腾而过啊。不过庆幸有文档,可以很快的上手配置路由器。cacti监控还是很好配置,也是很好用的,对于有监控路由器流量或硬件负载的,可以研究一下。

        cacti是一个基于LAMP,SNMP,以及RRDTool的服务,是用php实现的。cacti通过snmp服务获取数据,通过rrdtool存储和更新数据,rrdtool还可以生成图表提供给前端展现。snmp抓到的数据是通过rrdtool以.rrd文件的形式存储的,rrd文件是大小固定的档案文件,它能够存储的数据笔数在创建时就已经定义好了。mysql数据库中存储的数据是cacti服务的配置数据以供调用,如帐号密码,主机名,主机ip,snmp团体名,端口号,模版信息等。

        安装包分为cacti-spine和cacti主安装包。因为在数据大量的采集时,cacti自带的cmd.php轮询器会吃不消,高频率的大量数据采集无法完成轮询所有机器。cacti-spine是一个官方推荐的高效的轮询器。



需要的安装包


cacti

cacti-spine

net-snmp-devel

mysql

myql-devel

openssl-devel

apache

php

rrdtool

net-snmp

cacti



安装详细过程


1、安装rrdtool和snmp

yum install rrdtool -y


yum install net-snmp

yum install net-snmp-utils

启动snmpd服务,并加入开机启动

service  snmpd  start

chkconfig  snmpd  on


2、安装LAMP

yum  install  httpd  mysql-server  php-mysql  mysql-devel

chkconfig  httpdon

chkconfig  mysqld on

/etc/init.d/httpd  start

/etc/init.d/mysqld start


然后浏览器访问localhost,检查apache服务是否正常开启


安装cacti服务

wget:http://www.cacti.net/downloads/cacti-0.8.8g.tar.gz

wget:http://www.cacti.net/downloads/spine/cacti-spine-0.8.8g.tar.gz

1、创建cacti用户

useradd -m cacti

passwd cacti

密码:cacti


2、安装编译cacti-spine需要的devel包

yum  install  net-snmp-devel  -y

yum  install  mysql-devel  -y

yum  install  openssl-devel  -y


3、安装gcc和libtool

yum  install  gcc  -y

yum  install  libtool  -y


4、下载cacti并解压

tar  xvzf  cacti-spine-0.8.8g.tar.gz

编译安装:

cd  cacti-spine-0.8.8g

aclocal

lobtoolize  --force

autoheader

autoconf

automake

./configure

make  &&  make  install


5、创建并配置spine.conf

cp  /usr/local/spine/etc/spine.conf.dist  /etc/spine.conf

chown  cacti.cacti  /etc/spine.conf

vim  /etc/spine.conf

DB_Host  localhost

DB_Database  cacti

DB_User  cacti_user

DB_Pass  cacti

DB_Port  3306


6、创建mysql用户,创建db并授予权限。

use myql

update  user  set  passwd=password('123')  where  user='root';

flush  privileges;

create  database  if  not  exists  cacti  default  charset  utf8  collate utf8_general_ci;

insert  into  user(host,user,password)  values('localhost','cacti',password("cacti"));

grant  all  on  cacti.*  to  cacti;

flush  privileges;


7、导入默认的cacti.sql

tar  xvzf  cacti-0.8.8g.tar.gz

mv  cacti-0.8.8g.tar.gz  /var/www/html/cacti

cd  cacti

mysql  -ucacti  -pcacti  -h127.0.0.1  cacti  



8、启动spine测试

/usr/local/spine/bin/spine

显示:

SPINE:Using  spine  config  file  [/etc/spine.conf]

SPINE:Version  0.8.8g  starting

SPINE:Time: 2.0527 s, Threads: 5, Hosts:2

如与上面信息相似则是配置正确


9、安装cacti主服务

cd  /var/www/html/

编辑cacti配置文件

vim  /var/www/html/cacti/include/config.php

$database_type = \"mysql\";

$database_default = \"cacti\";

$database_hostname = \"localhost\";

$database_username = \"cacti\";

$database_password = \"cacti\";

$database_port = \"3306\";

$database_ssl = false;


打开页面http://127.0.0.1/cacti/index.php

一直next下一步到登录页面

默认账户密码都为admin,很简单的就完成,就不配图了。


10、配置cacti

页面上选择哦

settings---->paths---->spine  poller  file  path  [/usr/local/spine/bin/spine] (将轮询器改为spine)

settings---->poller---->poller  type  [spine]

console---->settings---->poller---->maximum  threads  per  process  [5]

save


11、添加计划任务

#crontab  -e

*/1 * * * * *  /usr/bin/php   /var/www/html/cacti/poller.php  >  /dev/null  2>&1

设置每1分钟执行一次


12、配置思科路由器


摘自网络:

---------------------------------------------

一、配置Cisco设备的SNMP代理:

#snmp-server community public ro 配置本路由器的只读字串为public

#snmp-server community public rw 配置本路由器的读写字串为public

#snmp-server enable traps 允许路由器将所有类型SNMP Trap发送出去

#snmp-server host IP-address traps trapbhodc 指定路由器SNMP Trap的接收者IP-address发送Trap时采用trapbjodc作为字串

#snmp-server trap-source loopback0 loopback接口的IP地址作为SNMP Trap的发送源地址

二、配置Cisco设备的SNMP代理:

启用SNMP:

#snmp-server community public rw/ro

#end

 

启用陷阱:

#configure terminal

#snmp-server enable traps snmp authentication

#end

 

配置snmp

#conf t

#snmp-server community cisco ro(只读) 配置只读通信字符串

#snmp-server community secret rw(读写) 配置读写通信字符串

#snmp-server enable traps 配置网关SNMP TRAP

#snmp-server host 10.254.190.1 rw 配置网关工作站地址

 

如果用户不需要SNMP,最好取消;如果要使用SNMP,最好正确配置Cisco 路由器。但是,如果用户一定要使用SNMP,可以对其进行保护。首先,SNMP有两种模式:只读模式(RO)和读写模式(RW)。如果可能,使用只读模式,这样可以最大限度的控制用户的操作,即使在***者发现了通信中的字符串时,也能限制其利用SNMP进行侦察的目的,还能阻止***者利用其修改配置。如果必须使用读写模式,最好把只读模式与读写模式使用的通信字符串区别开来。最后可以通过访问控制列表来限制使用SNMP的用户。

---------------------------------------------


13、配置网页获取snmp信息并生成图像

cacti监控思科路由器网卡流量_第1张图片

cacti监控思科路由器网卡流量_第2张图片

cacti监控思科路由器网卡流量_第3张图片


14、中文版可以在网上下载,关于乱码问题,如果忘记修改数据库字符集可按下面修改。

mysql默认的是拉丁字符集,

mysql> showvariables like '%character%' ;

+--------------------------+----------------------------+

| Variable_name            | Value                      |

+--------------------------+----------------------------+

|character_set_client     | latin1                     |

|character_set_connection | latin1                     |

|character_set_database   | latin1                     |

|character_set_filesystem | binary                     |

|character_set_results    | latin1                     |

|character_set_server     | latin1                     |

|character_set_system     | utf8                       |

|character_sets_dir       |/usr/share/mysql/charsets/ |

+--------------------------+----------------------------+

8 rows in set (0.00sec)

 

临时修改可以使用setnames utf8

但是如此修改重启数据库后还是会回到拉丁字符,继续乱码

 

永久修改

[root@bogon ~]# cat/etc/my.cnf

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

default-character-set=utf8

init_connect='SETNAMES utf8'

# Disablingsymbolic-links is recommended to prevent assorted security risks

symbolic-links=0

 

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

[client]

default-character-set=utf8

 

在mysqld和client下面都添加default-character-set=utf8  没有client的添加client。

创建数据库时设置默认字符编码,不用重启数据库

 

GBK:create database test2 DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

 

UTF8:CREATE DATABASE `test2` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci


15、修改数据库字符集后,已经有的图像还是乱码,

[root@localhost ~]# cat /etc/sysconfig/i18n

LANG="zh_CN.GBK"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

SYSFONT="latarcyrheb-sun16"

如果不是以上信息,则可能是系统不支持中文字符集,我的解决办法是:

yum groupinstall chinese-support

vim /etc/sysconfig/i18n

LANG="zh_CN.GBK"

SUPPORTED="zh_CN.UTF-8:zh_CN:zh"

SYSFONT="latarcyrheb-sun16"

然后reboot,很暴力,但是解决了乱码问题。。。。。