cacti远程监控原理及简单配置

原理:

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.
1.cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据,当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成

2.Mysql配合PHP程序存储一些变量数据并对变量数据进行调用,如:主机名、主机ip、snmp团体名、端口号、模板信息等变量

3.snmp抓到数据不是存储在mysql中,而是存在rrdtool生成的rrd文件中(在cacti根目录的rra文件夹下)。rrdtool对数据的更新和存储就是对rrd文件的处理,rrd文件是大小固定的档案文件(Round Robin Archive),它能够存储的数据笔数在创建时就已经定义。

原理图:
这里写图片描述

采集: crontab --> php --> snmp --> host(cacti主机)
存储: rrdtool --> rra --> *.rrd(uodate)
展示: web --> php --> mysql --> rrdtool --> rrd --> gd
               |
           php-mysql  

准备及环境:

操作系统: redhat EL6.5
主机: server2 172.25.12.2 cacti mysql php httpd rrdtool net-snmp
server3 172.25.12.3 snmp
火墙及selinux: 关闭

配置:

server2配置:

#安装主要软件:
yum install rrdtool php httpd mysql-server php-mysql  php-snmp net-snmp-utils  net-snmp -y

#准备rpm包并安装
rpm -ivh php-snmp-5.3.3-26.el6.x86_64.rpm

#准备cacti安装包
tar zxf cacti-0.8.8h.tar.gz -C /var/www/html/
cd /var/www/html/
ln -s cacti-0.8.8h/ cacti
#切换到cacti目录下,查看有没有 cacti.sql 数据库模板文件
cd cacti

#数据库设置
#启动数据库
/etc/init.d/mysqld start

#数据库初始化并添加数据库密码
mysql_secure_installation  

#建立数据库cacti  -u用户 -p密码 
mysqladmin -uroot -predhat create cacti

#将模板导入数据库
mysql -uroot -predhat cacti < cacti.sql

#登陆数据库并更改数据库权限,设定cacti数据库密码
mysql -uroot -predhat
mysql> grant all on cacti.* to cacti@localhost identified by 'redhat';

配置cacti:
cd /var/www/html/cacti/include
vim config.php

$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cacti";    #建立的数据库名字
$database_password = "redhat";   #cacti数据库密码
$database_port = "3306";
$database_ssl = false;

/*
   Edit this to point to the default URL of your Cacti install
   ex: if your cacti install as at http://serverip/cacti/ this
   would be set to /cacti/
*/
$url_path = "/cacti/";   #网页访问路径

/* Default session name - Session name must contain alpha characters */
$cacti_session_name = "Cacti"; 
useradd -u 1000 cacti       ##创建用户,u为1000,则该目录下的文件对该用户都有权限,重点是rra目录存放收集的数据

#crontab 脚本设置:
crontab -e -u cacti
*/5 * * * * php /var/www/html/cacti/poller.php > /dev/null 2>&1 ##每5分钟收集一次

#查看crontab脚本:
crontab -l -u cacti

/etc/init.d/httpd start

server3(被监控主机):

yum install net-snmp -y
cd /etc/snmp/
vim snmpd.conf

# First, map the community name "public" into a "security name"
首选是定义一个共同体名 (community) ,这里是 public ,及可以访问这个 public 的用户名( sec name ),这里是 mynetwork 。 Public 相当于用户 mynetwork 的密码:)
#       sec.name  source          community
com2sec local     localhost           public
com2sec mynetwork 172.25.12.0/24      public

# Second, map the security name into a group name:
#定义一个组名( groupName )这里是 MyRWGroup  ,及组的安全级别,把  这个mynetwork用户加到这个组中。  
#      groupName      securityModel securityName
group MyRWGroup v1         local
group MyRWGroup v2c        local
group MyRWGroup usm        local
group MyROGroup v1         mynetwork
group MyROGroup v2c        mynetwork
group MyROGroup usm        mynetwork

# Third, create a view for us to let the group have rights to:
#定义一个可操作的范围 (view) 名,   这里是 all ,范围是  .1
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

# Finally, grant the group read-only access to the systemview view.
#定义 MyRWGroup 这个组在 all 这个 view 范围内可做的操作,这时定义了 MyRWGroup 组的成员可对 .1 这个范围做只读操作
access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none

syslocation RHEL6.5
syscontact Root <root@server3.example.com>

dontLogTCPWrappersConnects yes

#检测根目录
disk / 10000

更多snmpd.conf的详尽配置请看下面传送门:
snmpd.conf配置说明

启动snmp服务并检测
/etc/init.d/snmpd start
yum install net-snmp-utils -y

[root@server3 ~]# 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: 18102140
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 15825092
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 1357496
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 8
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 3
UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 18102140
UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 15825092
UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 1357496
UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorMsg.1 = STRING: 

server2测试:

[root@server2 snmp]#  snmpwalk -v 1 172.25.12.3 -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: 18102140
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 15825092
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 1357496
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 8
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 3
UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 18102140
UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 15825092
UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 1357496
UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0
UCD-SNMP-MIB::dskErrorFlag.1 = INTEGER: noError(0)
UCD-SNMP-MIB::dskErrorMsg.1 = STRING:

如果两边测试结果一样,则说明snmp配置成功,server2可以通过snmp获取server3的主机信息

测试:

浏览器输入:http://172.25.12.2/cacti
初次登陆帐号密码都为 Admin
登陆后会强制你修改密码
一直点击下一步(或者install),就进入cacti页面

添加监控主机:

在cacti页面
点击左边的devivce —–> 右上角有个add
这里写图片描述

Description 写主机名
Hostname 写主机ip
Host Template 选择 ucd/net SNMP Host (因为我们是靠net-snmp去监控的)

下拉网页 点击create

我创建的server3:
这里写图片描述

创建server3的图形:
点击server3:
右上角create graphs for this host
进去之后,选择你要监控的项,打上对勾,由下角点击create,就创建成功

查看图形:

上面点击graphs
选择主机,以及查看项,查看时间,点击 Go
这里写图片描述

增加扩展包

扩展包: monitor
在cacti主机上:
server2:
tar zxf monitor-v1.3-1.tgz -C /var/www/html/cacti/plugins/
在浏览器上:
点击左边框中的Plugin Management—–>点击安装图标—–>点击运行图标

增加多线程:

server2:

tar zxf cacti-spine-0.8.8h.tar.gz 
yum install mysql-devel net-snmp-devel gcc -y
cd cacti-spine-0.8.8h
./configure
make
make install
cd /usr/local/spine/etc/
cp spine.conf.dist /etc/spine.conf
cd /usr/local/spine/bin/

vim /etc/spine.conf

 33 DB_Host         localhost
 34 DB_Database     cacti
 35 DB_User         cacti
 36 DB_Pass         redhat
 37 DB_Port         3306

浏览器上操作:
console —–> settings—->paths—–>将/usr/local/spine/bin/spine复制到该条目下save—>poller

测试:

[root@server2 snmp]# su - cacti
[cacti@server2 ~]$ /usr/local/spine/bin/spine
SPINE: Using spine config file [/etc/spine.conf]
SPINE: Version 0.8.8h starting
SPINE: Time: 0.1084 s, Threads: 5, Hosts: 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值