概述
今天主要介紹如何用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

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