服务器Cacti部署监控系统
在企业网络运维过程中,管理员必须时刻关注服务器的运行状态,如CPU、内存、磁盘空间使用情况等。为了能够及时的发现问题,尽量减少故障的发生。当网络中的设备,服务器等数量较多时,可以部署一套监控系统来实时跟踪服务器,我们通常会借助一些软件来实现。本篇博客以Cacti套件为例,介绍服务器集中监测体系的构建和使用。Cacti简介
Cacti是一款使用PHP语言开发的性能与流量监测工具,与Windows操作系统中的“性能监视器”属于同一类,都是为了监控CPU占用,内存使用,运行进程数,磁盘空间,网卡流量等各种数据。但不同的是,Cacti不仅可以监控Linux,也可以监控Windows服务器,路由器,交换机等网络设备,主要基于SNMP协议来搜集数据。Cacti本身是一个web界面的软件,通过调用Net-SNMP工具来采集检测数据,并结合RRDtool(轮询数据库工具)记录数据并绘制图片,最终以Web页面展示给管理员用户。Cacti需要运行在LAMP平台上,配置简单,直观,而且支持插件和数据模板,可扩展其功能。
1. 工作原理
Cacti可以从逻辑上分为三个部分、第一部分:被监测的对象,也就是客户端。第二部分:监测平台,也就是服务器端。第三部分:管理平台。Cacti采用了两种结构实现功能,一种是C/S结构,主要是实现服务器到客户端监控;另外一种就是B/S结构,主要完成对Cacti平台的管理,从下图我们可以看出,管理端是在Web上对Cacti进行管理。
http://s1.运维网.com/images/20180309/1520585094388732.png
简单的整理一下Cacti的工作过程。
首先通过LAMP平台部署Cacti监控工具,之后通过管理端的浏览器登录Cacti进行对其他客户端的设置,可以从上图看到Cacti采集数据时必须要使用SNMP协议来连接客户端进而能够采集数据,也就是说客户端必须支持SNMP协议,监控之后通过RRDtool来生成图表。
案例:构建Cacti监测系统
实验环境:公司的网关、网站、数据库等多台服务器均采用RHEL6.5系统,要求构建Cacti监测系统。以便管理员更快速、便捷的了解各服务器的状态,及时发现和解决潜在的问题,如下图所示:
http://s1.运维网.com/images/20180309/1520586155176213.png
描述需求:
(1)通过Cacti集中监测网关、网站、数据库等服务器
(2)能在网管工作站中使用浏览器查看监测数据
(3)监测的信息包括CPU占用、内存使用、网卡流量、根分区使用情况
配置步骤如下:
1. 配置Cacti集中监测平台
(1)搭建LAMP平台
# yum -y install httpd
# yum -y install mysql mysql-server mysql-devel
# yum -y install zlib freetype libjpeg fontconfig gd libxml2 php-gd
# yum -y install php php-mysql
# service httpd start
# service mysqld start
# vim /var/www/html/index.php
测试LAMP平台是否工作正常,如果出现下面的页面,说明配置成功。
http://s1.运维网.com/images/20180309/1520588792516745.png
(2)安装Net-SNMP、RRDtool等软件支持
Cacti平台通过snmp协议采集检测数据,这些工具程序由net-snmp-utils软件包提供,Rrdtool软件包主要用于数据记录和图表绘制。
# yum -y install net-snmp net-snmp-utils
# service snmpd start
# chkconfig snmpd on
# yum -y install cairo-devel zlib libxml2 libxml2-devel glib2 glib2-devel \
> libpng libpng-devel freetype freetype-devel libart_lgpl pango pango-devel perl perl-devel perl-CPAN
# tar zxf rrdtool-1.4.8.tar.gz
# cd rrdtool-1.4.8
# ./configure --prefix=/usr/local/rrdtool
# make && make install (3)安装Cacti源码包,设置数据库连接
# tar zxf cacti-0.8.8b.tar.gz
# mv cacti-0.8.8b/ /var/www/html/cacti
# useradd cacti
# chown -R cacti:cacti /var/www/html/cacti/
# mysql -u root
mysql> create database cacti default character set utf8;
Query OK, 1 row affected (0.01 sec) //建立数据库
mysql> grant all on cacti.* to 'cacti'@'localhost' identified by 'cacti';
Query OK, 0 rows affected (0.04 sec) //授权一个数据库用户
mysql> exit
Bye
# cd /var/www/html/cacti/ //导入预设库
# mysql -u cacti -pcacti cacti < cacti.sql
# vim include/config.php //调整Cacti配置文件
$database_type = "mysql"; //数据库类型
$database_default = "cacti"; //数据库名称
$database_hostname = "localhost"; //数据库服务器地址
$database_username = "cacti"; //授权用户
$database_password = "cacti"; //授权密码
$database_port = "3306"; //数据库服务的端口
$database_ssl = false; //不启用ssl
$url_path = "/"; //指定cacti的根目录 (4)Cacti的初始化安装
# vim /etc/httpd/conf/httpd.conf //修改httpd配置
DocumentRoot "/var/www/html/cacti" //292行,指定网站根目录
//317行,设置目录访问权限
Options Indexes none //331行
AllowOverride None //338行
Order allow,deny //343行
Allow from all //344行
DirectoryIndexindex.php index.html //402行,第一默认首页为index.php
AddDefaultCharset UTF-8 //757行
# service httpd restart
# iptables -I INPUT -p tcp --dport 80 -j ACCEPT
# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT2. 配置客户端(监测对象)
无论是路由器、交换机、还是Linux或Windows服务器,只要正确支持SNMP协议,并允许Client服务器采集数据,就能够对其进行监测。下面仅介绍在linux服务器中启用SNMP支持并设置共同体名(识别及验证字串)的简单方法。
PS:共同体名,指的是一种验证机制,所有的Client都必须使用同一个共同体名,只有共同体名相同的时候,Cacti才能通过这个共同体名对Client进行监控。
需要安装net-snmp、lm_sensors软件包,然后通过修改其配置文件/etc/snmp/snmpd.conf,并启动snmpd服务,并建立规则,默认监听UDP的161号端口。
# yum -y install net-snmp lm_sensors
# vim /etc/snmp/snmpd.conf
com2sec notConfigUser192.168.4.254 public //41行
accessnotConfigGroup "" any noauth exact all none none //62行 //62行
view all included.1 80 //85行
第41行:192.168.4.254指的是Cacti的服务器IP(默认是default),表示允许其查询本机数据,public指的就是共同体名,用来识别及验证
第62行:all表示开放所有的SNMP查询权限(默认是 SystemView)
第85行:去掉注释之后,以便支持各种查询。
# service snmpd start
# iptables -I INPUT -p udp --dport 161 -j ACCEPT 3. 在网管工作站
(1)在浏览器中访问Cacti服务器的Web服务,初次访问将会自动跳转到Cacti安装指南界面,根据提示,即可进入Web管理界面。
http://s1.运维网.com/images/20180309/1520601262775138.png
http://s1.运维网.com/images/20180309/1520601787504258.png
http://s1.运维网.com/images/20180309/1520601804432148.png
http://s1.运维网.com/images/20180309/1520602131286019.png
http://s1.运维网.com/images/20180309/1520602213540092.png
(2)添加被控设备/主机,设置监控项目
单击导航栏中的“management(管理)”下的“devices(设备)”,可以管理被控设备或主机。点击devices---Add
http://s1.运维网.com/images/20180309/1520603040730920.png
http://s1.运维网.com/images/20180309/1520604210632432.png
(2)生成监测图像
创建图像
http://s1.运维网.com/images/20180309/1520604662177852.png
添加图像到监测树
http://s1.运维网.com/images/20180309/1520604669913808.png
http://s1.运维网.com/images/20180309/1520604849213117.png
http://s1.运维网.com/images/20180309/1520604951557237.png
(3)定期采集监测数据
# vim /etc/php.ini
date.timezone = Asia/Chongqing //946行去掉注释
# /usr/bin/php /var/www/html/cacti/poller.php //执行首次数据采集
# crontab -u cacti -e //每5分钟,执行一次
*/5 * * * * /usr/bin/php /var/www/html/poller.php > /dev/null (4)查看监测结果
单击cacti管理控制台左上方的graphs标签,然后展开左侧的default tree树,选择被控主机后即可看到各监测图像。
(5)安装percona-mysql-monitor插件
Cacti工具默认的模板只能监控机器的cpu,内存和磁盘等信息,如果想要监控mysql,就需要安装插件,操作如下
1)解压缩软件到目标位置
# tar zxf percona-monitoring-plugins-1.1.4.tar.gz
# cd percona-monitoring-plugins-1.1.4/cacti/scripts
# cp ss_get_mysql_stats.php /var/www/html/cacti/scripts/ 2)在mysql数据库授权用户
# mysql -u root -p
mysql> grant process , super on *.* to cactiuser@'192.168.4.254' identified by 'cactiuser';
# iptables -I INPUT -p tcp --dport 3306 -j ACCEPT 3)为设备添加项目
在Cacti管理界面中进行添加,点击Consose——Import Templates——选择文件,选择解压后的cacti\templat目录下的cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml,最后单击import导入。
http://i2.运维网.com/images/blog/201802/04/01c483c75b446871170914adb61c821b.png
导入后的情况如下图所示:
http://i2.运维网.com/images/blog/201802/04/cdea35b1e9d5fe9bc8294f4d9b85ecd9.png
4)添加模板
http://s1.运维网.com/images/20180316/1521175026680758.png
5)创建图像
http://s1.运维网.com/images/20180316/1521175108905111.png
6)重新采集(或者等5分钟之后)
# /usr/bin/php /var/www/html/cacti/poller.php 7)查看监测结果
http://s1.运维网.com/images/20180316/1521175380563367.png
页:
[1]