codecamp

Linux CentOS上配置Cacti监控MySQL

防伪码:即使没有辉煌的未来、如果能有无悔的往昔。

                          第九章 CentOS上配置Cacti监控MySQL

前言:在企业网络运维过程中,管理员必须随时关注服务器和网络的运行状况、以便及时发现问题,尽可能减少故障的发生。当网络中的设备、服务器等数量较多时,为了更加方便、快捷的获得各种监控信息,通常会借助于一些集中检测软件。本章将以著名的Cacti套件为例,介绍服务器集中监控体系的构建和使用。

一、Cacti官方简介:

1、Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数。它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构、host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善。界面友好。软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的Snmp流量跟系统资讯监控外,Cacti 也可外挂 Scripts 及加上 Templates 来作出各式各样的监控图。

2、Cacti是用php语言实现的一个软件,它的主要功能是用snmp服务获取数据,然后用rrdtool储存和更新数据当用户需要查看数据的时候用rrdtool生成图表呈现给用户。因此,snmp和rrdtool是cacti的关键。Snmp关系着数据的收集,rrdtool关系着数据存储和图表的生成。

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

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

5、工作原理,如下图所示:

二、服务器配置(主控端-Cacti)

1、安装Net-SNMP、RRDtool等支持软件

1)构建数据库及web平台(不再详细编译安装,直接yum安装并配置LAMP平台)

配置防火墙策略并修改mysql密码:

2)测试LAMP平台

编写一个php测试页,Vim  /var/www/html/test.php,内容如下:

在浏览器上访问,如果出现下面的页面,说明配置成功。

3) 安装net-snmp-utils软件包

Cacti平台通过snmp协议采集检测数据,这些工具程序由net-snmp-utils软件包提供,所需安装的软件及依赖包如下所示:

1) 安装rrdtool软件包(Rrdtool软件包主要用于数据记录和图表绘制。

首先安装依赖包:

安装rddtool源码包:

2、部署cacti,设置数据库连接

1)部署cacti源码包(将下载的cacti源码包释放到web服务器的网页目录)

添加一个用来读写检测数据的用户账户,并调整目录的属主,以便正常读取及写入数据。

2) 建立数据库,表结构(创建用于cacti监测平台的数据库,并授权一个数据库用户cacti,然后使用cacti源码目录下的cacti.sql脚本,导入预设的各种数据表)

验证数据库是否导入:

3) 调整cacti配置文件

3、 cacti的安装

1) 调整httpd配置(设置好网站根目录、自动索引页、默认字符集等相关参数,然后重载httpd服务)

行号,注释截图如下:

1) 初始化cacti系统

在浏览器中输入192.168.1.1,根据提示进行安装

到此为止服务器配置完成了,下面开始配置一台linux客户端(mysql192.168.1.2),然后使用cacti监控客户端。

三、 配置客户端(被控端snmpd)

实现思路如下:

A、无论是路由器、交换机、还是linux或windows服务器,只要正确支持SNMP协议,并允许Client服务器采集数据,就能够对其进行监测。

B、下面仅介绍在linux服务器中启用SNMP支持并设置共同体名的简单方法。

C、ps:共同体名,值的是一种验证机制,所有的client都必须使用同一个共同体名,就像我们之前学习的hsrp的组一样,只有组号相同才能是一个组的,这里也是如此,只有共同体名相同的时候,Cacti才能通过这个共同体名对client进行监控。

D、需要安装net-snmp、lm_sensors软件包,然后通过修改其配置文件/etc/snmp/snmpd.conf,并启动snmpd服务,并建立规则,默认监听UDP的161号端口。

修改第41行:192.168.1.1指的是Cacti的服务器IP(默认是default),表示允许其查询本机数据,

public指的就是共同体名,用来识别及验证

修改第62行 : all表示开放所有的SNMP查询权限(默认是 SystemView)

修改第85行: 去掉注释之后,以便支持各种查询。

开启服务,配置防火墙策略

四、 使用cacti的web控制台

实现步骤:

A、登录Web控制台

B、添加被控设备/主机,设置监控项目

C、生成监测图像

D、定期采集监测数据

E、查看监测结果

1、 登录web控制台

在浏览器中输入192.168.1.1

2、添加被控设备/主机,设置监控项目

1)单击导航栏中的“management(管理)”下的“devices(设备)”,可以管理被控设备或主机。点击devices---Add

修改五个地方,如下图

然后单击右下角的“create”创建,将自动连接目标执行snmp查询

2) 设置要监测的项目

成功连接被控端后会看到save successful提示,如下图:

添加项的时候选择页面右侧的add,完成之后点击右下方的save按钮保存

 3、 生成检测图像

1) 创建图像

单击导航栏中create下的new graphs(图表),选择被控端,选中最需要的图像条目,最后单击下方的create按钮完成创建。

2) 添加图像至监测树

单击导航栏中的management下的graph trees,在单击default tree就可以对默认的图像监测树进行管理。

单击右侧的add,可以向监测树种添加“树项目”,完成之后点击create,并点击save保存。

4、 定期采集监测数据

Cacti系统通过poller.php页面采集监测数据,可以结合计划任务定期采集(默认的刷新间隔是5分钟)

/usr/bin/php /var/www/html/cacti/poller.php

注意:

1、如果有时候采集不到数据,可以刷新缓存,并添加参数--force强制采集

2、执行完成之后,会出现很多的提示信息,一般情况下是指时区不正确,

由于是php报错,因此我们修改php的主配文件(946行)来解决。建议将时区改为Asia/Chongqing

5、 查看监测结果

单击cacti管理控制台左上方的graphs标签,然后展开左侧的default tree树,选择被控主机后即可看到各监测图像。

以上是我截取的一些图表,可以参考。

五、 安装percona-mysql-monitor插件

Cacti工具默认的模板只能监控机器的cpu,内存和磁盘等信息,如果想要监控mysql,就需要安装插件,操作如下。

1)解压缩软件到目标位置

2)在mysql数据库授权用户,并配置防火墙策略

3)为设备添加项目

在Cacti管理界面中进行添加,点击Consose——Import Templates——选择文件,将宿主机下的压缩目录解压到一个文件夹内,

选择解压后的cacti\templat目录下的cacti_host_template_percona_mysql_server_ht_0.8.6i-sver1.1.4.xml,

最后单击import导入。

4) 根据需求添加模板

5) 创建图像

6)重新采集,或者默认等5分钟 

7) 查看监测结果

 

总结:在实际工作中,我们可以根据需求,灵活运用Cacti,使自己的工作更方便快捷。

谢谢观看,真心的希望能帮到您。我是“一盏烛光”!


本文出自 “一盏烛光” 博客,谢绝转载!

Linux MYSQL主从复制与读写分离
Linux Nagios监控系统
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }