今天主要介绍如何用slowquery工具来配置邮件告警,仅供参考。
进入到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'"); ?>
每隔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
可以看到邮件内容如下:
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