mysql慢sql报警系统
前言:最近有同事反应有的接口响应时间时快时慢,经过排查有的数据层响应时间过长,为了加快定位定位慢sql的准确性,决定简单地搭建一个慢sql报警系统
具体流程如下架构图

第一步:记录日志
每个业务系统都会在都会有自己的查询语句,所有的sql语句最红都会 我们先开启每个mysql的慢sql采集配置
1.将 slow_query_log 全局变量设置为“ON”状态
mysql> set global slow_query_log='ON';
2.设置慢查询日志存放的位置
3.mysql> set global slow_query_log_file='/usr/local/mysql/data/slow.log';
设置慢sql的时间
mysql> set global long_query_time=1;
测试一下
select sleep(3);去第二步设置的路径找到日志文件,打开日志发现会有一条记录
第二步:采集日志
当记录下所有的日志文件的之后,我们就需要采集,和传统的ELK那套模式一致,用filebeat去搜集(filebeat采集的原理就不多说介绍了),采集完成后就统一传输到logstash
第三步:格式化数据
当logstash得到这些数据之后,需要格式化Elasticsearch需要的格式
注意:我们采集到日志格式中无法区分sql类型,比如select * from user where userId=2 和 select * from user where userId=5 是同一种类型,但是原始日志采集过来的数据无法判断,我们需要特殊处理一下:
1:用正则表达式把所有 数字和引号“”里面的内容都替换成?,
2:然后把返回的值用加密算法加密一下,得到一个新的字段
改字段就可以表明是某种类型的sql
第四步:分析和展示数据
Elasticsearch得到logstash传来的数据之后,就可以来检索了(sql_for_hash字段就行用来判别sql类型的字段)

第五步:报警功能
以上四步基本完成了mysql慢sql的采集分析过程,接下里就是报警功能,采用每小时(可以更短)去扫描es的中数据,根据日志中出现的查询时间以及每小时出现的次数决定报警级别,调用消息中心的报警接口进行报警,这样开发员人能够实时地接收到慢sql的出现的情况以便及时排除解决问题(后台也写了一个简单的统计页面方便查看)

mysql慢sql报警系统的更多相关文章
- Mysql 常用 SQL 语句集锦
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- PHP+MYSQL网站SQL Injection攻防
程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程:他们会先尝试着让程序报 ...
- 【转】MySQL批量SQL插入各种性能优化
原文:http://mp.weixin.qq.com/s?__biz=MzA5MzY4NTQwMA==&mid=403182899&idx=1&sn=74edf28b0bd29 ...
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
Mysql 常用 SQL 语句集锦 基础篇 //查询时间,友好提示 $sql = "select date_format(create_time, '%Y-%m-%d') as day fr ...
- MySQL数据库sql语句的一些简单优化
1.查询条件的先后顺序 有多个查询条件时,要把效率高能更精确筛选记录的条件放在后边.因为MySQL解析sql语句是从后往前的(不知是否准确). 例: select a.*,b.* from UsrIn ...
- HP+MYSQL网站SQL Injection攻防
WebjxCom提示:程序员们写代码的时候讲究TDD(测试驱动开发):在实现一个功能前,会先写一个测试用例,然后再编写代码使之运行通过.其实当黑客SQL Injection时,同样是一个TDD的过程: ...
- MySQL与SQL比较有那些区别呢
MySQL是一个逐渐完善的过程,使用前期版本时会遇到一些问题,通常搞得莫名其妙,在版本选择上尽量选择最新的. 1.在5.03以前版本中,存储varchar型数据时,后面的空格会被忽视掉,前面的空格会保 ...
- mysql下sql语句 update 字段=字段+字符串
mysql下sql语句 update 字段=字段+字符串 mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgr ...
- Oracle、MySql、Sql Server比对
1. 价格 MySql:廉价(部分免费):当前,MySQL採用双重授权(DualLicensed),他们是GPL和MySQLAB制定的商业许可协议.假设你在一个遵循GPL的自由(开源)项目中使用 ...
随机推荐
- python net-snmp使用
安装 官网:http://www.net-snmp.org/download.html 环境:CentOS 6.6 + python 2.7.10 1.下载安装包 net-snmp-5.6.2.1.t ...
- P3572 [POI2014]PTA-Little Bird
P3572 [POI2014]PTA-Little Bird 一只鸟从1跳到n.从1开始,跳到比当前矮的不消耗体力,否则消耗一点体力,每次询问有一个步伐限制k,求每次最少耗费多少体力 很简短的题目哼. ...
- python---RabbitMQ(5)消息RPC(远程过程调用)
服务器端: import pika #创建socket connection = pika.BlockingConnection(pika.ConnectionParameters( host='lo ...
- python---Django中模型类中Meta元对象了解
Django中模型类中Meta元对象了解 1.使用python manage.py shell 进入编辑命令行模式,可以直接进入项目(为我们配置好了环境) python manage.py shell ...
- Windows下php,mysql,apache相关安装与配置,完善中…
PHP 的安装 由于php是一个zip文件(非install版),安装较为简单解压就行.把解压的 php5.2.1-Win32重命名为 php5.并复制到安装盘目录下.例如安装路径为 c:\php5 ...
- 让vcmi支持英雄无敌3中文版
Table of Contents 1 Hack 日志 2 Changes 3 Install by compiling 4 reply of Ivan 1 Hack 日志 8月22日开始动手修改改v ...
- 边框画的三角形给shadow
本文地址:http://www.cnblogs.com/veinyin/p/8690882.html 要写一个对话气泡样式,我们首先想到的当然给是一个盒子,然后用边框画一个三角形定位过去. 如果不需 ...
- 介绍一个强大的画图类 CImage(转)
我们知道,Visual C++的CBitmap类和静态图片控件的功能是比较弱的,它只能显示出在资源中的图标.位图.光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件( ...
- HDU 2063 过山车 二分匹配
解题报告:有m个女生和n个男生要结成伴坐过山车,每个女生都有几个自己想选择的男生,然后要你确定最多能组成多少对组合. 最裸的一个二分匹配,这是我第一次写二分匹配,给我最大的感受就是看那些人讲的匈牙利算 ...
- transform动画效果
transform动画效果 transform :移动,旋转.倾斜.缩放. transform:translate(0,300px); x代表的是水平的偏移距离,y代表垂直的. t ...