MySQL数据库监控
MySQL MTOP由PHP和Python开发,所以监控机需要安装PHP运行环境和Python环境。需要的核心包如下: 1.MySQL 5.0及以上(用来存储监控系统采集的数据) 2.Apache 2.2及以上 (WEB服务器运行服务器) 3.PHP 5.3以上 (WEB界面) 4.Python2 (推荐2.7版本,其他版本未做测试,执行数据采集和报警任务) 5.MySQLdb for python (Python连接MySQl的接口)
MySQL监控系统MySQL MTOP的搭建
MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统。系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理。最重要是MySQL服务器无需安装任何Agent,只需在监控WEB界面配置相关数据库信息
功能非常强大:
可对上百台MySQL数据库的状态、连接数、QTS、TPS、数据库流量、复制、性能等进行时时监控
能在数据库偏离设定的正常运行阀值(如连接异常,复制异常,复制延迟) 时发送告警邮件通知到DBA进行处理
对历史数据归档,通过图表展示出数据库近期状态,以便DBA和开发人员能对遇到的问题进行分析和诊断
系统主要由仪表盘、状态监控、进程监控、复制监控、慢查询分析、性能图表、工具组件、告警事件、系统资源等子系统组成,每个子系统负责完成特定信息的采集和展示
一、系统安装需求
二、 安装必备的开发包
[root src]$ yum -y install ntp vim-enhanced gcc gcc-c++ flex bison autoconf automake bzip2-devel \
> ncurses-devel zlib-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel libXpm-devel \
> gettext-devel pam-devel libtool libtool-ltdl openssl openssl-devel fontconfig-devel \
> libxml2-devel curl-devel libicu libicu-devel libmcrypt libmcrypt-devel libmhash libmhash-devel
三、同步系统时间:
vim /etc/ntp.conf //添加下面三行内容
然后同步时间,重启ntp服务,操作如下:
[root data]$ service ntpd stop
关闭 ntpd: [失败]
[root data]$ ntpdate cn.pool.ntp.org
18 Dec 15:09:59 ntpdate[11495]: step time server 119.57.127.125 offset -28806.680250 sec
[root data]$ date
2014年 12月 18日 星期四 15:10:03 CST
[root data]$ service ntpd start
正在启动 ntpd: [确定]
[root data]$ chkconfig ntpd on
四、进制apache安装,版本要2.2及以上
[root data]$cd /usr/local/src
[root src]$wget http://archive.apache.org/dist/httpd/httpd-2.2.19.tar.gz
[root src]$tar xvf httpd-2.2.19.tar.gz
[root src]$ cd httpd-2.2.19
./configure --prefix=/usr/local/apache \
--enable-so --enable-rewrite \
--enable-mods-shared=most --sysconfdir=/etc/httpd
[root httpd-2.2.19]$ make && make install
安装完后启动,启动报Could not ....,修改下ServerName就不报这样的错了
[root httpd-2.2.19]$ /usr/local/apache/bin/apachectl start
httpd: Could not reliably determine the server's fully qualified domain name, using localhost.localdomain for ServerName
[root httpd-2.2.19]$ netstat -tnlp |grep httpd
tcp 0 0 :::80 :::* LISTEN 24810/httpd
[root httpd-2.2.19]$ cp /usr/local/webserver/apache/bin/apachectl /etc/init.d/httpd
[root httpd-2.2.19]$ cp /usr/local/apache/bin/apachectl /etc/init.d/httpd
[root httpd-2.2.19]$ grep "ServerName" /etc/httpd/httpd.conf
# ServerName gives the name and port that the server uses to identify itself.
ServerName 127.0.0.1:80
[root httpd-2.2.19]$ service httpd restart
添加开机启动:
[root httpd-2.2.19]$chkconfig --add httpd
[root httpd-2.2.19]$chkconfig httpd on
MySQL我已经安装,在这就不演示这个过程了,可以到官网下载5.5版本的MySQL,然后用我写的脚本安装http://www.cnblogs.com/xuanzhi201111/p/4119065.html
五、进行PHP安装
安装php前安装,否则可能出现以下错误:
configure: error: mcrypt.h not found. Please reinstall libmcrypt
[root src]$wget http://softlayer.dl.sourceforge.net/sourceforge/mcrypt/libmcrypt-2.5.8.tar.gz[root src]$ tar zxf libmcrypt-2.5.8.tar.gz
[root src]$ cd libmcrypt-2.5.8[root libmcrypt-2.5.8]$ ./configure --prefix=/usr/local && make && make install
下载PHP并安装,版本要5.3以上,下面要注意的是,php安装涉及了你安装apache和mysql的路径,这个要特别注意的:
[root src]$ [root src]$ zxf php-...gz
[root src]$ cd php-.[root php-.]$./configure --prefix=/usr/local/php \
--mandir=/usr/local/share/ \
--infodir=/usr/local/share/ \
--with-apxs2=/usr/local/apache/bin/apxs \
--enable-cgi --with-mysql=/usr/local/mysql-./ \
--with-config--path=/usr/local/php/etc \
--with-pdo-mysql=/usr/local/mysql-. \
--with-mysqli=/usr/local/mysql-./bin/mysql_config \
--enable- --enable-sqlite-utf8 -enable-sockets \
--enable-soap --enable-pcntl --enable-mbstring \
--enable-intl --enable-calendar --enable-bcmath \
--enable-exif --with-mcrypt --with-mhash --with-gd \
--with-png- --with-jpeg- --with-freetype- \
--with-libxml- --with-curl --with-curlwrappers \
--with-zlib --with-openssl --with-kerberos=shared \
--with-gettext=shared --with-xmlrpc=shared
[root php-
拷贝配置文件:
[root php-5.5.19]$ cp php.ini-production /usr/local/php/etc/php.ini
然后修改apache的配置文件:
[root php-5.5.19]$ vim /usr/local/apache/conf/httpd.conf
添加以下内容:
查找AddType application/x-gzip .gz .tgz,在该行下面添加
AddType application/x-httpd-php .php
查找DirectoryIndex index.html 把该行修改成
DirectoryIndex index.html index.htm index.php
重启apache,在/usr/local/apache/htdocs/下vim index.php,操作如下:
[root htdocs]$ service httpd restart
[root htdocs]$ pwd/usr/local/apache/htdocs
[root htdocs]$ cat index.php
<?php
phpinfo();
?>
在防火墙里添加80端口,并重启,然后请问index.php:
http://ip/index.php,如果得到下图,意味着apache整合php成功了
六、进行python安装,推荐2.7版本,其他版本未做测试,执行数据采集和报警任务
[root src]$ wget http://www.python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2[root src]$ tar jxf Python-2.7.2.tar.bz2
[root src]$ cd Python-2.7.2[root Python-2.7.2]$ ./configure --prefix=/usr/local/Python2.7 --enable-shared make && make install[root Python-2.7.2]$ mv /usr/bin/python /usr/bin/pythonbak
[root Python-2.7.2]$ ln -sf /usr/local/Python2.7/bin/python /usr/bin/python
查看Python版本,如果报少了库文件,vim /etc/ld.so.conf添加/usr/local/Python2.7/lib,执行ldconfig刷新配置文件
[root Python-2.7.2]$ python -V
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
[root Python-2.7.2]$ cat /etc/ld.so.conf
include ld.so.conf.d/*.conf
/usr/local/Python2.7/lib
[root Python-2.7.2]$ ldconfig
[root Python-2.7.2]$ python -V
Python 2.7.2
如果python升级到2.7以后出现yum无法使用的情况,错误为No module named yum,请按照如下步骤处理,将yum使用的python版本改为旧版本,第一行修改为如下即可:
[root htdocs]$ vim /usr/bin/yum #!/usr/bin/python2.6
七、安装MySQLdb for python
[root src]$ wget http://www.mtop.cc/software/MySQLdb-python.zip[root src]$ unzip MySQLdb-python.zip[root src]$ cd MySQLdb1-master
[root MySQLdb1-master]$ vim site.cfg
vim site.cfg添加你安装的mysql路径下的mysql_config:
添加完再执行python setup.py build可能报以下错:
[root MySQLdb1-master]$ python setup.py build
error: command 'gcc' failed with exit status 1
解决方法:
[root MySQLdb1-master]$ yum install gcc python-devel
再执行安装:
[root MySQLdb1-master]$ python setup.py build
[root MySQLdb1-master]$ python setup.py install
基本环境已经安装OVER了,下面去官网下载开源的管理软件包:http://www.lepus.cc/soft/index,要注册账号的
八、安装MySQL MTOP系统
监控机创建监控数据库,并授予权限,导入SQL文件
mysql> create database mysqlmtop default character set utf8;
Query OK, 1 row affected (0.07 sec) mysql> grant select,insert,update,delete,create,drop on mysqlmtop.* to 'mtop_user'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.04 sec) mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)
下载后解包:
[root src]$ unzip MySQLMTOP.zip[root src]$ cd mysqlmtop2.2[root sql]$ pwd/usr/local/src/mysqlmtop2.2/sql
[root sql]$ lsmysqlmtop_data.sql mysqlmtop.sql
监控机(即MySQL MTOP server)创建监控数据库,并授予权限,导入SQL文件夹里的SQL文件(表结构和数据文件):
[root sql]$ mysql -uroot -p123456 -S /data/mysql-5.6.10/mysql.sock mysqlmtop < ./mysqlmtop.sql
[root sql]$ mysql -uroot -p123456 -S /data/mysql-5.6.10/mysql.sock mysqlmtop < ./mysqlmtop_data.sql
[root sql]$ mv /usr/local/src/mysqlmtop2.2 /usr/local/mysqlmtop
对被监控的数据库进行授权
在python采集数据的过程中,需要连接到需要监控的数据库服务器采集数据,我们为了安全考虑,在WEB管理里面只要求录入主机和端口,没有录入账号和密码。所有需要监控的数据库请授予相同的用户密码记录在配置文件中。授权如下所示:
grant select,super,process on *.* to 'monitor'@'ip' identified by 'monitor';
九、安装数据采集和报警系统
修改监控系统配置文件,进到/usr/local/mysqlmtop/mysqlmtop/etc,修改config.ini
[root etc]$ pwd/usr/local/mysqlmtop/mysqlmtop/etc
[root etc]$ vim config.ini
授予可执行文件执行权限
[root mysqlmtop]$ pwd/usr/local/mysqlmtop/mysqlmtop
[root mysqlmtop]$ chmod +x *.py
[root mysqlmtop]$ chmod +x *.sh[root mysqlmtop]$ chmod +x mtopctl
[root mysqlmtop]$ ln -s /usr/local/mysqlmtop/mysqlmtop/mtopctl /usr/local/bin/
测试MySQL连接,报错了,别慌
[root mysqlmtop]$ ./test_mysql.py
Traceback (most recent call last):
File "./test_mysql.py", line 6, in <module>
import MySQLdb
File "/usr/lib64/python2.6/site-packages/MySQL_python-1.2.4-py2.6-linux-x86_64.egg/MySQLdb/__init__.py", line 19, in <module>
import _mysql
ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory
解决方法:
如果是64系统则:
[root mysqlmtop]$ ln -s /usr/local/mysql-5.6.10/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.1832位系统:
[root mysqlmtop]$ ln -s /usr/local/mysql-5.6.10/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
如果是通过socket文件连接MySQL的话 可能会报以下错:
mysql_exceptions.OperationalError: (2002, "Can't connect to local MySQL server through socket '/tmp/mysql.sock' (111)")
添加一下链接:
[root mysqlmtop]$ ln -s /data/mysql-5.6.10/mysql.sock /tmp/mysql.sock
再执行测试脚本,看到OK就正常连接成功了:
[root mysqlmtop]$ ./test_mysql.py
MySQLDB OK!
修改下启动脚本mtopctl(注意路径),再启动监控系统(注意:只有监控进程运行时系统才会进行监控和报警)
启动:
[root mysqlmtop]$ mtopctl start
nohup: 把输出追加到"nohup.out"mysql mtop start success!
使用--help查看监控系统进程管理参数,分别有start、stop、status
[root mysqlmtop]$ mtopctl --help
mysql mtop help:
support-site:www.mtop.cc www.ruzuojun.com
====================================================================
start Start mysql mtop monitor server; Command: #mtopctl start
stop Stop mysql mtop monitor server; Command: #mtopctl stop
status Check mysql mtop monitor run status; Command: #mtopctl status
十、安装WEB管理界面
把/usr/local/mysqlmtop/frontweb下的所有文件传到apache的/usr/local/apache/htdocs/
[root frontweb]$ pwd/usr/local/mysqlmtop/frontweb
[root frontweb]$ cp -a * /usr/local/apache/htdocs/
打开application/config/database.php文件,修改PHP连接监控服务器的数据库信息
[root@localhost config]# pwd/usr/local/apache/htdocs/application/config
root@localhost config]# vim database.php
修改username填刚刚在MySQL授权用户,password也就是对应的密码,mysqlmtop是对应的库,修改这三个即可
可以通过浏览器去访问了:http://ip
最好把默认的index.html删除了,这样才走index.php,默认管理员账号密码admin/admin 登录后请修改密码,增加普通账号
看一下功能:
哈哈,是不是很吸引呢,功能非常强大,大家可以研究下
总结:
一、该系统是开源的系统,如果搭建在公网,一定要做好各种访问控制,做好各方面的安全工作
二、该系统功能比较多,可以帮助MySQL DBA或运维DBA对管理MySQL及查看其性能
三、可能该系统存在一些小bug,例如发不出邮件啊,这些就要根据自己能力去完善了,如果会python,可以去掉没用的,加上自己想要的功能
详细参考资料 MySQLMTOP官网:http://www.mtop.cc/
MySQL数据库监控的更多相关文章
- mysql数据库监控利器lepus天兔工具安装和部署
需要的核心包如下:以下软件包只需要部署在监控机即可.被监控机无需部署.1.MySQL 5.0及以上(必须,用来存储监控系统采集的数据)2.Apache 2.2及以上 (必须,WEB服务器运行服务器)3 ...
- MYSQL性能优化之Mysql数据库监控
监控对象 数据库可用性监控数据库进程或是端口存在并不意味着数据库就是可用的 也就是说登陆服务器,并且能正确执行mysql命令 数据库性能 QPS和DPS并发线程数量(同时执行sql语句的数量,不是连接 ...
- Win7下部署Lepus企业级MySQL数据库监控
从官网下载(http://www.lepus.cc/soft/17)安装包后,解压到phpStudy的www目录下: 打开phpStudy管理界面,找到站点管理,并新增站点: 在浏览器里面打开后,报此 ...
- zabbix实现mysql数据库的监控(二)
上章我们把zabbix的服务端和客户端都部署完成了,本章接着进行两部分的设置: 1 添加对mysql数据库主机的监控 2 添加对mysql数据库的监控 一.对数据库服务器主机监控 1 创建主机 步 ...
- zabbix实现mysql数据库的监控(一)
zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案.它能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问 ...
- zabbix通过第三方插件percona监控mysql数据库
zabbix通过第三方插件percona监控mysql数据库 ...
- zabbix利用自带的模板监控mysql数据库
zabbix利用自带的模板监控mysql数据库 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 有些东西你不会的时候觉得它特别难,但是当你去做的时候就发现如此的简单~zabbix功能 ...
- 实时监控mysql数据库变化
对于二次开发来说,很大一部分就找找文件和找数据库的变化情况 对于数据库变化.还没有发现比较好用的监控数据库变化监控软件. 今天,我就给大家介绍一个如何使用mysql自带的功能监控数据库变化 1.打开数 ...
- zabbix3.4 监控mysql 数据库连接数
zabbix3.4 监控mysql 数据库连接数具体监控配置待定,近期即将发布!
随机推荐
- win8开发wpf程序遇到的无语问题
在设置wpf程序全屏后,点击某个listbox列表,发现程序下面出现了任务栏. 查找解决答案未果.仔细一想可能是win8系统的问题. 最后试着把listbox的滚动条去掉了,问题解决. 原因:当程序中 ...
- Session原理浅析
什么是Sesson? 简单说就是一个会话级的cookie,外加服务器端内存中一组散列表. 当你关闭浏览器的时候,这个cookie将消失. 这个cookie不写在磁盘上,而是存在于浏览器缓存. 关于Se ...
- C#冒泡排序
C#最简单的冒泡排序,需要的朋友可作参考: 思路: 使用两个for循环,就可以遍历数组,这样就可以确保每个数组元素都被使用 对比前后两个数,将小的数字和大的交换位置,引入一个临时变量temp来进行交换 ...
- iOS开发-正则表达式的使用方法
前言:在表单验证中,我们经常会使用到正则,因为我们需要用它来判断用户输入的字符是否为合法的,如果是不合法的,那么应该提示用户输入错误,并不让提交至服务器.我们也可以通过正则表达式,从用户输入的字符串中 ...
- 数据结构和算法 – 7.散列和 Hashtable 类
7.1.散列函数 散列是一种常见的存储数据的技术,按照这种方式可以非常迅速地插入和取回数据.散列所采用的数据结构被称为是散列表.尽管散列表提供了快速地插入.删除.以及取回数据的操作,但是诸如查找最大值 ...
- SVM 最大间隔目标优化函数(NG课件2)
目标是优化几何边距, 通过函数边距来表示需要限制||w|| = 1 还是优化几何边距,St去掉||w||=1限制转为普通函数边距 更进一步的,可以固定函数边距为1,调节||w| ...
- JAVA基础学习之IP简述使用、反射、正则表达式操作、网络爬虫、可变参数、了解和入门注解的应用、使用Eclipse的Debug功能(7)
1.IP简述使用//获取本地主机ip地址对象.InetAddress ip = InetAddress.getLocalHost();//获取其他主机的ip地址对象.ip = InetAddress. ...
- MVC中数据的内部校验
针对MVC中实例类型的修饰,我们可以采用DataAnnotations类来完成,该类所处的命名空间是System.ComponentModel.DataAnnotations; 一.通过开类型,能够修 ...
- 【Java EE 学习 21 下】【使用java实现邮件发送、邮件验证】
一.邮件发送 1.邮件发送使用SMTP协议或者IMAP协议,这里使用SMTP协议演示. SMTP协议使用的端口号:25 rfc821详细记载了该协议的相关信息 (1)使用telnet发送邮件(使用12 ...
- SQL高级查询之一
一,子查询 SELECT e.emp_id, e.fname, e.lname FROM (SELECT emp_id, fname, lname, start_date, title FROM em ...