新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > IT百科 > 程序开发 > 编程百科

当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

时间:2019-12-04 10:02:41  来源:  作者:

概述

今天主要介绍如何用slowquery工具来配置邮件告警,仅供参考。


1、修改邮件配置

进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息。

<?php

$get_mail_content = get_include_contents('get_top100_slowsql.php');

function get_include_contents($filename) {
 if (is_file($filename)) {
 ob_start();
 include $filename;
 $contents = ob_get_contents();
 ob_end_clean();
 return $contents;
 }
 return false;
}

 $smtpserver = "xx.xxcom";//SMTP服务器
 $smtpserverport = 587;//SMTP服务器端口
 $smtpusermail = "xx.xx.xx";//SMTP服务器的用户邮箱
 $smtpemailto = 'huangwbxx';//发送给谁
 $smtpuser = "xunjian";//SMTP服务器的用户帐号,注:部分邮箱只需@前面的用户名
 $smtppass = "xxxxx";//SMTP服务器的授权码
 $mailtitle='【告警】慢查询报警推送TOP100条,请及时优化.';
 $mailcontent='下面的慢查询语句或许会影响到数据库的稳定性和健康性,请您在收到此邮件后及时优化语句或代码。数据库的稳定性需要大家的共同努力,感谢您的配合!<br><br>' .$get_mail_content .'<br><
br>该邮件由slowquery系统自动发出,请勿回复,语句详细执行情况请登录<a href="http://1xx.xx.xx.xx/slowquery/slowquery.php">slowquery系统查看.<br><br>';
system("./sendEmail -f $smtpusermail -t $smtpemailto -s $smtpserver:$smtpserverport -u '$mailtitle' -o message-charset=utf8 -o message-content-type=html -m '$mailcontent' -xu $smtpusermail 
-xp '$smtppass'");
?>

 


2、设置定时任务

每隔3小时慢查询报警推送一次:

 0 */3 * * * cd /var/www/html/slowquery/alarm_mail;/usr/bin/php /var/www/html/slowquery/alarm_mail/sendmail.php > /dev/null 2>&1

 

当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

 

 


3、邮件内容

可以看到邮件内容如下:

当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

 


常见报错

1、PHP Warning: MySQLi_connect(): Headers and client library minor version mismatch. Headers:50550 Library:50637 in /var/www/html/slowquery/config.php on line 5

 

当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

 

 

当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

 

可以发现header version => 5.5.47-MariaDB这个是个奇葩,版本号不一样,怪不得报错了。考虑当前安装的是php-mysql驱动,而当前的php版本比较新,于是想到这个奇葩是不是因为驱动版本较低生成的,尝试:先卸载较低版本的php-mysql驱动,再升级安装新版的php-mysqlnd驱动。

yum remove php-mysql
yum install php-mysqlnd

重启下httpd和mysql服务:

systemctl restart httpd
systemctl restart mysqld
php -i|grep Client
当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

 

版本全统一了,问题解决

2、invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415.

centos7.2默认是 perl的版本是5.16,centos6.5的是5.10,后来把7的版本换成5.10,就可以正常发邮件了。

解决:

wget http://www.cpan.org/src/5.0/perl-5.10.0.tar.gz
tar -zxf perl-5.10.0.tar.gz
cd perl-5.10.0
./configure.gnu -des -Dprefix=/usr/local/perl
echo $?
make && make install
mv /usr/bin/perl /usr/bin/perl.bak
ln -s /usr/local/perl/bin/perl /usr/bin/perl
perl -v
当生产环境出现慢查询sql时,如何触发邮件告警并推送慢查询?

 



Tags:慢查询   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
概述今天主要介绍如何用slowquery工具来配置邮件告警,仅供参考。1、修改邮件配置进入到slowquery/alarm_mail/目录里,修改sendmail.php配置信息。<?php$get_mail_content = ge...【详细内容】
2019-12-04   慢查询  点击:(0)  评论:(0)  加入收藏
慢查询,大家可能已经接触到了MySQL的慢查询。我们配置一个时间,如果查询时间超过了我们设置的时间,我们就认为这是一个慢查询. 如上图所示:Redis客户端一条命令执行分4个步骤: 发...【详细内容】
2019-11-29   慢查询  点击:(7)  评论:(0)  加入收藏
一、问题背景现网出现慢查询,在500万数量级的情况下,单表查询速度在30多秒,需要对sql进行优化,sql如下: 我在测试环境构造了500万条数据,模拟了这个慢查询。简单来说,就是查询一定...【详细内容】
2019-09-20   慢查询  点击:(59)  评论:(0)  加入收藏
Redis数据库是一个基于内存的 key-value存储系统,现在redis最常用的使用场景就是存储缓存用的数据,在需要高速读/写的场合使用它快速读/写,从而缓解应用数据库的压力,进而提升应...【详细内容】
2019-09-18   慢查询  点击:(39)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条