安装配置MySQLMTOP来监控MySQL运行性能的教程

 更新时间:2015年12月14日 23:17  点击:2093

一、环境说明
1、服务器角色

2015129153745577.png (726×101)

2、系统环境
CentOS 6.2 x86_64

3、环境要求
(1)、MySQL 5.0 及以上       (用来存储监控系统采集的数据)
(2)、Apache 2.2 及以上        (WEB 服务器运行服务器)
(3)、PHP 5.3 以上                (WEB 界面)
(4)、Python 2                       (推荐 2.7 版本,其他版本未做测试,执行数据采集和报警任务)
(5)、MySQLdb for python     (Python 连接 MySQL 的接口)

二、Python基础环境部署

https://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz

# tar xvzf Python-2.7.6.tgz
# cd Python-2.7.6
# ./configure --prefix=/usr/local/python2.7 --enable-shared
# make && make install

# echo '/usr/local/python2.7/lib' >> /etc/ld.so.conf
# /sbin/ldconfig

# mv /usr/bin/python /usr/bin/python_old
# ln -s /usr/local/python2.7/bin/python2.7 /usr/bin/python

为避免 python 版本过高,导致 yum 不可以,需做如下修改:

# vim /usr/bin/yum

由  #!/usr/bin/python  修改为  #!/usr/bin/python_old

http://pypi.python.org/packages/source/d/distribute/distribute-0.6.28.tar.gz

# tar xvzf distribute-0.6.28.tar.gz
# cd distribute-0.6.28
# python setup.py install

https://github.com/farcepest/MySQLdb1/archive/MySQLdb-1.2.5.tar.gz
# tar xvzf MySQLdb1-MySQLdb-1.2.5.tar.gz
# cd MySQLdb1-MySQLdb-1.2.5

# vim site.cfg
mysql_config =/usr/local/mysql/bin/mysql_config
……

# python setup.py build
# python setup.py install


三、mysqlmtop环境部署
1、创建监控机数据库并授权

# mysql -uroot -e "create database mysqlmtop default character set utf8;"
# mysql -uroot -e "grant all privileges on mysqlmtop.* to 'mtop_user'@'%' identified by '123456';"
# mysql -uroot -e "flush privileges;"

2、导入SQL文件夹里的SQL文件(表结构和数据文件)

# unzip mysqlmtop_v2.1.zip
# cd mysqlmtop_v2.1
# mysql -uroot mysqlmtop < sql/mysqlmtop.sql
# mysql -uroot mysqlmtop < sql/mysqlmtop_data.sql

3、在被监控机上创建授权账号

# mysql -uroot -e "grant select,super,process on *.* to 'monitor'@'172.18.35.29' identified by 'monitor';"
# mysql -uroot -e "flush privileges;"

4、mysqlmtop配置

# cp -a mysqlmtop /usr/local/
# cp -a frontweb /data/web/data/

 
# cd /usr/local/mysqlmtop/
# vim etc/config.ini

2015129154018464.jpg (319×327)

# chmod +x *.py *.sh mtopctl
# ln -s /usr/local/mysqlmtop/mtopctl /usr/local/bin

( 注意:需要使用dos2unix命令对*.py、*.sh、mtopctl文件进行格式转换,否则会运行失败 )

5、测试MySQL连接是否正常

# cd /usr/local/mysqlmtop && ./test_mysql.py
MySQLDB OK!

6、启动监控系统

# mtopctl start

2015129154122888.jpg (410×60)

7、前端WEB展示层配置

# cd /data/web/data/frontweb/
# chown -R nobody:nogroup /data/web/data/frontweb
# chmod -R 750 /data/web/data/frontweb

# vim application/config/database.php

2015129154153004.jpg (498×215)

# vim /data/web/conf/mysqlmtop.conf

<VirtualHost *:80>
  DocumentRoot /data/web/data/frontweb
  ServerName mysqlmtop.test.com
  DirectoryIndex index.php
  AddDefaultCharset UTF-8
                                                                     
  <LocationMatch "/data/web/.*\.php$">
    Order Deny,Allow
    Deny from All
  </LocationMatch>
                                                                     
  <Directory />
    AllowOverride ALL
  </Directory>
</VirtualHost>

# service httpd graceful

然后本地hosts绑定(172.18.35.29  mysqlmtop.test.com)
通过 http://mysqlmtop.test.com  即可访问(初始授权账号:admin  admin)

8、监控项设置
点击管理中心 --> 应用管理 添加应用

2015129154225845.jpg (1156×477)

点击管理中心 --> 服务器管理 添加 MySQL 服务器

2015129154243226.jpg (1164×744)

四、慢查询配置
1、在被监控服务器安装如下组件
http://cpan.metacpan.org/authors/id/T/TI/TIMB/DBI-1.628.tar.gz

# tar xvzsf DBI-1.628.tar.gz
# cd DBI-1.628
# perl Makefile.PL
# make && make install

http://search.cpan.org/CPAN/authors/id/C/CA/CAPTTOFU/DBD-mysql-4.024.tar.gz

