CentOS 5下配置Catcti监控MySQL


近日搭建了较多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前需要首先安装下列关联的软件:

  • RRDTool:
  • MySQL:
  • PHP:
  • WebServer(Apache/IIS等):

  如果是RPM方式安装,需要下列RPM包:

  • httpd
  • php
  • php-mysql
  • php-snmp
  • mysql
  • mysql-server
  • net-snmp*

0、准备工作

  本次安装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/


1、安装软件包

1.1 安装APACHE

创建组/用户及安装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

1.2 安装MySQL

自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收集到的数据及其自身配置的,也可以将这部分数据保存在当前已存在的数据库上,那就可以跳过本步了。

1.3 安装关联软件包

查询关联软件包是否已安装:

    # 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非常重要,一定要确保其安装可用,可以通过下列命令检查:

    # snmpwalk -v 2c -c public localhost

正常情况下应返回一系列的系统信息。

1.4 安装PHP

    # 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

1.5 安装RRDTool

    # 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

1.6 安装Cacti

    # 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/


2、配置apache模块

编译apache配置文件:

    vi /usr/local/webserver/apache2.2.21/conf/httpd.conf

修改用户:

    User apache

    Group apache

修改服务名称:

    ServerName 10.0.0.116:80

修改站点起始目录:

    DocumentRoot "/data/www"

修改目录:

      <Directory "/data/www">

增加默认做为首页的文件名:

    DirectoryIndex index.html index.php

增加对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服务:

    # service snmpd start

启动apache服务:

    # /usr/local/webserver/apache2.2.21/bin/apachectl start

 配置CACTI监控MySQL数据库状态(4)配置cacti 


http://blog.itpub.net/7607759/viewspace-720980/


3、配置cacti

创建数据库:

    # mysql -uroot -h localhost -P 3306 -e "create database cactidb"

创建用户:

    # mysql -uroot -h localhost -P 3306 -e "grant all on cactidb.* to cacti@¨localhost¨ identified by ¨cacti¨"

导入数据:

    # mysql -ucacti -pcacti -h localhost -P 3306 -D cactidb < /data/www/cacti/cacti.sql  

编辑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/,按照提示进行第一次安装:

CentOS 5下配置Catcti监控MySQL_第1张图片

CentOS 5下配置Catcti监控MySQL_第2张图片

CentOS 5下配置Catcti监控MySQL_第3张图片

注意如果有提示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/


4、增加MySQL监控模板

下载模板:

    #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]。

修改脚本文件:

    # vi /data/www/cacti/scripts/ss_get_mysql_stats.php  

修改

    $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的用户并授予所需要的权限:

    mysql> grant process,super,replication client on *.* to ¨cacti¨@¨10.0.0.116¨ identified by ¨cacti¨;  

安装net-snmp及关联组件,为简化操作直接使用yum安装了:

    # yum -y install net-snmp net-snmp-utils net-snmp-devel net-snmp-libs

配置net-snmp:

    # vi /etc/snmp/snmpd.conf

修改:

    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

启动服务:

    # /etc/init.d/snmpd start

执行下列命令检查:

    # snmpwalk -v 2c -c public localhost sysUpTime

正常情况下应有返回。

返回到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分钟收集一次数据,因此至少需要等待几分钟时间。

至此,配置基本完成。之后就可以根据实际情况,做各种定制化的监控方案。

N、错误处理

Apache日志中提示:

    [Fri Mar 23 09:30:16 2012] [error] [client 10.0.10.199] PHP Warning:  strtotime(): It is not safe to rely on the system¨s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ¨Asia/Chongqing¨ for ¨CST/8.0/no DST¨ instead in /data/www/cacti/include/global_constants.php on line 165

修改/data/www/cacti/include/global_constants.php文件,增加一行:

    date_default_timezone_set (¨Asia/Shanghai¨);

Apache日志中提示:[error] [client 10.0.10.199] File does not exist: /data/www/favicon.ico

手动创建一个该文件即可:

    # cat /dev/null > /data/www/favicon.ico  





你可能感兴趣的:(mysql)