Chinaunix首页 | 论坛 | 博客
  • 博客访问: 873694
  • 博文数量: 72
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1693
  • 用 户 组: 普通用户
  • 注册时间: 2014-08-04 15:53
个人简介

主要从事Linux,云原生架构改造,服务网格,ELK,python,golang等相关技术。

文章分类

全部博文(72)

文章存档

2015年(52)

2014年(20)

分类: 架构设计与优化

2015-03-23 13:39:10

 通过百度对Cacti,rrdtool等工具的了解:
        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是指Round Robin Database 工具(环状数据库)。Round robin是一种处理定量数据、以及当前元素指针的技术。想象一个周边标有点的圆环--这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头--这就是指针。就像我们在一个圆环上一样,没有起点和终点,你可以一直走下去。过来一段时间,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。我们使用RRDtool来处理RRD数据库。使用它向RRD数据库存储提取数据。
RRD适合存储时间序列的数据。就是说你必须能够在时间的几个点上度量某些值,并提供这些信息给RRDtool。如果你能够做到这一点,RRDtool就能够存储它们。这些数值必须是数字,但是不一定要是整数。
下面的许多例子是关于SNMP的,SNMP是简单网络管理协议的缩写。简单是指协议简单--并不表示管理或监视网络简单。读完本篇文档后,你应当能够对人们谈论的SNMP有更多的理解。只要知道SNMP可以用来查询设备中保持的计数器的值就可以了。我们要存放到RRD数据库中的正是这些计数器中的数值。
RRDtool源自MRTG(多路由器流量绘图器)。MRTG是有一个大学连接到互联网链路的使用率的小脚本开始的。MRTG后来被当作绘制其他数据源的工具使用,包括温度、速度、电压、输出量等等。
很可能你会从使用RRDtool来存储和处理通过SNMP收集到的数据。这些数据很可能是某个网络或计算机接收或发送的字节数(比特数)。它也可以用来显示潮水的波浪、阳光射线、电力消耗、展会的参观人员、机场附近的噪音等级、你喜欢的度假区的温度、电冰箱的温度、以及任何你可以想象的东西。
你最需要一个度量数据,以及能够提供这些数据给RRDtool的感应器。RRDtool会让你创建数据库、存储数据、提取数据、创建用于在Web浏览器中显示的PNG格式的图像。这些PNG图像来于你收集的数据,它可以是网络平均使用率、峰值等。
下面是cacti监控的一个关系拓扑图:

接下来我们开始搭建cacti监控环境:
首先安装snmp服务:
[root@vm ~]# yum install net-snmp.x86_64 net-snmp-utils.x86_64 -y
[root@vm ~]# /etc/init.d/snmpd start
对snmp进行配置:/etc/snmp/snmpd.conf
配置看这个网页:

Configure SNMP

(1) Edit the file /etc/snmp/snmpd.conf using a text editor such as vi, enter:
# vi /etc/snmp/snmpd.conf

Change/Modify line(s) as follows:

Find the following Line:

com2sec notConfigUser  default       public
Replace with (make sure you replace 192.168.0.0/24 with your network/subnet) the following lines:
com2sec local     localhost           public
com2sec mynetwork 192.168.0.0/24      public            #这里改成你的ip所对应的网段

Scroll down a bit and change :

Find Lines:

group   notConfigGroup v1           notConfigUser
group   notConfigGroup v2c           notConfigUser

Replace with:

group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
group MyROGroup v1         mynetwork
group MyROGroup v2c        mynetwork
group MyROGroup usm        mynetwork

Again scroll down a bit and locate the following line:

Find line:

view    systemview     included      system

Replace with:

view all    included  .1                               80

Again scroll down a bit and change the following line:

Find line:

access  notConfigGroup ""      any       noauth    exact  systemview none none

Replace with:

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none

Scroll down a bit and change the following lines:

Find lines:

syslocation Unknown (edit /etc/snmp/snmpd.conf)                
syscontact Root  (configure /etc/snmp/snmp.local.conf)
Replace with (make sure you supply appropriate values):
syslocation Linux (RH3_UP2), Home Linux Router.        
 syscontact YourNameHere             注意这里我们在设置的时候一定要改成你的用户名
按照上面的配置完成后我们重新启动服务:
[root@vm ~]# /etc/init.d/snmpd restart
[root@vm ~]# snmpwalk -v 1 -c public localhost IP-MIB::ipAdEntIfIndex
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.1.103 = INTEGER: 2
看到我自己的IP信息证明我们配置正确.

安装配置apache,mysql,php:
[root@vm ~]# yum install httpd php mysql-server php-mysql php-snmp php-xml -y
[root@vm ~]# rpm -ivh php-snmp-5.3.3-22.el6.x86_64.rpm    #这个安装包我们需要从网上下载
[root@vm ~]# /etc/init.d/mysqld start
[root@vm ~]# mysql_secure_installation            #初始化数据库,并给root用户设置密码
[root@vm ~]# mysql -uroot -p
Enter password:     输入密码登录数据库验证