# tar xvzf DBD-mysql-4.024.tar.gz
# cd DBD-mysql-4.024
# perl Makefile.PL --mysql_config=/usr/local/mysql/bin/mysql_config --with-mysql=/usr/local/mysql
# make && make install

http://search.cpan.org/CPAN/authors/id/S/SU/SULLR/IO-Socket-SSL-1.972.tar.gz

# tar xvzf IO-Socket-SSL-1.972.tar.gz
# cd IO-Socket-SSL-1.972
# perl Makefile.PL
# make && make install

http://www.percona.com/redir/downloads/percona-toolkit/LATEST/percona-toolkit-2.2.7.tar.gz

# tar xvzf percona-toolkit-2.2.7.tar.gz
# cd percona-toolkit-2.2.7
# perl Makefile.PL
# make && make install

2、开启 MySQL 本身的慢查询功能

slow_query_log = 1
slow_query_log_file = /data/dbdata/slow_query.log
long_query_time = 1

3、在被监控服务器(10.160.22.14)上添加如下 crontab 项

00 * * * * /usr/bin/pt-query-digest --user=mtop_user --password=123456 --port=3306 --review h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_4 --history h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_history_4 --no-report --limit=0% /data/dbdata/slow_query.log >/dev/null 2>&1

4、在被监控服务器(10.160.22.47)上添加如下 crontab 项

00 * * * * /usr/bin/pt-query-digest --user=mtop_user --password=123456 --port=3306 --review h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_5 --history h=172.18.35.29,D=mysqlmtop,t=mysql_slow_query_review_history_5 --no-report --limit=0% /data/dbdata/slow_query.log >/dev/null 2>&1

以上数据表 mysql_slow_query_review、mysql_slow_query_review_history 的后缀为主机 ID,如图:

2015129154414920.jpg (1259×469)

5、为被监控的服务器开启慢查询

2015129154437909.jpg (825×591)

6、效果展示

2015129154518166.jpg (1372×669)

三、工具组件配置
1、在被监控服务器(172.18.35.29)上添加如下 crontab 项

*/30 * * * * cd /usr/local/mysqlmtop; ./check_mysql_widget_bigtable.py >/dev/null 2>&1
*/1 * * * * cd /usr/local/mysqlmtop; ./check_mysql_widget_hit_rate.py >/dev/null 2>&1
*/1 * * * * cd /usr/local/mysqlmtop; ./check_mysql_widget_connect.py >/dev/null 2>&1

2、效果展示

2015129154605413.jpg (1004×341)

四、资源监控配置
1、被监控服务器上的设置
NET-SNMP服务安装(注意版本):
ftp://ftp.fi.freebsd.org/pub/FreeBSD/ports/distfiles/net-snmp-5.3.2.tar.gz

# tar xvzf net-snmp-5.3.2.tar.gz
# cd net-snmp-5.3.2
# ./configure --prefix=/usr/local/snmp \
--enable-mfd-rewrites \
--with-default-snmp-version="2" \
--with-sys-contact="lovezym5@qq.com" \
--with-sys-location="China" \
--with-logfile="/var/log/snmpd.log" \
--with-persistent-directory="/var/net-snmp"

# make && make install
# cp EXAMPLE.conf /usr/local/snmp/share/snmp/snmpd.conf

# vim /usr/local/snmp/share/snmp/snmpd.conf
com2sec notConfigUser 172.18.35.29   mysqlmtop

group notConfigGroup v1  notConfigUser
group notConfigGroup v2c notConfigUser
group notConfigGroup usm notConfigUser

view all  included .1                80
access notConfigGroup ""   any    noauth  exact all none none
......

服务启动:

# /usr/local/snmp/sbin/snmpd -c /usr/local/snmp/share/snmp/snmpd.conf

2、监控服务器上的设置
NET-SNMP服务安装:
# tar xvzf net-snmp-5.3.2.tar.gz
# cd net-snmp-5.3.2
# ./configure --prefix=/usr/local/snmp \
--enable-mfd-rewrites \
--with-default-snmp-version="2" \
--with-sys-contact="lovezym5@qq.com" \
--with-sys-location="China" \
--with-logfile="/var/log/snmpd.log" \
--with-persistent-directory="/var/net-snmp"

# make && make install

# cd /usr/local/mysqlmtop
# ln -s /usr/local/snmp/bin/snmpwalk /usr/bin/snmpwalk
# ln -s /usr/local/snmp/bin/snmpdf /usr/bin/snmpdf

# vim /usr/local/mysqlmtop/check_linux_resource.sh
host="172.18.35.29"
port="3306"
user="mtop_user"
password="123456"
dbname="mysqlmtop"
......

# vim /usr/local/mysqlmtop/etc/config.ini
[linux_server]
server_ip="10.160.22.14|10.160.22.47"

重启监控服务:

# mtopctl stop && mtopctl start

问题修正(否则无法获取内存信息):

