设为首页 收藏本站
查看: 1298|回复: 0

用lnmp与cacti实现网络监控

[复制链接]

尚未签到

发表于 2015-12-23 15:57:23 | 显示全部楼层 |阅读模式
    这段时间,大家跟着我一块已经看了很多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


[iyunv@server34 ~]# yum install php mysql-server php-gd -y





[iyunv@server34 ~]# tar zxf cacti-0.8.8b.tar.gz -C /var/www/html/





[iyunv@server34 html]# mv cacti-0.8.8b/ cacti


[iyunv@server34 html]# yum install rrdtool -y


[iyunv@server34 html]# yum install php-mysql php-xml -y





安装php-snmp之前先查看系统php的版本


[iyunv@server34 html]# rpm -q php


php-5.3.3-3.el6_2.8.x86_64











[iyunv@server34 ~]# yum localinstall php-snmp-5.3.3-3.el6_2.8.x86_64.rpm -y





修改时区,因为要做crontab,


[iyunv@server34 ~]# vim /etc/php.ini


date.timezone = Asia/Shanghai





[iyunv@server34 ~]# /etc/init.d/httpd start


Starting httpd:                                            [  OK  ]





用于检测所需要的包是否均安装成功


[iyunv@server34 html]# vim index.php








依次检查mysql,session,sockets,xml,pcre是否安装成功


http://192.168.0.34                                                                              





数据库首次启动,是初始化,目地创建表结构


[iyunv@server34 ~]# /etc/init.d/mysqld start





mysql加密        


[iyunv@server34 ~]# mysql_secure_installation








[iyunv@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简单网络管理工具


[iyunv@server34 ~]# yum install net-snmp-utils.x86_64 -y


[iyunv@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





[iyunv@server34 ~]# /etc/init.d/snmpd start


Starting snmpd:                                            [  OK  ]





[iyunv@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:





检测:


[iyunv@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时则成功


[iyunv@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页面


[iyunv@server34 cacti]# pwd


/var/www/html/cacti


[iyunv@server34 cacti]#useradd -u 1000 cacti


创建cacti库


[iyunv@server34 cacti]# mysql -pwestos


mysql> create database cacti;








将表cacti.sql的内容导入到cacti库中


[iyunv@server34 cacti]# mysql -pwestos cacti < cacti.sql





关联cacti`数据库与php


[iyunv@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';





运行以下命令,若能进入则授权成功


[iyunv@server34 include]# mysql -ucacti -pwestos cacti





重启apache


[iyunv@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包的版本一致
[iyunv@server34 ~]# tar zxf cacti-spine-0.8.8b.tar.gz


安装编译spine的依赖性
[iyunv@server34 ~]# yum install automake autoconf dos2unix gcc make glibc-headers kernel-headers  libtool -y
[iyunv@server34 cacti-spine-0.8.8b]# sh bootstrap


编译
[iyunv@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.
解决;
[iyunv@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.
解决:
[iyunv@server34 cacti-spine-0.8.8b]# yum install net-snmp-devel -y


最后编译成功
[iyunv@server34 cacti-spine-0.8.8b]# ./configure


[iyunv@server34 cacti-spine-0.8.8b]# make && make install



[iyunv@server34 etc]# cp -p spine.conf.dist /etc/spine.conf



[iyunv@server34 etc]# pwd


/usr/local/spine/etc


更改spine的配置文件
[iyunv@server34 etc]# vim spine.conf


DB_Host         localhost


DB_Database     cacti


DB_User         cacti


DB_Pass         westos


DB_Port         3306


DB_PreG         1


运行spine,出现以下信息则正确
[iyunv@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)
















运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-155383-1-1.html 上篇帖子: LAMP环境迁移至LNMP环境 下篇帖子: 测试环境LAMP用YUM快速部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

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