您的位置 首页 php

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

概述

今天主要介绍如何用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="#34;>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 


3、邮件内容

可以看到邮件内容如下:


常见报错

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

可以发现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 

版本全统一了,问题解决

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  
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 


到这里关于mysql 慢查询分析的部分就结束了,后面会更多分享一些优化和设计方面的内容,感兴趣的朋友可以关注下~

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/78711.shtml

关于作者: 智云科技

热门文章

网站地图