# vim /usr/local/mysqlmtop/check_linux_resource.sh
totalmem=`/usr/bin/snmpdf -v1 -c mysqlmtop ${ip} | awk '/Real Memory/ {print $3}'`
usedmem=`/usr/bin/snmpdf -v1 -c mysqlmtop ${ip} | awk '/Real Memory/ {print $4}'`

crontab 内容添加:

*/1 * * * * cd /usr/local/mysqlmtop; ./check_linux_resource.py >/dev/null 2>&1

效果展示

2015129154803297.jpg (1258×332)

[!--infotagslink--]

相关文章

  • MySQL性能监控软件Nagios的安装及配置教程

    这篇文章主要介绍了MySQL性能监控软件Nagios的安装及配置教程,这里以CentOS操作系统为环境进行演示,需要的朋友可以参考下...2015-12-14
  • 详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下...2016-08-23
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

    为什么标题要起这个名字呢?commen sence指的是那些大家都应该知道的事情,但往往大家又会会略这些东西,或者对这些东西一知半解,今天我总结下自己在mysql中遇到的一些commen sense类型的问题。 ...2015-03-15
  • MySQL 字符串拆分操作(含分隔符的字符串截取)

    这篇文章主要介绍了MySQL 字符串拆分操作(含分隔符的字符串截取),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-22
  • mysql的3种分表方案

    一、先说一下为什么要分表:当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。根据个人经验,mysql执行一个sql的过程如下:1...2014-05-31
  • node.js如何操作MySQL数据库

    这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
  • Windows服务器MySQL中文乱码的解决方法

    我们自己鼓捣mysql时,总免不了会遇到这个问题:插入中文字符出现乱码,虽然这是运维先给配好的环境,但是在自己机子上玩的时候咧,总得知道个一二吧,不然以后如何优雅的吹牛B。...2015-03-15
  • Centos5.5中安装Mysql5.5过程分享

    这几天在centos下装mysql,这里记录一下安装的过程,方便以后查阅Mysql5.5.37安装需要cmake,5.6版本开始都需要cmake来编译,5.5以后的版本应该也要装这个。安装cmake复制代码 代码如下: [root@local ~]# wget http://www.cm...2015-03-15
  • 用VirtualBox构建MySQL测试环境

    宿主机使用网线的时候,客户机在Bridged Adapter模式下,使用Atheros AR8131 PCI-E Gigabit Ethernet Controller上网没问题。 宿主机使用无线的时候,客户机在Bridged Adapter模式下,使用可选项里唯一一个WIFI选项,Microsoft Virtual Wifi Miniport Adapter也无法上网,故弃之。...2013-09-19
  • 忘记MYSQL密码的6种常用解决方法总结

    首先要声明一点,大部分情况下,修改MySQL密码是需要有mysql里的root权限的...2013-09-11
  • MySQL数据库备份还原方法

    MySQL命令行导出数据库: 1,进入MySQL目录下的bin文件夹:cd MySQL中到bin文件夹的目录 如我输入的命令行:cd C:/Program Files/MySQL/MySQL Server 4.1/bin (或者直接将windows的环境变量path中添加该目录) ...2013-09-26
  • Mysql命令大全(详细篇)

    一、连接Mysql格式: mysql -h主机地址 -u用户名 -p用户密码1、连接到本机上的MYSQL。首先打开DOS窗口,然后进入目录mysql/bin,再键入命令mysql -u root -p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密...2015-11-08
  • Navicat for MySQL 11注册码\激活码汇总

    Navicat for MySQL注册码用来激活 Navicat for MySQL 软件,只要拥有 Navicat 注册码就能激活相应的 Navicat 产品。这篇文章主要介绍了Navicat for MySQL 11注册码\激活码汇总,需要的朋友可以参考下...2020-11-23
  • mysql IS NULL使用索引案例讲解

    这篇文章主要介绍了mysql IS NULL使用索引案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下...2021-08-14
  • RHEL6.5编译安装MySQL5.6.26教程

    一、准备编译环境,安装所需依赖包yum groupinstall 'Development' -y yum install openssl openssl-devel zlib zlib-devel -y yum install readline-devel pcre-devel ncurses-devel bison-devel cmake -y二、编译安...2015-10-21
  • 基于PostgreSQL和mysql数据类型对比兼容

    这篇文章主要介绍了基于PostgreSQL和mysql数据类型对比兼容,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-12-25
  • Mysql中 show table status 获取表信息的方法

    这篇文章主要介绍了Mysql中 show table status 获取表信息的方法的相关资料,需要的朋友可以参考下...2016-03-12
  • 20分钟MySQL基础入门

    这篇文章主要为大家分享了20分钟MySQL基础入门教程,快速掌握MySQL基础知识,真正了解MySQL,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • mongodb与mysql命令详细对比

    传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关...2013-09-11
  • Delphi远程连接Mysql的实现方法

    这篇文章主要介绍了Delphi远程连接Mysql的实现方法,需要的朋友可以参考下...2020-06-30