最近剛換工作,公司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 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 </var/www/html/cacti/cacti.sql
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信息並生成圖像
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,很暴力,但是解決了亂碼問題。。。。。