工作原理
Cacti 可以从逻辑上分为三个部分
第一部分: 被检测的对象, 也就是客户端
第二部分: 检测平台, 也就是服务器端
第三部分: 管理平台
Cacti 采用了两种结构实现功能, 一种是 C/S 结构主要是实现服务器到客户端监控另外一种就是 B/S 主要完成对 Cacti 平台的管理, 从下图我们可以看出, 管理端是在 web 上对 Cacti 进行管理
Cacti 的工作过程
首先通过 LAMP 平台部署 Cacti 监控工具, 之后通过客户端的 web 登录 Cacti 进行对其他客户端的设置, 可以从下图看到 Cacti 采集数据时必须要使用 SNMP 协议来连接客户端进而能够采集数据, 也就是说客户端必须支持 SNMP 协议, 监控之后通过 RRDtool 来生成图表
.
Cacti 的工作结构
C/S 模式, 采集监测数据
B/S 模式, 管理监测平台
.
测试 LAMP 平台
cacti 服务器监控系统与 windows 操作系统中的性能监视器属于同一类, 都是为了监控 cpu 占用, 内存使用, 运行进程数, 磁盘空间, 网卡流量等各种数据
但不同的是, cacti 不仅可以监控 linux, 也可以监控 windows 服务器, 路由器, 交换机等网络设备, 主要基于 snmp 协议来搜集数据
Cacti 本身是一个 web 界面的软件, 通过调用 net-snmp 工具来采集检测数据, 并结合 RRDtool(轮询数据库工具) 记录数据并绘制图片, 最终以 web 页面展示给管理员用户 cacti 需要运行在 lamp 平台上, 配置简单, 直观, 而且支持插件和数据模板, 可扩展其功能
.
配置 Cacti 服务器
. 安装各种支持软件
LAMP 平台 Net-SNMPRRDtool
部署并配置 cacti 套件
部署源码包建立数据库表调整
配置文件
完成初始化安装
根据网页安装向导进行
配置 Cacti 客户机
Linux 被控主机的设置
安装 net-snmplm_sensors 包
简单配置 snmpd, 并启动服务
使用 Cacti 的 Web 控制台
登录 Web 控制台
添加被控设备 / 主机, 设置监控项目
生成监测图像
定期采集监测数据
查看监测结果
.
环境如下;
cacti:192.168.1.1
mysql:192.168.1.2
客户端: 192.168.1.3
服务器的配置
配置 cacti 需要 LAMP 环境之前的文章有介绍, 本篇不做解释
开启 httpd 服务开启 mysql 服务
[root@centos1 /]# service httpd start
[root@centos1 /]# service mysqld start
.
需要开启例外
[root@centos1 /]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
[root@centos1 /]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
.
为 mysql 设置一个密码
[root@centos1 /]# mysqladmin -u root -p password pwd123
.
编写一个 php 测试页
[root@centos1 /]# vim /var/www/html/text.php
<?php
phpinfo();
?>
.
[root@centos1 /]# service httpd restart
.
在浏览器访问测试
.
安装 net-snmp-utils 软件包
Cacti 平台通过 snmp 协议采集检测数据, 这些工具程序由 net-snmp-utils 软件包提供, 安装方法如下
[root@centos1 /]# yum -y install net-snmp net-snmp-utils
.
[root@centos1 /]# service snmpd start
[root@centos1 /]# chkconfig snmpd on
.
安装 rrdtool 软件包
Rrdtool 软件包主要用于数据记录和图表绘制
首先安装依赖包:
[root@centos1 /]# umount /dev/cdrom /media/
[root@centos1 /]# mount /dev/cdrom /media/
[root@centos1 /]# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel
libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel
perl-CPAN perl per-devel
[root@centos1 /]# cd /media/
.
装 rddtool 源码包:
[root@centos1 media]# ls
[root@centos1 media]# tar zxf rrdtool-1.4.8.tar.gz -C /root/
[root@centos1 /]# cd /root/rrdtool-1.4.8/
[root@centos1 rrdtool-1.4.8]# ./configure --prefix=/usr/local/ && make && make install
.
部署 cacti, 设置数据库连接
部署 cacti 源码包 (将下载的 cacti 源码包释放到 web 服务器的网页目录)
[root@centos1 /]# cd /media/
[root@centos1 media]# tar zxf cacti-0.8.8b.tar.gz -C /usr/src/
[root@centos1 media]# cd /usr/src/
[root@centos1 src]# mv cacti-0.8.8b/ /var/www/html/cacti
.
添加一个用来读写检测数据的用户账户, 并调整目录的属主, 以便正常读取及写入数据
[root@centos1 src]# useradd cacti
[root@centos1 src]# chown -R cacti:cacti /var/www/html/cacti
.
建立数据库, 表结构 (创建用于 cacti 监测平台的数据库, 并授权一个数据库用户 cacti, 然后使用 cacti 源码目录下的 cacti.sql 脚本, 导入预设的各种数据表)
[root@centos1 /]# mysql -u root -p
mysql> CREATE DATABASE cacti DEFAULT CHARACTER SET utf8;
mysql> FRANT all ON cacti.* TO cacti@localhost IDENTIFDED BY cacti;
[root@centos1 /]# cd /var/www/html/cacti/
[root@centos1 /]# mysql -u cacti -p cacti < cacti.sql
[root@centos1 /]# mysql -u cacti -p
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cacti |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use cacti;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_cacti |
+---------------------------+
| cdef |
| cdef_items |
| colors |
| data_input |
| data_input_data |
| data_input_fields |
| data_local |
| data_template |
| data_template_data |
| data_template_data_rra |
| data_template_rrd |
| graph_local |
| graph_template_input |
........
+---------------------------+
52 rows in set (0.00 sec)
.
调整 cacti 配置文件
[root@centos1 / ]#vim include / config.php $database_type = "mysql"; // 指定连接的类型
$database_default = "cacti"; // 连接的库
$database_hostname = "localhost"; // 登陆源
$database_username = "cacti"; // 用户名
$database_password = "cacti"; // 用户密码
$database_port = "3306"; / 连接的端口
$database_ssl = false; // 不启用 ssl
/*
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 的根目录这个目录是 cacti 的文件目录下, 所以后面还需要修改 httpd 支配文件
[root@centos1 /]# vim /etc/httpd/conf/httpd.conf
[root@centos1 cacti]# vim /etc/httpd/conf/httpd.conf
DocumentRoot "/var/www/html/cacti" //292 行
<Directory "/var/www/html/cacti"> //317 行
Options Indexes none //331 行
AllowOverride None //338 行
Order allow,deny //343 行
Allow from all //344 行
</Directory> //346 行
DirectoryIndex index.php index.html index.html.var //402 行
AddDefaultCharset UTF-8 //759 行
[root@centos1 /]# service httpd restart
[root@centos1 /]# netstat -anpt | grep 80
tcp 0 0 0.0.0.0:58052
tcp 0 0 :::80
.
服务器配置完成
.
(客户端)
初始化 cacti 系统
在浏览器中输入 http://192.168.1.1, 然后根据提示安装
.
111
.
.
.
.
.
.
到此为止服务器配置完成了, 下面开始配置一台 linux 客户端 (mysql 主 192.168.1.2), 然后使用 cacti 监控客户端
配置客户端 (被控端 snmpd)
无论是路由器交换机还是 linux 或 windows 服务器, 只要正确支持 SNMP 协议, 并允许 Client 服务器采集数据, 就能够对其进行监测下面仅介绍在 linux 服务器中启用 SNMP 支持并设置共同体名的简单方法
ps: 共同体名, 值的是一种验证机制, 所有的 client 都必须使用同一个共同体名, 就像我们之前学习的 hsrp 的组一样, 只有组号相同才能是一个组的, 这里也是如此, 只有共同体名相同的时候, Cacti 才能通过这个共同体名对 client 进行监控
需要安装 net-snmplm_sensors 软件包, 然后通过修改其配置文件 / etc/snmp/snmpd.conf, 并启动 snmpd 服务, 并建立规则, 默认监听 UDP 的 161 号端口
.
(mysql 主)
.
[root@centos1 /]# yum -y install net-snmp lm_sensors
[root@centos1 /]# vim /etc/yum.repos.d/index.repo
com2sec notConfigUser 192.168.1.1 public //41 行
access notConfigGroup "" any noauth exact all none none //62 行
view all included .1 80 //85 行
.
第 41 行 192.168.1.1 指的是 Cacti 的服务器 IP(默认是 default), 表示允许其查询本机数据, public 指的就是共同体名, 用来识别及验证
第 62 行 all 表示开放所有的 SNMP 查询权限 (默认是 SystemView)
第 85 行 去掉注释之后, 以便支持各种查询
启动服务
[root@centos1 /]# service snmpd start
[root@centos1 /]# netstat -anpt | grep "snmpd"
[root@centos1 /]# netstat -anpu | grep "snmpd"
.
开例外
[root@centos1 /]# iptables -I INPUT -p udp --dport 161 -j ACCEPT
.
使用 cacti 的 web 控制台 (下面以 5 个部分说明)
登录 Web 控制台
添加被控设备 / 主机, 设置监控项目
生成监测图像
定期采集监测数据
查看监测结果
.
登录 web 控制台
在浏览器中输入 http://192.168.1.1, 输入用户名和密码登录, 默认都是 admin
.
.
添加被控设备 / 主机, 设置监控项目
单击导航栏中的 management(管理) 下的 devices(设备), 可以管理被控设备或主机点击 devices---Add
.
.
然后单击右下角的 create 创建, 将自动连接目标执行 snmp 查询
设置要监测的项目
成功连接被控端后会看到 save successful 提示, 如下图:
.
.
.
生成检测图像
创建图像
单击导航栏中 create 下的 new graphs(图表), 选择被控端, 选中最需要的图像条目, 最后单击下方的 create 按钮完成创建
.
.
添加图像至监测树
单击导航栏中的 management 下的 graph trees, 在单击 default tree 就可以对默认的图像监测树进行管理单击右侧的 add, 可以向监测树种添加树项目, 完成之后点击 create, 并点击 save 保存
.
.
定期采集监测数据
Cacti 系统通过 poller.php 页面采集监测数据, 可以结合计划任务定期采集 (默认的刷新间隔是 5 分钟)
执行完成之后, 会出现很多的提示信息, 一般情况下是指时区不正确, 建议将时区改为 Asia/Chongqing
由于是 php 报的错误, 所以通过 php.ini 主配置文件解决这个问题
[root@centos1 cacti]# vim /etc/php.ini
date.timezone = Asia/Chongqing //946 行去掉注释
[root@centos1 /]# crontab -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php
.
[root@centos1 /]# crontab -u cacti -e
*/5 * * * * /usr/bin/php /var/www/html/cacti/poller.php > /dev/null
.
刷新
[root@centos1 /]# /usr/bin/php /var/www/html/cacti/poller.php
查看监测结果
单击 cacti 管理控制台左上方的 graphs 标签, 然后展开左侧的 default tree 树, 选择被控主机后即可看到各监测图像
安装 percona-mysql-monitor 插件
Cacti 工具默认的模板只能监控机器的 cpu, 内存和磁盘等信息, 如果想要监控 mysql, 就需要安装插件, 操作如下
解压缩软件到目标位置
[root@centos1 /]# umount /dev/cdrom /media/
[root@centos1 /]# mount /dev/cdrom /media/
[root@centos1 /]# cd /media/
[root@centos1 /]# ls
[root@centos1 /]# tar zxf percona-monitoring-plugins-1.1.4.tar.gz -C /usr/src/
[root@centos1 /]# cd /usr/src/percona-monitoring-plugins-1.1.4/
[root@centos1 /]# ls
[root@centos1 /]# cd cacti/scripts/
[root@centos1 /]# cp ss_get_mysql_stats.php /var/www/html/cacti/script
.
在 mysql 数据库授权用户
[root@centos1 /]# mysql -u root -p
mysql> grant process , super on *.* to cactiuser@192.168.1.1 identified by cactiuser;
.
[root@centos1 /]# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT
.
为设备添加项目
在 Cacti 管理界面中进行添加, 点击 ConsoseImport Templates 选择文件, 将宿主机下的压缩目录解压到一个文件夹内, 选择解压后的 cacti\templat 目录下的 cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml, 最后单击 import 导入
.
.
.
.
.
.
.
.
.
.
.
.
.
.
[root@centos1 /]# /usr/bin/php /var/www/html/cacti/poller.php
[root@centos1 /]# /usr/bin/php /var/www/html/cacti/poller.php --force
服务器监控系统 cacti
来源: http://www.bubuko.com/infodetail-2486770.html