近日搭建了较多MySQL环境后,就涉及到如何监控了,看到君三思老师之前做过类似的笔记和总结,先梳理和总结一下以供参考。
配置CACTI监控MySQL数据库状态(1)准备工作
http://blog.itpub.net/7607759/viewspace-719820/
MySQL数据库做为开源数据库软件中的佼佼者,虽然应用领域众多,但其自身在性能监测方面很不给力,尽管MySQL也提供的专用了GUI工作,可是监测只是其中的一个很小的功能点,监测项少且很不灵活,当拥有多个MySQL数据库实例时,如何能够高效快速的查看众多实例的性能状态,想必很多MySQL DBA都在苦苦寻找~~
近日三思经过一凡尝试,在多个流行方式中最终选择通过Cacti监测(注意是监测而非监控)MySQL数据库状态。借助cacti+rrdtool强大的绘图功能,加上专用的mysql模板,能够灵活快速的创建对多个MySQL实例的监测。
下面简要罗列Cacti监测MySQL性能状态的配置。
Cacti是一套拿PHP编写的应用软件,因此需要有PHP+APACHE的运行环境,出图是基于RRDTool,数据存储则保存在MySQL数据库中,因此安装Cacti前需要首先安装下列关联的软件:
如果是RPM方式安装,需要下列RPM包:
本次安装Cacti及相关软件均为源码编译方式安装,首先下载相关的软件源码包:
主角:
Cacti:http://www.cacti.net/downloads/
幕后主角:
Apache:http://httpd.apache.org/download.cgi
Php:http://www.php.net/downloads.php
MySQL:http://dev.mysql.com/downloads/mysql/
RRDTool:http://oss.oetiker.ch/rrdtool/download.en.html
NET-SNMP:http://net-snmp.sourceforge.net/
配置CACTI监控MySQL数据库状态(2)安装cacti相关软件包
http://blog.itpub.net/7607759/viewspace-720797/
创建组/用户及安装apache:
# groupadd apache
# useradd -g apache apache
# chown apache:apache /data/www -R
# wget http://mirror.bjtu.edu.cn/apache/httpd/httpd-2.2.21.tar.gz
# tar xvfz httpd-2.2.21.tar.gz
# cd httpd-2.2.21
# ./configure \
--prefix=/usr/local/webserver/apache2.2.21 \
--enable-so \
--enable-deflate \
--enable-cache \
--enable-disk-cache \
--enable-mem-cache \
--enable-file-cache \
--enable-modules=all \
--enable-shared=max \
--enable-rewrite \
--enable-static-support \
--enable-static-htpasswd \
--enable-static-htdigest \
--enable-static-rotatelogs \
--enable-static-logresolve \
--enable-static-htdbm \
--enable-static-ab \
--enable-static-checkgid \
--enable-vhost-alias \
--with-mpm=worker
# make
# make install
自MySQL5.5版本之后,编译工具变成了CMake,这里首先安装CMake:
# wget http://www.cmake.org/files/v2.8/cmake-2.8.4.tar.gz
# tar xvfz cmake-2.8.4.tar.gz
# cd cmake-2.8.4
# ./configure
接下来安装MySQL,先创建用户,而后再执行编译。
# groupadd mysql
# useradd -g mysql mysql
# tar xvfz mysql-5.5.20.tar.gz
# cd mysql-5.5.20
# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DENABLED_LOCAL_INFILE=ON \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_FEDERATED_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
> -DWITH_PARTITION_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DCOMPILATION_COMMENT=¨JSS for BKmysql¨ \
> -DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock \
> -DSYSCONFDIR=/data/mysqldata/3306
# make
# make install
# chown mysql:mysql /usr/local/mysql -R
创建数据库并启动MySQL服务:
# sudo su - mysql
$ /usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysqldata/3306/data
$ cp /usr/local/mysql/support-files/my-large.cnf /data/mysqldata/3306/my.cnf
$ /usr/local/mysql/bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
这个mysql库是用于保存cacti收集到的数据及其自身配置的,也可以将这部分数据保存在当前已存在的数据库上,那就可以跳过本步了。
查询关联软件包是否已安装:
# rpm -q \libxml2 libjpeg-6b freetype zlib libpng fontconfig gd net-snmp
libxml2-2.7.6-1.el6.x86_64
libjpeg-6b-46.el6.x86_64
freetype-2.3.11-5.el6.x86_64
zlib-1.2.3-25.el6.x86_64
libpng-1.2.44-1.el6.x86_64
fontconfig-2.8.0-3.el6.x86_64
package gd is not installed
net-snmp-5.5-37.el6_2.1.x86_64
如果显示not installed,则说明该包未安装。如上所示,这里gb包缺失,对于监控需求的cacti来说gd并非必选组件,它只是用来生成水印,在我们这个环境中实际上是用不到的。不过多数php环境一般都有此需求,就算是为了全面些吧,这里也选择将其补全。
下载gd源码包:https://bitbucket.org/pierrejoye/gd-libgd
# wget https://bitbucket.org/pierrejoye/gd-libgd/get/GD_2_0_33.tar.gz
# tar xvfz GD_2_0_33.tar.gz
# cd pierrejoye-gd-libgd-5551f61978e3/src/
# ./configure
# make
# make install
注意net-snmp非常重要,一定要确保其安装可用,可以通过下列命令检查:
正常情况下应返回一系列的系统信息。
# wget http://cn.php.net/get/php-5.3.8.tar.gz/from/cn2.php.net/mirror
# tar xvfz php-5.3.8.tar.gz
# cd php-5.3.8
# ./configure \
--prefix=/usr/local/webserver/php \
--with-apxs2=/usr/local/webserver/apache2.2.21/bin/apxs \
--with-mysql=/usr/local/mysql55 \
--with-freetype-dir \
--with-gd \
--with-zlib \
--with-jpeg-dir \
--with-png-dir \
--with-iconv=/usr/local/webserver/libiconv \
--enable-short-tags \
--enable-sockets \
--enable-zend-multibyte \
--enable-soap \
--with-openssl \
--enable-mbstring \
--enable-static \
--enable-gd-native-ttf \
--with-curl \
--with-iconv \
--with-xsl \
--enable-ftp \
--with-libxml-dir
# make
# make install
# cp php.ini-production /usr/local/webserver/php/lib/php.ini
# wget http://oss.oetiker.ch/rrdtool/pub/rrdtool-1.2.14.tar.gz
# tar xvfz rrdtool-1.4.4.tar.gz
# ./configure --prefix=/usr/local/rrdtool --disable-python --disable-tcl
# make
# make install
# useradd cacti
# tar xvfz cacti-0.8.7i.tar.gz
# mv cacti-0.8.7i /data/www/cacti
# chown cacti:cacti /data/www/cacti -R
配置CACTI监控MySQL数据库状态(3)配置apache模块
http://blog.itpub.net/7607759/viewspace-720942/
编译apache配置文件:
修改用户:
User apache
Group apache
修改服务名称:
修改站点起始目录:
修改目录:
增加默认做为首页的文件名:
增加对php类型的支持:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps然后:wq保存退出!
执行apachectl -t检查配置文件语法,正常情况下应返回Syntax OK:
# /usr/local/webserver/apache2.2.21/bin/apachectl -t
Syntax OK
启动snmp服务:
启动apache服务:
配置CACTI监控MySQL数据库状态(4)配置cacti
http://blog.itpub.net/7607759/viewspace-720980/
创建数据库:
创建用户:
导入数据:
编辑cacti配置文件:
# vi /data/www/cacti/include/config.php
$database_type = "mysql";
$database_default = "cactidb";
$database_hostname = "localhost";
$database_username = "cacti";
$database_password = "cacti";
$database_port = "3306";
$database_ssl = false;
安装至此基本完成,接下来就可以在浏览器中操作了。
打开浏览器,访问:http://10.0.0.116/cacti/,按照提示进行第一次安装:
注意如果有提示NOT FOUND的项,要手工修正路径,这里需要修改rrdtool和php两个应用的路径。全部验证完后点击FINISH,然后就可以登录cacti了。第一次登录的默认用户名是admin,密码是cacti。
创建自动任务,让cacti能够定时收集数据:
# crontab -ucacti -e
*/5 * * * * /usr/local/webserver/php/bin/php /data/www/cacti/poller.php > /dev/null 2>&1
然后应该就能够在管理界面下看到图片了。
配置CACTI监控MySQL数据库状态(5)增加MySQL监控模板
http://blog.itpub.net/7607759/viewspace-721432/
下载模板:
#wget http://mysql-cacti-templates.googlecode.com/files/better-cacti-templates-1.1.8.tar.gz
# tar xvfz better-cacti-templates-1.1.8.tar.gz
# cd better-cacti-templates-1.1.8
# cp scripts/ss_get_mysql_stats.php /data/www/cacti/scripts/
导入模板,在cacti管理界面(Import Templates)导入templates/cacti_host_template_x_mysql_server_ht_0.8.6i-sver1.1.8.xml文件。如无异常应显示[success]。
修改脚本文件:
修改
$mysql_user = ¨cacti¨;
$mysql_pass = ¨cacti¨;
$mysql_port = 3306;
$cache_dir = ¨/data/www/cacti/cache¨;
创建缓存目录并授予所有用户读写权限:
# mkdir /data/www/cacti/cache
# chown cacti:cacti /data/www/cacti/cache
# chmod 777 /data/www/cacti/cache
客户端的配置
以MySQL服务器172.16.1.110为例,创建监控mysql的用户并授予所需要的权限:
安装net-snmp及关联组件,为简化操作直接使用yum安装了:
配置net-snmp:
修改:
access notConfigGroup "" any noauth exact all none none
com2sec local localhost public
com2sec mynetwork 10.0.0.0/24 public
view all included .1 80
启动服务:
执行下列命令检查:
正常情况下应有返回。
返回到cacti浏览器管理界面,创建对刚刚配置好的客户端的监控,按照下列步骤操作:
Devices->Add
Description填写描述,Hostname填写客户端IP地址,这里是172.16.1.110,Host Template选择一个模板,这里选择的是预先定制好的模板MYSQLDB(如果没有,选择Local Linux Machine也可以,模板的优点是方便对监控项管理),其它不变,点击create。
Devices->[刚刚创建的客户端名称]->Create Graphs for this host
根据需要,增加监控项即可。
配置完成后,就可以进入Graph Management中查看具体的监控项了。点击就可以看到图片。默认情况下cacti每5分钟收集一次数据,因此至少需要等待几分钟时间。
至此,配置基本完成。之后就可以根据实际情况,做各种定制化的监控方案。
Apache日志中提示:
修改/data/www/cacti/include/global_constants.php文件,增加一行:
Apache日志中提示:[error] [client 10.0.10.199] File does not exist: /data/www/favicon.ico
手动创建一个该文件即可: