服务器维护,服务器代维,安全设置,漏洞扫描,入侵检测服务

运维之家

 找回密码
 注册
搜索
查看: 8443|回复: 0

流量监视:Cacti+rrdtool安装配置

[复制链接]
dirtysea 发表于 2010-4-18 19:57:17 | 显示全部楼层 |阅读模式
第一部分:Cacti监控机的配置

一、PHP环境为Nginx+PHP(fastcgi)
略!       
二、安装一个新的yum源,该源上有rrdtool等工具,如果安装出错,则修改/etc/yum.repos.d/CentOS-Media.repo ,将里面的enabled=1改成enabled=0
mkdir -p /root/downloadss/cactimc
cd /root/downloadss/cactimc
wget http://packages.sw.be/rpmforge-r ... 1.el4.rf.x86_64.rpm
rpm -ivh rpmforge-release-0.3.6-1.el4.rf.x86_64.rpm
yum -y install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils perl-rrdtool rrdtool beecrypt-devel elfutils-devel elfutils-libelf-devel lm_sensors perl-Time-HiRes

三、下载cacti和插件等

Cacti下载地址:http://www.cacti.net/downloads/
插件下载地址:http://cactiusers.org/index.php
cd /root/downloadss/cactimc
wget http://www.cacti.net/downloads/cacti-0.8.7d.zip
wget http://mirror.cactiusers.org/dow ... -0.8.7d-PA-v2.4.zip
wget http://cactiusers.org/downloads/monitor.tar.gz
wget http://cactiusers.org/downloads/thold.tar.gz
wget http://cactiusers.org/downloads/settings.tar.gz
wget http://www.eric-a-hall.com/softw ... p-memory.0.6.tar.gz



四、解压缩cacti
cd /data/web/awstats/www/
unzip /root/downloadss/cactimc/cacti-0.8.7d.zip
mv cacti-0.8.7d cactimc
根据你web服务器的运行用户,对cactimc目录进行属主的修改
chown www.www cactimc


五、建立数据库
mysql -uroot -p`cat /data/save/mysql_root`
mysql> create database cactimc;//创建数据库
mysql> grant all on cactimc.* to 'cactimc'@'localhost' identified by "cacti123";//创建数据库用户并赋予权限
mysql> use cactimc;
mysql> source /data/web/awstats/www/cactimc/cacti.sql;//导入cacti的数据
mysql> flush privileges;

六、修改Cacti的数据库登录信息并进行安装

修改数据库登录信息
cd /data/web/awstats/www/cactimc/include
根据第五步,将config.php相应内容修改成这样
vi config.php
$database_type = "mysql";
$database_default = "cactimc";
$database_hostname = "localhost";
$database_username = "cactimc";
$database_password = "cacti123";
$database_port = "3306";
打开浏览器进行安装,来到这里,成功一半了,用浏览器打开http://xxx/cactimc进行安装
第一次登陆用的用户名和密码都是admin,登录成功后,系统会强制要求修改密码

在系统上添加计划任务
crontab -e
*/5 * * * * php /data/web/awstats/www/cactimc/poller.php >/dev/null 2>&1

七、安装Cacti的插件

安装Plugin Architecture,使Cacti支持插件
mkdir /root/downloadss/cactimc/pa
cd /root/downloadss/cactimc/pa
unzip ../cacti-plugin-0.8.7d-PA-v2.4.zip
导入pa的数据库
mysql -uroot -p`cat /data/save/mysql_root` cactimc < pa.sql
cp cacti-plugin-0.8.7d-PA-v2.4.diff /data/web/awstats/www/cactimc/
cd /data/web/awstats/www/cactimc/
为Cacti打pa的补丁,打补丁有两种方法,一种是用如下的patch,还有一种是用它修改好的文件去覆盖
第一种
patch -p1 -N < cacti-plugin-0.8.7d-PA-v2.4.diff

