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

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

游戏|数码彩彩2024-04-19 7:41:53315A+A-

概述

今天主要介绍如何用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时,如何触发邮件告警并推送慢查询?

 

点击这里复制本文地址 版权声明:本文内容由网友提供,该文观点仅代表作者本人。本站(https://www.angyang.net.cn)仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

昂扬百科 © All Rights Reserved.  渝ICP备2023000803号-3网赚杂谈