mysql mtop 使用_MYSQLMTOP监控环境搭建

MySQLMTOP是一个由Python+PHP开发的MySQL企业级监控系统。系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理。最重要是MySQL服务器无需安装任何Agent,只需在监控WEB界面配置相关数据库信息

功能非常强大:

可对上百台MySQL数据库的状态、连接数、QTS、TPS、数据库流量、复制、性能等进行时时监控

能在数据库偏离设定的正常运行阀值(如连接异常,复制异常,复制延迟) 时发送告警邮件通知到DBA进行处理

对历史数据归档,通过图表展示出数据库近期状态,以便DBA和开发人员能对遇到的问题进行分析和诊断

系统主要由仪表盘、状态监控、进程监控、复制监控、慢查询分析、性能图表、工具组件、告警事件、系统资源等子系统组成,每个子系统负责完成特定信息的采集和展示

一、系统安装需求

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的接口)

二、 安装必备的开发包[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  //添加下面三行内容

181904157358929.png

然后同步时间,重启ntp服务,操作如下:

copycode.gif[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]$ date2014年 12月 18日 星期四 15:10:03 CST

[root data]$ service ntpd start

正在启动 ntpd:                                            [确定]

[root data]$ chkconfig ntpd on

copycode.gif

四、进制apache安装,版本要2.2及以上

copycode.gif[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

copycode.gif

安装完后启动,启动报Could not ....,修改下ServerName就不报这样的错了

copycode.gif[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

copycode.gif

添加开机启动:[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的路径,这个要特别注意的:

copycode.gif[root src]$  [root src]$  zxf php-..-.-.]$./configure --prefix=/usr/local/--mandir=/usr/local/share/--infodir=/usr/local/share/--with-apxs2=/usr/local/apache/bin/--enable-cgi --with-mysql=/usr/local/mysql-./--with-config--path=/usr/local/php/--with-pdo-mysql=/usr/local/mysql-.--with-mysqli=/usr/local/mysql-./bin/--enable- --enable-sqlite-utf8 -enable---enable-soap --enable-pcntl --enable---enable-intl --enable-calendar --enable---enable-exif --with-mcrypt --with-mhash --with---with-png- --with-jpeg- --with-freetype---with-libxml- --with-curl --with---with-zlib   --with-openssl --with-kerberos=--with-gettext=shared --with-xmlrpc=shared

[root php-

copycode.gif

拷贝配置文件:[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,操作如下:

copycode.gif[root htdocs]$ service httpd restart

[root htdocs]$ pwd/usr/local/apache/htdocs

[root htdocs]$ cat index.php

phpinfo();?>

copycode.gif

在防火墙里添加80端口,并重启,然后请问index.php:http://ip/index.php,如果得到下图,意味着apache整合php成功了

181910542662784.png

六、进行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刷新配置文件

copycode.gif[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

copycode.gif

如果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:

181921426573937.jpg

添加完再执行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文件

copycode.gifmysql> 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)

copycode.gif

下载后解包:[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 

[root sql]$ mysql -uroot -p123456 -S /data/mysql-5.6.10/mysql.sock  mysqlmtop 

[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

181940102517347.jpg

授予可执行文件执行权限[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连接,报错了,别慌

copycode.gif[root mysqlmtop]$ ./test_mysql.py 

Traceback (most recent call last):

File "./test_mysql.py", line 6, in 

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 

import _mysql

ImportError: libmysqlclient.so.18: cannot open shared object file: No such file or directory

copycode.gif

解决方法:如果是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(注意路径),再启动监控系统(注意:只有监控进程运行时系统才会进行监控和报警)

181949359542240.png

启动:[root mysqlmtop]$ mtopctl  start

nohup: 把输出追加到"nohup.out"mysql mtop start success!

使用--help查看监控系统进程管理参数,分别有start、stop、status

copycode.gif[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

copycode.gif

十、安装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是对应的库,修改这三个即可

181954287662929.jpg

可以通过浏览器去访问了:http://ip

最好把默认的index.html删除了,这样才走index.php,默认管理员账号密码admin/admin 登录后请修改密码,增加普通账号

182003004232510.jpg

看一下功能:

182003252514528.jpg

哈哈,是不是很吸引呢,功能非常强大,大家可以研究下

总结:

一、该系统是开源的系统,如果搭建在公网,一定要做好各种访问控制,做好各方面的安全工作

二、该系统功能比较多,可以帮助MySQL DBA或运维DBA对管理MySQL及查看其性能

三、可能该系统存在一些小bug,例如发不出邮件啊,这些就要根据自己能力去完善了,如果会python,可以去掉没用的,加上自己想要的功能

详细参考资料 MySQLMTOP官网:http://www.mtop.cc/

作者:陆炫志

您的支持是对博主最大的鼓励,感谢您的认真阅读。本文版权归作者所有,欢迎转载,但请保留该声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472825.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Hive是如何让MapReduce实现SQL操作的?

learn from 从0开始学大数据(极客时间) 1. MapReduce 实现 SQL 的原理 SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;实现过程: 2. Hive 的架构 Hive 能够直接处理我们输入的 SQL 语句(Hive SQL 语法与 标…

mysql spring隔离级别_MySQL事务与Spring隔离级别实现

1、事务具有ACID特性原子性(atomicity):一个事务被事务不可分割的最小工作单元,要么全部提交,要么全部失败回滚。一致性(consistency):数据库总是从一致性状态到另一个一致性状态,它只包含成功事务提交的结果隔离型(is…

Java JDK 安装配置

文章目录1. 下载安装2. 配置环境变量3. 检查安装成功1. 下载安装 下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html(需要注册下载) 以下操作环境:WIN 10 2. 配置环境变量 JAVA_HOME 为…

mqtt如何判断设备离线_反渗透纯水设备膜元件如何离线清洗?

原标题:反渗透纯水设备膜元件如何离线清洗?在反渗透设备正常运行,无故障时,反渗透系统一般都用在线清洗保养、冲击性杀菌以及定期保护。但是,如果当反渗透膜元件重度污染时,在线清洗就显得无能为力了&#…

Java 变量、数据类型

文章目录1. 变量、常量2. 数据类型1. 变量、常量 final 修饰常量 public class Variable {static final int YEAR 365;// 常量使用 final 修饰, 不可修改,类似C的 conststatic int day 0;// 成员变量public static void main(String[] args){System.out.println…

html背景图不显示_批量显示多张有序排列的图标,使用精灵图CSS Sprites这种办法...

让你显示一个天气图标你会怎么显示呢&#xff1f;让你做一个简单的动图你会怎么采用什么方式呢&#xff1f;让你输出一个长期固定的图标列表你会怎么编写代码呢&#xff1f;如果不管性能&#xff0c;不用css&#xff0c;不用js&#xff0c;可能你会这么写html&#xff1a;<类…

mysql堵塞等级_MySQL 事务隔离级别

前言简单来说&#xff0c;数据库事务就是保证一组数据操作要么全部成功&#xff0c;要么全部失败。在 MySQL 中&#xff0c;事务是在引擎层实现的。原生的 MyISAM 引擎不支持事务&#xff0c;也是为什么 InnoDB 会取代它的重要原因之一。隔离性与隔离级别当数据库上有多个事务同…

Java 运算符、表达式、语句

文章目录1. 运算符2. 表达式3. 语句1. 运算符 赋值运算 , -, *, /, % 算术运算 , -, !, ~ 一元运算 关系运算 >, <, >, <, , ! 返回布尔 递增&#xff0c;递减--&#xff0c;支持&#xff08;float&#xff0c;double&#xff09;1, -1 逻辑运算 &&…

arrays中copyof复制两个数组_Java的数组初识和拷贝用法

方法重载&#xff1a;方法名称相同&#xff0c;参数列表不同。不能有两个名字相同、参数类型相同&#xff0c;返回值不同的方法。在进行方法重载时&#xff0c;方法的返回值一定相同&#xff01;&#xff01;&#xff01;方法递归特点&#xff1a;1.必须有结束条件2.每次递归处…

你不知道的 字符集和编码(编码字符集与字符集编码)

我的上篇文章&#xff0c;有朋友提出字符集和编码的区别&#xff0c;我在此立文和大家讨论下 常说的字符集和编码区别&#xff0c;其实就是编码字符集和字符集编码的区别&#xff0c;其实&#xff0c;单单如果只是说字符集&#xff0c;没有任何编码的概念的话&#xff0c;那么字…

hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控

作者简介&#xff1a;张博&#xff0c;网易高级信息安全工程师。0x00 简介在入侵检测的过程中&#xff0c;进程创建监控是必不可少的一点&#xff0c;因为攻击者的绝大多数攻击行为都是以进程的方式呈现&#xff0c;所以及时获取到新进程创建的信息能帮助我们快速地定位攻击行为…

hive 创建表_2min快速了解,Hive内部表和外部表

在了解内部表和外部表区别前&#xff0c;我们需要先了解一下Hive架构 &#xff1a;大家可以简单看一下这个架构图&#xff0c;我介绍其中要点&#xff1a;Hive的数据分为两种&#xff0c;一种为普通数据&#xff0c;一种为元数据。元数据存储着表的基本信息&#xff0c;增删改查…

C#微信公众号开发系列教程二(新手接入指南)

此系列前面已经更新了两篇博文了&#xff0c;都是微信开发的前期准备工作&#xff0c;现在切入正题&#xff0c;本篇讲解新手接入的步骤与方法&#xff0c;大神可直接跳过&#xff0c;也欢迎大神吐槽。 微信公众号开发系列教程一&#xff08;调试环境部署&#xff09; 微信公众…

fastdfs windows部署_Go在windows下编译Linux可执行文件

欢迎关注我的头条号&#xff1a;Wooola&#xff0c;专注于Java、Golang、微服务架构&#xff0c;致力于每天分享原创文章、快乐编码和开源技术。前言最近楼主做了一个滑块验证码登录功能&#xff0c;但有个问题&#xff0c;悲观估计一天大约会产生两百多G临时图片放在fastdfs文…

我们并没有觉得MapReduce速度慢,直到Spark出现

learn from 从0开始学大数据&#xff08;极客时间&#xff09; Spark 拥有更快的执行速度 更友好的编程接口 迅速抢占 MapReduce 的市场份额&#xff0c;成为主流的大数据计算框架 val textFile sc.textFile("hdfs://...") // 根据 HDFS 路径生成一个输入数据 RDD v…

LeetCode 1178. 猜字谜(状态压缩+枚举二进制子集+哈希)

文章目录1. 题目2. 解题1. 题目 外国友人仿照中国字谜设计了一个英文版猜字谜小游戏&#xff0c;请你来猜猜看吧。 字谜的迷面 puzzle 按字符串形式给出&#xff0c;如果一个单词 word 符合下面两个条件&#xff0c;那么它就可以算作谜底&#xff1a; 单词 word 中包含谜面 …

elasticsearch 工作原理_【154期】面试官:你能说说 Elasticsearch 查询数据的工作原理是什么吗?...

点击上方“Java面试题精选”&#xff0c;关注公众号面试刷图&#xff0c;查缺补漏>>号外&#xff1a;往期面试题&#xff0c;10篇为一个单位归置到本公众号菜单栏->面试题&#xff0c;有需要的欢迎翻阅阶段汇总集合&#xff1a;一百期面试题汇总面试题ES 写入数据的工…

java会被淘汰吗_Java不会被淘汰的12个原因

如今&#xff0c;面对曾经在程序员中被各种新技术掩盖直至堙灭的技术值得怀念。犹如COBOL这当年被老程序员们尊为神器的语言如今也基本没有价值。而Java作为现代程序员的中坚力量在这点上或许会成为下一个COBOL。有关JAVA的技术卖出多少本书已经是一个很久远的记忆了。现处中年…

java操作redis的操作_Java操作redis简单示例

第一&#xff1a;安装Redis首先我们要安装Redis&#xff0c;就像我们操作数据库一样&#xff0c;在操作之前肯定要先创建好数据库的环境。Redis的下载可以百度一下&#xff0c;或者打开下面的下载链接&#xff1a;https://github.com/MSOpenTech/redis也可以从我的百度网盘下载…

myeclipse启动报JVM terminated. Exit code=1

报错信息如图&#xff1a; 解决办法&#xff1a; 删除当前workspaces下文件夹&#xff0c;路径为&#xff1a;%Workspaces%/.metadata/.plugins/org.eclipse.core.runtime转载于:https://www.cnblogs.com/tancp/p/4102866.html