Cacti监控服务
Cacti工作原理
Cacti简介:php语言实现的一个软件,一套基于LAMP展现的网络流量监测及分析工具
1)数据采集:基于SNMP技术或自定义脚本从目标设备/主机获取监控指标信息
2)数据存储:调用模板将数据存到数据库,使用rrdtoo存储和更新数据,通过RRDTool绘制结果图形
3)数据展现:通过Web方式将监控结果呈现出来
MySQL配合PHP程序存储一些变量数据并对变量数据进行调用,如主机名、主机IP、端口号等变量
Cacti监控结构:1)C/S模式:采集监测数据2)B/S模式:管理监测平台
Nagios与Cacti的区别:Cacti在监控方面绘图比较不错,在流量与图形展现方面存在优势,Nagios侧重于监控应用状态、故障分析,报警机制(邮箱、短信等)相对来说比Cacti灵活
MIB简介
搭建Cacti监控服务器
示例:部署一台Cacti监控主机,并安装相关监控组件,为进一步执行具体的监控任务做准备:
安装net-snmp、net-snmp-utils
安装LAMP及相关依赖软件包
部署Cacti监控平台
初始化监控页面
方案:使用1台RHEL7虚拟机,安装部署LAMP环境、Cacti及相关的snmp组件包,配置数据库并对Cacti监控平台进行初始化操作。
1 部署Cacti服务运行环境----(LAMP平台、net-snmp、net-snmp-utils、rrdtool)
Cacti监控需要通过Web页面展示出来,并且还需要使用MySQL来存储一些变量数据,因此需要先为Cacti准备基础LAMP环境。因为Cacti监控其他主机数据时使用的是snmp协议,所以还需要安装net-snmp和net-snmp-utils软件包。
1)准备运行环境LAMP,装httpd、php、mariadb-server、mariadb、php-mysql包
[root@svr5 ~]# yum -y install httpd php mariadb-server mariadb php-mysql php-ldap php-xml
2)起httpd和mariadb服务,并设为开机自启动
[root@svr5 ~]# systemctl start httpd mariadb
[root@svr5 ~]# systemctl enable httpd mariadb
[root@svr5 ~]# netstat -antpul | grep :3306
3) 设置数据库管理员本机登录的密码
# mysqladmin -u root password '123456'
4) 创建存储配置信息的库和连接数据库服务器的用户
Cacti需要使用MySQL来存储部分动态数据,这里还需要给Cacti创建一个数据库,并使用Cacti提前准备好的数据文件,对数据库进行初始化。
[root@svr5 ~]# mysql -uroot -p123456
MariaDB [(none)]> create database cactidb DEFAULT CHARACTER SET utf8; //创建数据库;
MariaDB [(none)]> grant all on cactidb.* to yaya@"localhost" identified by "123456";
5) 在本机测试授权用户
[root@svr5 ~]# mysql -hlocalhost -uyaya -p123456
MariaDB [(none)]> show grants;
6) 编写php文件,测试本机能否连接数据库服务器
vim /var/www/html/linkdb.php
if($db){echo "link ok";}else{ echo "link error";}; ?>
[root@svr5 ~]# firefox http://192.168.4.11/linkdb.php
2 搭建Cacti服务器(部署源码包、建立数据库表、调整配置文件)
1)安装依赖包
[root@svr5 ~]# yum -y install rrdtool net-snmp-* lm_sensors //net-snmp net-snmp-utils
[root@svr5 ~]# tar zxf rrdtool-1.4.5.tar.gz
//Cacti监控的数据存储和绘图功能主要依赖于RRDTool,如果没有该软件则Cacti无法存储监控数据并绘制出监控图像。
[root@svr5 ~]# cd rrdtool-1.4.5
[root@svr5 rrdtool-1.4.5]# ./configure --prefix=/usr/local
[root@svr5 rrdtool-1.4.5]# make && make install
2)安装cacti
Cacti是由PHP开发的Web页面套件,PHP代码通过使用snmp协议来获得监控数据,并代用RRDTool存储数据和绘制监控图像,所以在安装完成基础LAMP环境后,首先需要做的就是将Cacti软件包解压放置在Web服务器的网页根路径下。
a解包
[root@svr5 ~]# tar zxf cacti-0.8.7g.tar.gz -C /var/www/html/
[root@svr5 ~]# cd /var/www/html/
[root@svr5 ~]# mv cacti-0.8.7g/ cacti
[root@svr5 ~]# chmod -R 777 cacti/
或 [root@svr5 cacti]# useradd cactiuser
[root@svr5 cacti]# chown -R root.root ./
[root@svr5 cacti]# chown -R cactiuser.cactiuser rra/ log/
b修改配置文件指定使用的库
vim /var/www/html/cacti/include/config.php //设存储配置信息使用库
$database_type = "mysql";//类型 $database_default = "cactidb";//库
$database_hostname = "localhost";//主机名 $database_ssl = false;//是否启用ssl安全连接
$database_username = "yaya";//连接的用户名,自定义
$database_password = "123456";//连接的密码 $database_port = "3306";//使用的端口
[root@localhost cacti]# vim /var/www/html/cacti/lib/functions.php
setlocale(LC_CTYPE,"zh_CN.UTF-8"); //定义语言
... ...
c使用备份文件cacti.sql创建存储配置信息的表
[root@svr5 ~]# mysql -uyaya -p123456 cactidb < /var/www/html/cacti/cacti.sql //初始化数据库
[root@svr5 ~]# mysql -uyaya -p123456
MariaDB [(none)]> use cactidb;
MariaDB [(none)]> show tables;
3 做初始化配置
1)登录管理页面,使用cacti
http://192.168.4.11/cacti
初始化用户名和密码 admin/admin,首次登录强制重设密码,帐号名依然为admin
2)调整http配置文件,重新定义根路径
httpd配置文件使用DocumentRoot "/var/www/html"语句来定义网站页面根路径,默认路径为/var/www/html/,这里需要修改为/var/www/html/cacti。
[root@svr5 ~]# vim /etc/httpd/conf/httpd.conf
.. ..
DocumentRoot "/var/www/html/cacti"
.. ..
3)访问Cacti监控页面,并进行初始化设置
第一次登录Cacti需要进行一些简单的初始化操作,主要是设置几个主要的依赖程序的存储位置。
查看可使用的模版
查看已监控的主机
安装高速数据采集器
[root@cacti cacti-spine-0.8.8h]# yum -y install mariadb-devel //安装依赖包
[root@cacti cacti-spine-0.8.8h]# tar -xf cacti-spine-0.8.8h.tar.gz //解包
[root@cacti cacti-spine-0.8.8h]# cd cacti-spine-0.8.8h/ //进源码目录
[root@cacti cacti-spine-0.8.8h]# ./configure --help --with-mysql //配置
[root@cacti cacti-spine-0.8.8h]# make //编译
[root@cacti cacti-spine-0.8.8h]# make install //安装
[root@cacti cacti-spine-0.8.8h]# ls /usr/local/spine //查看安装目录
修改配置文件指定存储数据使用的库
[root@cacti cacti-spine-0.8.8h]# cp /usr/local/spine/etc/spine.conf.dist /usr/local/spine/etc/spine.conf
[root@cacti cacti-spine-0.8.8h]# vim /usr/local/spine/etc/spine.conf
DB_Host localhost
DB_Database cactidb
DB_User yaya
DB_Pass 123456
DB_Port 3306
5)装mariadb-devel包,安装高速采集器,并拷贝命令和配置文件
yum -y install mariadb-devel--->tar -zxvf cacti-spine-0.8.8h.tar.gz---cd cacti-spine..
./configure --with-mysql----->make------>make install----->ls /usr/local/spine
cp /usr/local/spine/bin/spine /usr/bin/----->cp /usr/local/spine/etc/spine.conf.dist /etc/spine.conf
6)修改配置文件/etc/spine.conf,设置存储数据使用的库
33 DB_Host localhost //本机
34 DB_Database cactidb //使用的数据库名,自定义
35 DB_User xrx //连接数据库的用户名,自定义
36 DB_Pass 123456 //连接数据库的密码,自定义
37 DB_Port 3306 //端口
登录管理页面配置cacti监控时,使用调整数据采集器
Console-->settings-->paths-->spine poller file path -->/usr/local/spine/bin/spine-->
指定spine程序的倒置
配置cacti使用spine
Console-->settings-->poller-->poller type -->spine -->save
客户端配置(192.168.4.10)
systemctl stop firewall、setenforce 0
[root@slave10 ~]# yum -y install net-snmp-*
2)修改配置文件/etc/snmp/snmpd.conf,修改default、systemview以及取消顶格
[root@slave10 ~]# sed -i "41s/default/192.168.4.11/" /etc/snmp/snmpd.conf
[root@slave10 ~]# sed -i "62s/systemview/all/ " /etc/snmp/snmpd.conf
[root@slave10 ~]# sed -i "85s/^#// " /etc/snmp/snmpd.conf //监控服务器监控的方式.代表根
3)启动snmpd服务并设为开机自启,并查看snmpd端口状态()
[root@slave10 ~]# systemctl start snmpd
[root@slave10 ~]# systemctl enable snmpd
[root@slave10 ~]# netstat -pantul |grep snmpd //本机端口:199,被访问端口:161
配置服务器(192.168.4.11)
登录管理页面做如下设置:(配置存储在cactidb库里)
1)添加监控主机(主机名、监控IP地址、)并选择监控模板和设置监控项目
2)创建图像(查看、创建、删除),选择图像模板
3)创建图像树,并把监控主机创建的图片放到图像树里(查看、创建、删除)
4)执行监控脚本——编写抓取数据的计划任务,计时任务须跟管理页面计时任务频率一样
# php /var/www/html/cacti/poller.php
抓取的信息往/var/www/html/cacti/rra里存储
[root@cacti ~]#vim /etc/php.ini //取消定格,设置时区
878 date.timezone =Asia/Shanghai
[root@cacti ~]# sed -n "878p" /etc/php.ini
[root@cacti ~]# crontab -e
*/5 * * * * php /var/www/html/cacti/poller.php
[root@cacti ~]# systemctl enable crond
5)查看监控信息
配置Cacti
1 监控远端主机
监控本机(192.168.4.11)——systemctl stop firewall、setenforce 0
a装net-snmp相关包,运行snmp服务
[root@cacti ~]# yum -y install net-snmp-*
b修改配置文件/etc/snmp/snmpd.conf——修改default、systemview以及取消顶格
[root@cacti ~]# sed -i "41s/default/192.168.4.11/" /etc/snmp/snmpd.conf
[root@cacti ~]# sed -i "62s/systemview/all/ " /etc/snmp/snmpd.conf
[root@cacti ~]# sed -i "85s/^#// " /etc/snmp/snmpd.conf
c启动snmpd服务并设为开机自启,并查看snmpd端口状态()
[root@slave10 ~]# systemctl start snmpd;systemctl enable snmpd
[root@slave10 ~]# netstat -antpul | grep snmpd
d登录管理页面做如下设置:(配置存储在cactidb库里)
(1)添加监控主机(主机名、监控IP地址、)并选择监控模板和设置监控项目
(2)创建图像(查看、创建、删除),选择图像模板
(3)创建图像树,并把监控主机创建的图片放到图像树里(查看、创建、删除)
(4)查看监控信息 //因为监控脚本已放入计划任务
扩展cacti的功能(PA补丁:Plugin Architecture插件结构)
常见的2款插件:1)Monitor:提供集中的状态监视,通过图表展现
2)Thold:针对监测项目设置阀值,超过时发送告警
第一步:安装插件
[root@cacti ~]# tar -zxvf monitor-v1.3-1.tgz; tar -zxvf settings-v0.71-1.tgz; tar -zxvf thold-v0.5.0.tgz
[root@cacti ~]# mv monitor settings thold /var/www/html/cacti/plugins
第二步:激活插件
登录管理页面,按顺序(monitor--->settings--->thold)进行激活,查看已安装的插件
第三步:配置插件,对指定的监控项做监控报警
示例:配置cacti监控报警,监控本机系统登录的用户数量大于1时显示警告状态,大于2时显示错误状态,达到警告状态或错误状态都会给本机的cacti用户的邮箱cactiuser@localhost发邮件。
[root@cacti ~]# yum -y install postfix
[root@cacti ~]# systemctl restart postfix
[root@cacti ~]# useradd cactiuser
[root@cacti ~]# grep cactiuser /etc/passwd
[root@cacti ~]# mail -s “999” cactiuser < /etc/hosts
[root@cacti ~]# mail -u cactiuser
Notification Lists--->Add--->书写列表名,描述,邮箱地址--->save
Thresholds--->Add--->添加需要监控的host,graph选择logged in users,data source为user
--->Threshold Type选择high/low values;Re-Alert Cycle
--->Warning High Threshold设置为1,Warning Breach Duration设置为5分钟;
--->High Threshold设置为2,Breach Duration设置为5分钟;
--->Warning Notification List、Alert Notification List都设置为sendmail
--->save
第四步:测试配置(查看是否收到报警邮件)
[root@cacti ~]# mail -u cactiuser
示例:构建Cacti监测系统,实现以下目标:
主机192.168.1.200上搭建Cacti系统、监测网关、网站、邮件三台Linux服务器
监控被监控端的CPU负载、网络流量、磁盘空间、发邮件给root@localhost
方案:准备4台Linux虚拟机,1台部署Cacti监控系统,3台作为服务器同时也是被监控的对象
步骤一:被监控主机设置
注意:由于所有被监控主机均允许cacti监控服务器从本机提取监控数据,因此所有被监控主机都需要做如下操作,下面以网关服务器为例。
1)安装net-snmp软件
Cacti监控其他主机是通过简单网络管理协议(SNMP)收集被监控端数据信息,因此被监控端服务器都需要安装net-snmp以及lm_sensors。lm_sensors软件可以帮助我们来监控硬件信息如CPU的工作电压等数据。
[root@router ~]# yum -y install net-snmp lm_sensors
2)修改snmp配置文件
SNMP配置文件主要包括四个部分内容需要修改,第一步映射通讯名称到安全用户名称,第二步将用户加入到组中,第三步为组赋予访问视图的权限,第四步定义all视图。主配置文件设置完成后重启服务即可通过客户端访问该服务器获得系统信息,SNMP使用的端口号为UDP 161端口以及TCP 199端口。
[root@router ~]# vim /etc/snmp/snmpd.conf
……
com2sec notConfigUser 192.168.1.200 public //社区名称映射为安全名称
group notConfigGroup v1 notConfigUser //将账户加入组
group notConfigGroup v2c notConfigUser
access notConfigGroup "" any noauth exact all none none //赋予notConfigGroup组对all视图的访问权限
view all included .1 80 //定义all视图及相关权限
……
[root@router ~]# service snmpd start;chkconfig snmpd on
3)查看SNMP服务运行状态,设置防火墙
默认SNMP监听udp的161端口和tcp的199端口,通过netstat命令可以查看该端口的监听状态,设置防火墙规则允许这两个端口的入站数据。
[root@router ~]# netstat -anpu | grep "snmpd"
udp 0 0 0.0.0.0:161 0.0.0.0:* 16452/snmpd
[root@router ~]# iptables -I INPUT -p udp --dport 161 -j ACCEPT
[root@router ~]# iptables -I INPUT -p tcp --dport 199 -j ACCEPT
[root@router ~]# service iptables save
步骤二:设置Cacti监控服务器
注意:本练习案例要求将3台被监控端主机均加入到Cacti系统,这里以Web服务器为例添加监控对象并生成监控图像。其它监控节点做相关操作即可。
1)添加监控主机
登录Web控制台(http://192.168.1.200),默认的管理账号、密码为 admin,首次登录时要求强制重设密码。添加被监控端主机时需要设置目标地址,并正确选择主机模板、设置社区名称。
登录Web控制台后,进入Devices菜单后点击Add添加被监控主机,如图-2所示。此时系统会要求填写相关表单信息,需要填写的项目参数描述见表-1,填写完所需项目表单后点击右下角的Create即可创建新的设备主机,同时在下方会出现图形模版以及数据查询模版,管理员可以根据实际需要继续添加需要监控的参数对象,确定后点击Save保存所有设置,效果如图-3所示。
2)创建监控图像
通过以上操作,设备主机以及需要监控的性能指标已经创建完成,下面需要通过New Graphs菜单为Web服务器创建图形。进入新建图形界面后在Host列表中选择上一步添加的设备主机,并在需要监控的性能模版后点选对勾,设置完成后选择Create为被监控设备添加图形。
3)创建监控图像树
Cacti监控系统最终通过树状列表来查看被监控主机性能图形,我们可以创建多棵图形树,在每棵图形树下可以插入多个设备主机的图形信息。Cacti初始状态有一个名为Default的图形树,本案例中我们将创建一棵新的图形树,并将被监控端主机的图形添加进来。通过点击Graph Trees菜单打开图形树的设置界面。选择Add可以添加新的图形树,将提示输入Name(图形树名称)后点击Create(创建),本案例设置名称为Web,此时在Graph Trees界面中会出现Default与Web两棵图形树。点击进入Web树中,选择Add按钮添加上一步操作中创建的图形。
4)监控服务器定期收集被监控端主机信息
Cacti监控服务器需要通过SNMP收集数据信息并最终生成图形窗口,在Cacti软件包中已经自带了这么一个用于收集数据的PHP脚本,默认Cacti系统需要每五分钟收集一次数据,管理员可以通过计划任务实现每五分钟执行该脚本,也可以手动执行该脚本立即同步数据。
5)查看监控页面效果
最后,通过Cacti平台的graphs选项卡进入图形窗口,该窗口将以树状显示,案例中我们创建了一棵名为Web的图形树,并在Web树下添加了3台被监控主机的图形,最终查看效果如图-7所示。
[root@cacti ~]# crontab -e
*/5 * * * * /usr/local/php5/bin/php /usr/local/apache2/htdocs/cacti/poller.php
步骤三:实现邮件报警机制
1)安装插件补丁
[root@cacti ~]# tar -xzf cacti-plugin-0.8.7g-PA-v2.9.tar.gz
[root@cacti ~]# mv cacti-plugin-arch /var/www/html/cacti/
[root@cacti ~]# cd /var/www/html/cacti
[root@cacti cacti]# patch \
> -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.7g-PA-v2.9.diff //打补丁
[root@cacti cacti-plugin-arch]# pwd
/var/www/html/cacti/cacti-plugin-arch
[root@cacti cacti-plugin-arch]# mysql –u cactiuser –ppwd123 cactidb 2)修改配置文件,正确设置数据库信息 [root@cacti cacti]# vim /var/www/html/cacti/include/global.php $database_type = "mysql" $database_default = "cactidb" $database_hostname = "localhost" $database_username = "cactiuser" $database_password = "pwd123" $database_port = "3306" [root@cacti cacti]# vim /var/www/html/cacti/include/config.php $url_path = "/cacti/" 3)修改权限 默认admin账户并没有开启插件功能,需要点击"User Management"菜单,在刷新出来的页面中找到"admin"账户。点击进入admin账户设置页面。在"Realm Permissions"选项卡下找到"Plugin Management"并点选对勾赋予账户插件管理权限。 4)安装邮件报警插件 插件即是PHP源代码文件,解压后复制到Cacti目录下即可。 [root@cacti ~]# tar -xzf thold-v0.4.9-3.tgz [root@cacti ~]# tar -xzf setting-v0.71-1.tgz [root@cacti ~]# tar –xzf monior-v1.3-1.tgz [root@cacti ~]# mv monitor settings thold /var/www/html/cacti/plugins 刷新Web控制台查看Plugin Management页面内容。下一步还需要点击插件名称左边的图标(向下的箭头)进行安装。 5)启用Thold插件 首先需要定义报警邮件列表,点击"Notification Lists",在刷新出的页面中点击“Add"按钮,在弹出的页面中填写报警通知的邮件账户列表。 其次,还需要设置发送邮件的服务器。 6)使用Thold监控具体对象参数 监控web服务器的/boot空间,如果该分区的已用空间已达到80M以上,那么将发送邮件报警。 点击"Thresholds",在弹出的页面中选择"Add"按钮添加被监控主机及监控图像,具体报警参数设置。 7)验证 在web服务上向/boot分区写入较大的文件,使得该分区已用空间超过80%,测试报警是否正确工作。