安装rrdtool工具:
[root@vm ~]# yum install libxml* perl-ExtUtils-Embed -y        #这两个包是后面编译安装所需要的
[root@vm ~]# tar zxf rrdtool-1.4.4.tar.gz
[root@vm ~]# cd rrdtool-1.4.4
[root@vm rrdtool-1.4.4]# ./configure
[root@vm rrdtool-1.4.4]# make && make install
[root@vm rrdtool-1.4.4]# ln -s /opt/rrdtool-1.4.4/bin/rrdtool /usr/local/bin/

安装并配置cacti
[root@vm ~]# tar zxf cacti-0.8.8b.tar.gz -C /var/www/html/cacti
[root@vm ~]# cd /var/www/html/cacti/
[root@vm cacti]# useradd cacti
[root@vm cacti]# mysqladmin -pwestos create cacti
[root@vm cacti]# mysql -pwestos cacti [root@vm cacti]# mysql -pwestos
mysql> grant all on cacti.* to cacti@localhost identified by 'westos';
mysql> flush privileges;
[root@vm cacti]# cd include/
[root@vm include]# vim config.php         
  1. /* make sure these values refect your actual database/host/user/password */
  2. $database_type = "mysql";
  3. $database_default = "cacti";
  4. $database_hostname = "localhost";
  5. $database_username = "cacti";     #修改用户名
  6. $database_password = "westos";    #修改密码
  7. $database_port = "3306";
  8. $database_ssl = false;

  9. $url_path = "/cacti/";
  10. $cacti_session_name = "Cacti";
[root@vm include]# vim /etc/php.ini
date.timezone = Asia/Shanghai        #修改时区,因为要做crontab
[root@vm include]#su - cacti
[root@vm ~]$ crontab -e
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1        #我们定义每5分钟采集一次数据
[root@vm include]# /etc/init.d/httpd start
在浏览器上输入:安装cacti,第一次登录用户名和密码都是admin,后面可以自己修改。
当我们点击graphs的时候出现一些字符乱码,是因为缺少,解决办法如下:
[root@vm ~]# yum install -y cjkuni-uming-fonts        #安装完成后刷新页面显示正常

安装cacti-spine加速器,提高扫面速率:
[root@vm cacti]# yum install dos2unix autoconf automake libtool -y
[root@vm ~]# tar zxf cacti-spine-0.8.8b.tar.gz
[root@vm ~]# cd cacti-spine-0.8.8b
[root@vm cacti-spine-0.8.8b]# ./configure
[root@vm cacti-spine-0.8.8b]# make && make install
[root@vm cacti-spine-0.8.8b]# cd /usr/local/spine/etc
[root@vm etc]# cp spine.conf.dist  spine.conf
[root@vm etc]# vim spine.conf        #修改下面内容
    DB_Host         localhost
    DB_Database     cacti
    DB_User         cacti
    DB_Pass         westos
    DB_Port         3306
    DB_PreG         1
[root@vm etc]# cp spine.conf /etc/
[cacti@vm ~]$ /usr/local/spine/bin/spine
SPINE: Using spine config file [/etc/spine.conf]
SPINE: Version 0.8.8b starting
SPINE: Time: 0.0651 s, Threads: 5, Hosts: 2

cacti 0.8.8版本以后可以不用装plugin,直接进行一下模块的添加:
[root@vm ~]# tar zxf settings-v0.71-1.tgz -C /var/www/html/cacti/plugins
[root@vm ~]# tar zxf monitor-v1.3-1.tgz -C /var/www/html/cacti/plugins
[root@vm ~]# tar zxf thold-v0.5.0.tgz -C /var/www/html/cacti/plugins
然后登录到web界面去设置cacti,进入cacti之后,首先设置安装好的spine
Console->Setting->Paths

save之后点击Poller->点击下图中的cmd.php

选择spine最后save
Console->Plugin Management 安装插件,下面我们展示几张监控的图片:


下面我们做一下如何添加其他主机的状态监控:
我们另外一台主机的IP:192.168.1.104    (selinux and iptables is disabled)
[root@vm1 ~]#  yum install net-snmp.x86_64 net-snmp-utils.x86_64 -y
[root@vm ~]# scp /etc/snmp/snmpd.conf 192.168.1.104:/etc/snmp/        #从103主机上复制snmpd.conf这个配置文件到104主机,然后开启104主机的snmp服务
[root@vm1 ~]# /etc/init.d/snmpd start
[root@vm ~]# snmpwalk -v 1 -c public 192.168.1.104 IP-MIB::ipAdEntIfIndex        #在103上对104进行远程监控
IP-MIB::ipAdEntIfIndex.127.0.0.1 = INTEGER: 1
IP-MIB::ipAdEntIfIndex.192.168.1.104 = INTEGER: 2
然后我们在web端进行设置:
点击下图的console->create devices

点击Add:

填写下面信息:


点击save,出现下面信息:
创建graph

选择下面两个选项:

添加要监控的项:

出现下面信息一下信息表示成功:

创建->Add填写好后,然后继续点击下面的Add->Save

选择要监控的主机,然后create:

到这里我们的监控主机添加成功,下面我们点击monitor就可以看到,点击192.168.1.104我们可以看到他的监控信息


我们还可以通过setting设置邮箱报警,等其他设置.
阅读(9569) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

czh65372017-03-28 10:58:09

你好 php-snmp-5.3.3-22.el6.x86_64.rpm这个包从哪个网站下载的?我搜尽了都没有找到