这段时间,大家跟着我一块已经看了很多lnmp——即Linux-nginx-mysql-php,这个架构真的很了不起,它可以实现很多功能,譬如通过整合nginx做负载均衡、虚拟主机....,接下来继续给大家介绍lnmp架构。本博文是通过整合lnmp+cacti实现网络监控功能。
大家都知道,cacti本身是用来做监控的,通过snmp采集数据,并将采集到的数据通过rrdtool绘成图形,而用户主机之类的信息都记录在rra文件中,rra文件大小都是固定的,比如当客户端想看到自己磁盘的使用情况,它会向cacti发送请求,cacti根据请求的内容命令rrdtool绘图,最后回送给用户。官方文档: http://docs.cacti.net/wiki:documentation ,可以根据自己所用软件的版本,选择合适的Document以供参考,方便大家打架。
官方文档很壮观啊,全英文,对于英语不好的童鞋们就该晕了,那么,为了大家能够快速而准确的搭建平台,本博主将自己的学习记录粘贴到下面,供大家参考学习。想看的更全面,大家课选择下载下面的附件。
###############工具介绍#######################
snmp:数据采集工具
rrdtool:绘画图表,储存更新数据
cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool 储存和更新数据
##############cacti简介########################
Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。 软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。
cacti是用php语言实现的一个 软件 ,它的主要功能是用snmp服务获取数据,然后用 rrdtool 储存和更新数据,当用户需要查看数据的时候用 rrdtool 生成图表呈现给用户。因此,snmp和 rrdtool 是cacti的关键。Snmp关系着数据的收集,rrdtool关系着 数据存储 和图表的生成。
Mysql配合PHP程序存储一些 变量 数据并对变量数据进行调用,如: 主机名 、主机ip、snmp团体名、 端口号 、模板信息等变量。
snmp抓到数据不是存储在mysql中,而是存在 rrdtool 生成的rrd文件中(在cacti根目录的rra文件夹下)。 rrdtool 对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。关于RRDTool的知识请参阅RRDTool教学。
########################实现过程############################
需要安装的包有:rrdtool,php,php-mysql,php-xml,php-snmp,net-snmp*
cacti-0.0.8a版本以后都不需要装插件,所以0.0.8a之前的cacti需要安装插件cacti-plugin
cacti-spine-0.8.8b.tar.gz cacti-0.8.8b.tar.gz
[root@server34 ~]# yum install php mysql-server php-gd -y
[root@server34 ~]# tar zxf cacti-0.8.8b.tar.gz -C /var/www/html/
[root@server34 html]# mv cacti-0.8.8b/ cacti
[root@server34 html]# yum install rrdtool -y
[root@server34 html]# yum install php-mysql php-xml -y
安装php-snmp之前先查看系统php的版本
[root@server34 html]# rpm -q php
php-5.3.3-3.el6_2.8.x86_64
[root@server34 ~]# yum localinstall php-snmp-5.3.3-3.el6_2.8.x86_64.rpm -y
修改时区,因为要做crontab,
[root@server34 ~]# vim /etc/php.ini
date.timezone = Asia/Shanghai
[root@server34 ~]# /etc/init.d/httpd start
Starting httpd: [ OK ]
用于检测所需要的包是否均安装成功
[root@server34 html]# vim index.php
依次检查mysql,session,sockets,xml,pcre是否安装成功
http://192.168.0.34
数据库首次启动,是初始化,目地创建表结构
[root@server34 ~]# /etc/init.d/mysqld start
mysql加密
[root@server34 ~]# mysql_secure_installation
[root@server34 ~]# yum list net-snmp*
Loaded plugins: product-id, subscription-manager
Updating certificate-based repositories.
Unable to read consumer identity
Installed Packages
net-snmp.x86_64 1:5.5-41.el6 @rhel-source
net-snmp-libs.x86_64 1:5.5-41.el6 @rhel-source
Available Packages
net-snmp-devel.i686 1:5.5-41.el6 rhel-source
net-snmp-devel.x86_64 1:5.5-41.el6 rhel-source
net-snmp-libs.i686 1:5.5-41.el6 rhel-source
net-snmp-perl.x86_64 1:5.5-41.el6 rhel-source
net-snmp-python.x86_64 1:5.5-41.el6 rhel-source
net-snmp-utils.x86_64 1:5.5-41.el6 rhel-source
安装snmp简单网络管理工具
[root@server34 ~]# yum install net-snmp-utils.x86_64 -y
[root@server34 ~]# vim /etc/snmp/snmpd.conf
允许snmp采集本机和192.168.0.0/24网段的数据,密钥是public(但这是安全漏洞)
com2sec local localhost public
com2sec mynetwork 192.168.0.0/24 public
group MyRWGroup v1 local //定义组
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
view systemview included .1.3.6.1.2.1
view systemview included .1.3.6.1.2.1.25.1.1
view all included .1 80
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none
syslocation RHEL6.3
syscontact Root
disk / 10000 //打开
# % snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9
[root@server34 ~]# /etc/init.d/snmpd start
Starting snmpd: [ OK ]
[root@server34 ~]# snmpwalk -v 1 localhost -c public .1.3.6.1.4.1.2021.9
UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1
UCD-SNMP-MIB::dskPath.1 = STRING: /
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/VolGroup-lv_root
UCD-SNMP-MIB::dskMinimum.1 = INTEGER: 10000
UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 19134332
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 16993208
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 1169144
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 6
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 2
UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 19134332
UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 16993208
UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 1169144
UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorMsg.1 = STRING:
检测:
[root@server34 ~]# snmpwalk -v 1 localhost -c public IP-MIB::ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.0.34 = INTEGER: 2 //出现主机ip时则成功
[root@server34 ~]# snmpwalk -v 1 192.168.0.34 -c public IP-MIB::ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.0.34 = INTEGER: 2
将web运行用户与apache的用户分开,安全运行cacti web页面
[root@server34 cacti]# pwd
/var/www/html/cacti
[root@server34 cacti]#useradd -u 1000 cacti
创建cacti库
[root@server34 cacti]# mysql -pwestos
mysql> create database cacti;
将表cacti.sql的内容导入到cacti库中
[root@server34 cacti]# mysql -pwestos cacti < cacti.sql
关联cacti`数据库与php
[root@server34 include]# vim config.php
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti"; //登录数据库的用户,登录数据库的用户与运行cacti的用户不是同一个
$database_password = "westos"; //登录数据库的密码
$database_port = "3306";
$database_ssl = false;
$url_path = "/cacti/";
$cacti_session_name = "Cacti";
给cacti用户授予运行cacti数据库所有操作权限。
mysql> grant all on cacti.* to cacti@localhost identified by 'westos';
运行以下命令,若能进入则授权成功
[root@server34 include]# mysql -ucacti -pwestos cacti
重启apache
[root@server34 include]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
采集数据,每隔5分钟采集一次数据
[cacti@server34 include]$ crontab -e
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1
测试:
http://192.168.0.34/cacti
若无红色出现表示安装成功
注:第一次登录用户密码都是admin
点击graphs,等待五分钟,会绘出图形或者查看rra目录,rra目录下有文件则说明已经采集到数据了。
[cacti@server34 rra]$ ls
localhost_load_1min_5.rrd localhost_mem_swap_4.rrd localhost_users_6.rrd
localhost_mem_buffers_3.rrd localhost_proc_7.rrd
[cacti@server34 rra]$ pwd
/var/www/html/cacti/rra
安装spine:
spine: a backend data gatherer for Cacti (spine是cacti的后端数据采集者)
用spine加快snmp采集数据的速度
poller轮询器
cacti-spine的版本必须与之前下载的cacti包的版本一致
[root@server34 ~]# tar zxf cacti-spine-0.8.8b.tar.gz
安装编译spine的依赖性
[root@server34 ~]# yum install automake autoconf dos2unix gcc make glibc-headers kernel-headers libtool -y
[root@server34 cacti-spine-0.8.8b]# sh bootstrap
编译
[root@server34 cacti-spine-0.8.8b]# ./configure
错误1:
checking whether we are using Linux Capabilities... no
configure: error: Cannot find MySQL headers. Use --with-mysql= to specify non-default path.
解决;
[root@server34 cacti-spine-0.8.8b]# yum install mysql-devel -y
再次编译
错误2:
configure: error: Cannot find SNMP headers. Use --with-snmp= to specify non-default path.
解决:
[root@server34 cacti-spine-0.8.8b]# yum install net-snmp-devel -y
最后编译成功
[root@server34 cacti-spine-0.8.8b]# ./configure
[root@server34 cacti-spine-0.8.8b]# make && make install
[root@server34 etc]# cp -p spine.conf.dist /etc/spine.conf
[root@server34 etc]# pwd
/usr/local/spine/etc
更改spine的配置文件
[root@server34 etc]# vim spine.conf
DB_Host localhost
DB_Database cacti
DB_User cacti
DB_Pass westos
DB_Port 3306
DB_PreG 1
运行spine,出现以下信息则正确
[root@server34 etc]# /usr/local/spine/bin/spine
SPINE: Using spine config file [spine.conf]
SPINE: Version 0.8.8b starting
SPINE: Time: 0.2860 s, Threads: 5, Hosts: 2
浏览器中设置:
http://192.168.0.34/cacti
1.setting->path->添加启动路径‘/usr/local/spine/bin/spine’->save
2.seting->poller->选择spine->save(轮询方式为spine)
附件:http://down.运维网.com/data/2364358
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com