第二种
cp -Rv files-0.8.7d/* /data/web/awstats/www/cactimc

将monitor、thold、settings解压缩到cacti的插件目录
cd /data/web/awstats/www/cactimc/plugins
tar xzf /root/downloadss/cactimc/monitor-0.8.2.tar.gz
tar xzf /root/downloadss/cactimc/thold-0.4.1.tar.gz
tar xzf /root/downloadss/cactimc/settings-0.5.tar.gz

cd /data/web/awstats/www/cactimc/include
vi global.php
找到$plugins = array();
在其下添加以下内容
$plugins[] = 'settings';
$plugins[] = 'thold';
$plugins[] = 'monitor';


我们访问Cacti的地址形如http://xxx/cactimc
所以需要修改global.php的一处内容
将$config['url_path'] = ‘/’;
修改为
$config['url_path'] = ‘/cactimc/’;
否则打开Cacti,版面排版有问题,而且链接无法打开。




八、使用插件

登录到Cacti,允许admin用户查看Plugin Management和monitor
打开Console->User Management->admin
将Plugin Management和monitor都勾选上,保存退出

打开Console->Plugin Management,看到Thresholds,点击Install,然后点击Enable

这时可以看到页面左上角多了thold和monitor

刷新cacti系统的web管理界面,可以看到多出两个标签页(thold、monitor)。

thold是用来设置阀值进行报警的,主要通过邮件来发送警报,我们还可以配置用飞信来发送短信。

使用thold插件
1>打开Console->Settings->Mail/DNS”,可以调整SMTP Options”和DNS Options”等配置,用于确保预警邮件能够发出。
2>打开Console->Settings->Alerting/Thold”,可以调整Thold的各项配置。例如:Dead Host Notifications Email”处可填写设备当机时发送警告信息到哪个邮箱;勾选Send alerts as text”项,可以设置只发送文本格式的邮件。
3>打开Templates->Threshold Templates”,可以添加、取出需要关联到预警系统的模板,例如:可以添加和Interface-Traffic”模板的关联,选择 traffic_in”、

traffic_out”数据项,分别设置警告阈值High Threshold”(如200000000比特/秒);可以添加和Unix-Disk Space”模板的关联……。
4>打开Create->New Graphs”,选择需要提供预警的设备,单击右侧上方的Auto-create thresholds”创建预警项目。
5>打开Management->Thresholds”,可以管理已经创建的预警项目。

monitor是用来监视机器的,看他们是否宕机,如果有机器宕机,它会发出声音进行报告。


九、导入和**模板
Console->Import Templates->选择要导入模板即可,现在模板文件夹里有几个会用到的模板

**模板方面,主要讲两个:
1、网卡进出口流量叠加
Console->Graph Templates->选中Interface - Traffic (bytes/sec, Total Bandwidth),然后在Choose an action: 中选择Duplicate,在接下来的页面中填入Interface - Traffic Stack(bytes/sec, Total Bandwidth),这样,我们的模板就复制出一份新的模板了。

将图形进行叠加,Graph Item Type里的选项指的是图形的类型,AREA就是区块,Stack的意思是叠加,line是线
点击Interface - Traffic Stack(bytes/sec, Total Bandwidth),点击        Item # 6,也就是(traffic_out): Outbound,进去后,Graph Item Type哪里选择Stack,选择save。

接下来分别把进、出的当前值、平均值、最大值进行累加

添加一个整体值
a、在Graph Template Items点击Add,
Data Source 选择None
Color  这里随便,可以选择最后一个黑色的
Graph Item Type        选择LINE1
Consolidation Function        选择AVERAGE
CDEF Function        选择Total All Data Source
Text Format     填入Total:
其余默认
点击Save

b、添加一个当前值
在Graph Template Items点击Add
Data Source 选择None
Color  None
Graph Item Type        GPRINT
Consolidation Function        选择LAST
CDEF Function        选择Total All Data Source
Text Format     填入Current:
其余默认
点击Save

c、添加一个平均值
在Graph Template Items点击Add
Data Source 选择None
Color  None
Graph Item Type        GPRINT
Consolidation Function        选择AVERAGE
CDEF Function        选择Total All Data Source
Text Format     填入Average:
其余默认
点击Save

d、添加一个最大值
在Graph Template Items点击Add
Data Source 选择None
Color  None
Graph Item Type        GPRINT
Consolidation Function        选择MAX
CDEF Function        选择Total All Data Source
Text Format     填入Maximum:
其余默认
点击Save

至此,我们的网卡进出口流量叠加的模板就做好了。如果不做,直接导入cacti_graph_template_interface_-_traffic_stackbytessec_total_bandwidth.xml也可以


2、统计各游戏服的在线人数

首先,获取**数据模板需要用到的OID
在游戏服务器上,如4399的S1(IP:121.10.140.50)
vi /etc/snmp/snmpd.conf
在末尾添加以下内容
exec .1.3.6.1.4.1.2021.53 online /usr/bin/php /data/web/minggame/config/show_online.php

保存退出,service snmpd restart

其中.1.3.6.1.4.1.2021.53是可以随便指定的,只要别的信息没有用到这个OID就可以了

在Cacti服务器上

snmpwalk -v1 121.10.140.50 -c CactiMC .1.3.6.1.4.1.2021.53
由这条命令的输出可以看到我们在线人数对应着这行
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "268"

由以上输出的53.101.1,我们修改OID值
命令就变成snmpwalk -v1 localhost -c public .1.3.6.1.4.1.2021.53.101.1
看到的就只有
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "268"

而没有其他东西

所以,我们在建数据模板时,OID填这个
.1.3.6.1.4.1.2021.53.101.1


然后,添加在线人数的数据模板
Console->Data Templates,点击Add

Data Templates
Name    填入MCSD - Online

Data Source
Name        填入|host_description| - MCSD - Online
Data Input Method        选择Get SNMP Data

Data Source Item
Internal Data Source Name        填入online

Custom Data
OID                填入.1.3.6.1.4.1.2021.53.101.1

OID这个值是我们通过第一步获取到的,点解save,这样数据模板就建好了



最后,添加在线人数的图形模板
Console->Graph Templates,选择Add

Template
Name        填入MCSD - Online
Graph Template        填入|host_description| - MCSD - Online
Vertical Label 填入Count:

其余默认,点击save



a、添加一个整体值
在Graph Template Items点击Add,
Data Source 选择MCSD - Online - (online)
Color  这里随便,可以选择一个紫红色
Graph Item Type        选择AREA
Consolidation Function        选择AVERAGE
Text Format     填入Accepts:
其余默认
点击Save


b、添加一个当前值
在Graph Template Items点击Add
Data Source 选择MCSD - Online - (online)
Color  None
Graph Item Type        GPRINT
Consolidation Function        选择LAST
Text Format     填入Current:
其余默认
点击Save

c、添加一个平均值
在Graph Template Items点击Add
Data Source 选择MCSD - Online - (online)
Color  None
Graph Item Type        GPRINT
Consolidation Function        选择AVERAGE
Text Format     填入Average:
其余默认
点击Save

d、添加一个最大值
在Graph Template Items点击Add
Data Source 选择MCSD - Online - (online)
Color  None
Graph Item Type        GPRINT
Consolidation Function        选择MAX
Text Format     填入Maximum:
其余默认
点击Save


在Graph Item Inputs点击Add
Name        填入Data Source [MCSDOnline]
Field Type        选择Data Source
Associated Graph Items里选择四个项,点击save
再次点击save
至此,我们的图形模板也做好了
接下来就可以用此模板来**图形


十、使用飞信进行报警
首先,安装飞信
mkdir /root/downloadsss/fetion
cd /root/downloadsss/fetion
wget http://www.it-adv.net/fetion/dow ... 406003-linux.tar.gz
wget http://www.it-adv.net/fetion/downng/library_linux.tar.gz
wget http://xok.la/file/2009/04/fetion_lib_rhel4_xok.zip

mkdir -p /usr/local/tools/fetion/
cd /usr/local/tools/fetion/
tar xzf /root/downloadsss/fetion/fetion20090406003-linux.tar.gz
mv install/ fetion_src
mkdir /usr/local/tools/fetion/lib


由于是在CentOS4.6上安装fetion,所以需要拷贝CentOS5上的一些库文件,幸好网上有人找出来打包好了,下载来用就可以了
cd /usr/local/tools/fetion/
unzip /root/downloadsss/fetion/fetion_lib_rhel4_xok.zip
tar -xzvf /root/downloadsss/fetion/library_linux.tar.gz -C /usr/local/tools/fetion/lib
cd /usr/local/tools/fetion/lib
ln -s libcrypto.so.0.9.8 libcrypto.so.4
ln -s libssl.so.0.9.8 libssl.so.4
这个fetion_lib_rhel4_xok.zip包里的库文件也不是很全,启动飞信时,提示少一个libgcc_s.so.1,我们去我们自己的CentOS 5.2 x86_64上scp一个过来
scp 218.15.143.56:/lib/libgcc_s.so.1 /usr/local/tools/fetion/lib

编写飞信的启动脚本
vi /usr/local/tools/fetion/fetion
添加以下内容
#!/bin/bash
prefix=/usr/local/tools/fetion/
LD_LIBRARY_PATH="$prefix/lib${LD_LIBRARY_PATH+:${LD_LIBRARY_PATH}}"
export LD_LIBRARY_PATH
$prefix/lib/ld-linux.so.2 /usr/local/tools/fetion/fetion_src/fetion "$@"

保存退出
chmod 755 /usr/local/tools/fetion/fetion

至此,飞信就安装好了。



然后,在“八、使用插件”中设置好用邮件报警的信息

最后,编辑cacti/plugins/thold/thold-functions.php
在thold–functions.php查找function thold_mail($to, $from, $subject, $message, $filename, $headers = ”)行在此行下面加入:
        file_put_contents(’/data/web/awstats/www/cactimc/plugins/thold/alert.log’, $subject);  # 用file_put_contents函数将$subject写入alert.log文件
        exec(’echo $subject  >> /data/web/awstats/www/cactimc/plugins/thold/alert.log’);  # 换行
        exec(’date +%D/%T  >> /data/web/awstats/www/cactimc/plugins/thold/alert.log’); #加入时间标签
        exec(’sh /data/web/awstats/www/cactimc/plugins/thold/sendsms.sh’);  #执行飞信机器人脚步


编写脚本sendsms.sh自动调用飞信机器人发送报警

#!/bin/sh
#send sms by fetion
#Write by Ethan.Pan
if [ ! -e "/data/web/awstats/www/cactimc/plugins/thold/alert.log" ]; then
echo "Usage:alert.log does not exist"
elif [ -n "`cat /data/web/awstats/www/cactimc/plugins/thold/alert.log`" ]; then
echo `cat /data/web/awstats/www/cactimc/plugins/thold/alert.log`
/usr/local/tools/fetion/fetion --mobile=15918721110 --pwd=123456 --to=15918721110,13570333304,13826415900 --msg-type=1 --file-utf8=/data/web/awstats/www/cactimc/plugins/thold/alert.log
echo "`cat /data/web/awstats/www/cactimc/plugins/thold/alert.log`" >> /data/web/awstats/www/cactimc/plugins/thold/sms.txt
echo "exit" >> /data/web/awstats/www/cactimc/plugins/thold/sms.txt
echo "Usage:all sms sends"
fi


十一、用spine代替cmd.php去获取信息
在监控大量主机时,spine的效率比cmd.php高很多
cd /root/downloadss/cactimc
wget http://www.cacti.net/downloads/spine/cacti-spine-0.8.7d.tar.gz
tar xzf cacti-spine-0.8.7d.tar.gz
cd cacti-spine-0.8.7d
aclocal
libtoolize --force
执行以上命令,有如下输出是正常的

Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL'
Putting files in AC_CONFIG_AUX_DIR, `config'.

autoconf
autoheader
automake
./configure
make
make install

安装了以下两个文件
/usr/local/spine/bin/spine
/usr/local/spine/etc/spine.conf

我们将spine的配置文件复制到/etc下
cp spine.conf /etc/spine.conf
vi /etc/spine.conf
按照安装Cacti时的数据库信息,修改spine.conf的配置

注意了,如果此时在/root/downloadss/cactimc/cacti-spine-0.8.7e执行/usr/local/spine/bin/spine
它读取的是/root/downloadss/cactimc/cacti-spine-0.8.7e/spine.conf
所以会提示数据库连接出错
我们rm -f /root/downloadss/cactimc/cacti-spine-0.8.7e/spine.conf
再次执行/usr/local/spine/bin/spine,它读取/etc/spine.conf,这样就正常了

下面设置Cacti适用spine
登录到Cacti
Console -> Settings -> Paths -> Spine Poller File Path填入/usr/local/spine/bin/spine -> save
Console -> Settings -> Poller -> Poller Type选择spine -> save


另外,在添加Nginx的连接数图时,需要用到一个形如http://141.112.ming.cn/status/的地址
需要在Cacti机器上编辑/etc/hosts
加入
121.10.141.112  141.112.ming.cn


第二部分:在各游戏服务器上安装net-snmp
sed -i "s#enabled=1#enabled=0#g" /etc/yum.repos.d/CentOS-Media.repo
yum -y install net-snmp

vi /etc/snmp/snmpd.conf

com2sec notConfigUser  default       public
修改为
com2sec notConfigUser  113.107.160.72       CactiMC


view    systemview    included   .1.3.6.1.2.1.1
修改为
view    systemview    included   .1


#access  notConfigGroup ""      any       noauth    exact  roview rwview none
修改为
access  notConfigGroup ""      any       noauth    exact  all none none


#view all    included  .1                               80
修改为
view all    included  .1                               80

保存退出,service snmpd restart

(一)、问题:
1、snmpwalk -v1 121.10.140.50 -c public .1.3.6.1.4.1.2021.53
有时执行此命令,会提示
UCD-SNMP-MIB::ucdavis.53.101.1 = STRING: "/bin/sh: /root/show_online.sh: Permission denied"
请检查游戏服务器上的selinux设置
vi /etc/selinux/config
看SELINUX的值是否为disabled,如果不是则修改为
SELINUX=disabled
由于这个修改要等服务器重启才生效,在不重启服务器的情况下,关闭selinux的方法是执行以下命令:
setenforce 0


2、在Cacti所在的机器上,可访问snmp的地址哪里填localhost,不要跟被监控机一样填Cacti的公网IP
#com2sec notConfigUser  default       public
com2sec notConfigUser  localhost        public


3、关于cacti监控不到网卡流量

请教过Mr.Ivory,他说是因为目标机器不让别的机器查看网卡信息

需要修改/etc/snmp/snmpd.conf

view        systemview                included   .1.3.6.1.2.1.1
修改为
view        systemview                included   .1

重启snmp服务,应该就可以了

4、图形出现断开的现象
造成这个主要是因为主机负载高,或者网络延迟大,已经进行一次轮询,

解决
更改Console -> Cacti Settings 设置,把Poller 的Maximum Concurrent Poller Processes和Maximum Threads per Process都设为5
(二)、常用命令:
1、snmpwalk -v1 121.10.140.50 -c public
解析:snmpwalk是用来获取snmp信息的,-v1指定使用snmp第一版本,121.10.140.50是要查看的主机,-c public 是用于通信的密码,这样是获取该主机上所有的信息

2、snmpwalk -v1 121.10.140.50 -c public .1.3.6.1.4.1.2021.53
解析:.1.3.6.1.4.1.2021.53为OID,我们可以获取指定OID的信息

3、rrdtool fetch 121_10_140_50_mcsd_1_a_traffic_in_104.rrd AVERAGE
解析:用rrdtool查看rrd文件里是否有获取到数据,如果没有则显示为nan


4、快速设置各服务器的snmp
首先,在一台机上设置好snmpd.conf
登录到需要设置的服务器,把以下命令执行一次

scp 113.107.160.72:/root/snmpd.conf /etc/snmp/snmpd.conf
chkconfig --level 3 snmpd on
chkconfig --list snmpd
service snmpd restart
service snmpd status


(三)、延伸阅读
Cacti高级应用--打造自己的Cacti模板
http://blog.sina.com.cn/s/blog_4e424e2101000bb7.html


cacti监控硬盘出错的问题
http://blog.wangxianjin.cn/?p=128

Centos 5.2安装Cacti并集成Nagios安装文档
http://10956.blog.51cto.com/956/159249

Cacti thold插件实现短信报警
http://blog.vgekl.com/index.php/tag/fetion/

成功将飞信2009(fetion20090318001-linux)移植到rhel4(linux4)
http://xok.la/2009/03/fetion_2009_to_rhel4_linux4.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|Archiver|运维之家

GMT+8, 2024-4-20 09:01 , Processed in 0.141880 second(s), 14 queries .

Powered by Dirtysea

© 2008-2020 Dirtysea.com.

快速回复 返回顶部 返回列表