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

来源:互联网 发布:ubuntu 修改系统语言 编辑:程序博客网 时间:2024/05/01 09:44

原理:

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 -predhatmysql> 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          communitycom2sec local     localhost           publiccom2sec mynetwork 172.25.12.0/24      public# Second, map the security name into a group name:#定义一个组名( groupName )这里是 MyRWGroup  ,及组的安全级别,把  这个mynetwork用户加到这个组中。  #      groupName      securityModel securityNamegroup MyRWGroup v1         localgroup MyRWGroup v2c        localgroup MyRWGroup usm        localgroup MyROGroup v1         mynetworkgroup MyROGroup v2c        mynetworkgroup MyROGroup usm        mynetwork# Third, create a view for us to let the group have rights to:#定义一个可操作的范围 (view) 名,   这里是 all ,范围是  .1view    systemview    included   .1.3.6.1.2.1view    systemview    included   .1.3.6.1.2.1.25.1.1view    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   noneaccess MyRWGroup ""      any       noauth    exact  all    all    nonesyslocation RHEL6.5syscontact 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: 1UCD-SNMP-MIB::dskPath.1 = STRING: /UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/VolGroup-lv_rootUCD-SNMP-MIB::dskMinimum.1 = INTEGER: 10000UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1UCD-SNMP-MIB::dskTotal.1 = INTEGER: 18102140UCD-SNMP-MIB::dskAvail.1 = INTEGER: 15825092UCD-SNMP-MIB::dskUsed.1 = INTEGER: 1357496UCD-SNMP-MIB::dskPercent.1 = INTEGER: 8UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 3UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 18102140UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 15825092UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 1357496UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0UCD-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.9UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1UCD-SNMP-MIB::dskPath.1 = STRING: /UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/mapper/VolGroup-lv_rootUCD-SNMP-MIB::dskMinimum.1 = INTEGER: 10000UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1UCD-SNMP-MIB::dskTotal.1 = INTEGER: 18102140UCD-SNMP-MIB::dskAvail.1 = INTEGER: 15825092UCD-SNMP-MIB::dskUsed.1 = INTEGER: 1357496UCD-SNMP-MIB::dskPercent.1 = INTEGER: 8UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 3UCD-SNMP-MIB::dskTotalLow.1 = Gauge32: 18102140UCD-SNMP-MIB::dskTotalHigh.1 = Gauge32: 0UCD-SNMP-MIB::dskAvailLow.1 = Gauge32: 15825092UCD-SNMP-MIB::dskAvailHigh.1 = Gauge32: 0UCD-SNMP-MIB::dskUsedLow.1 = Gauge32: 1357496UCD-SNMP-MIB::dskUsedHigh.1 = Gauge32: 0UCD-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 -ycd cacti-spine-0.8.8h./configuremakemake installcd /usr/local/spine/etc/cp spine.conf.dist /etc/spine.confcd /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/spineSPINE: Using spine config file [/etc/spine.conf]SPINE: Version 0.8.8h startingSPINE: Time: 0.1084 s, Threads: 5, Hosts: 3
原创粉丝点击