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

[经验分享] 用lnmp与cacti实现网络监控

[复制链接]

尚未签到

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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-661514-1-1.html 上篇帖子: cacti Error XML Hash version does not exist 下篇帖子: 自定义cacti插件监控jvm
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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