MHA中send_report脚本(使用Email::Simple模块)
2017-05-16 15:10
447 查看
MHA是目前相对成熟的一套MySQL高可用方案,在MySQL故障切换过程中,MHA 能做到0~30 秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA 能最大程度上保证数据库的一致性,以达到真正意义上的高可用。并且可以通过send_report脚本实现邮件发送告警的功能。
网上大多都是使用Mail::Sender模块实现发送邮件的功能,在此我是用了Email::Simple模块:
注:由于本人之前没有接触过perl,脚本中难免出现冗余代码;
故障切换过程中可以根据manager.log提示查找未成功原因,本人在安装过程中遇见的问题总结如下:
1、Can’t locate Net/SMTP/TLS/ButMaintained.pm
使用cpan安装perl依赖的模块,无法安装的下载tar包就行安装
使用tar包安装Email::Sender::Transport::SMTP::TLS和Net::SMTP::TLS::ButMaintained
2、如果还是无法找到模块的话,可能是脚本里第一行没有使用环境变量里的perl路径
可以将#!/usr/bin/perl 改成#!/usr/bin/env perl
3、tar包安装完之后提示
用cpan安装或者使用tar包安装Net::SSLeay模块
4、提示Can’t locate IO/Socket/SSL.pm
使用cpan安装或者tar包安装IO::Socket::SSL
最后使用下面语句监测各模块是否导入成功:
网上大多都是使用Mail::Sender模块实现发送邮件的功能,在此我是用了Email::Simple模块:
#!/usr/bin/env perl use strict; use warnings FATAL => 'all'; use Email::Simple; use Email::Sender::Simple qw(sendmail); use Email::Sender::Transport::SMTP::TLS; use Getopt::Long; #new_master_host and new_slave_hosts are set only when recovering master succeeded my ( $dead_master_host, $new_master_host, $new_slave_hosts, $subject, $body ); GetOptions( 'orig_master_host=s' => \$dead_master_host, 'new_master_host=s' => \$new_master_host, 'new_slave_hosts=s' => \$new_slave_hosts, 'subject=s' => \$subject, 'body=s' => \$body, ); #mailToContacts($smtp,$mail_from,$mail_user,$mail_pass,$mail_to,$subject,$body); mailToContacts(); sub mailToContacts { # my ( $smtp, $mail_from, $user, $passwd, $mail_to, $subject, $msg ) = @_; open my $DEBUG, "> /tmp/monitormail.log" or die "Can't open the debug file:$!\n"; my $transport = Email::Sender::Transport::SMTP::TLS->new( host => 'smtp.163.com', port => 25, username => 'xxxxxxxx@163.com', password => 'yourpw', ); my $message = Email::Simple->create( header => [ From => 'xxxxxxxx@163.com', To => 'xxxxxxxx@xxx.com', Subject => $subject, ], body =>$body, ); sendmail( $message, {transport => $transport} ); return 1; } # Do whatever you want here exit 0;
注:由于本人之前没有接触过perl,脚本中难免出现冗余代码;
故障切换过程中可以根据manager.log提示查找未成功原因,本人在安装过程中遇见的问题总结如下:
1、Can’t locate Net/SMTP/TLS/ButMaintained.pm
使用cpan安装perl依赖的模块,无法安装的下载tar包就行安装
install Email:Simple install Email:Sender:Simple
使用tar包安装Email::Sender::Transport::SMTP::TLS和Net::SMTP::TLS::ButMaintained
2、如果还是无法找到模块的话,可能是脚本里第一行没有使用环境变量里的perl路径
可以将#!/usr/bin/perl 改成#!/usr/bin/env perl
3、tar包安装完之后提示
Can't load '/usr/local/perl5/perls/perl-5.18.2/lib/site_perl/5.18.2/x86_64-linux-thread-multi/auto/Net/SSLeay/SSLeay.so' for module Net::SSLeay: libssl.so.4:
用cpan安装或者使用tar包安装Net::SSLeay模块
4、提示Can’t locate IO/Socket/SSL.pm
使用cpan安装或者tar包安装IO::Socket::SSL
最后使用下面语句监测各模块是否导入成功:
perl -MEmail::Sender::Transport::SMTP::TLS -e "print\"module installed\n\""
相关文章推荐
- Python3.0 我的DailyReport 脚本(二) Email发送模块
- nagios使用sendEmail发送邮件
- 如何使用sendEmail发送邮件
- 二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
- 使用shell脚本统计各个模块每个文件代码行数与总行数
- Discuz! 7.0 模块调用脚本范例程序 - 多选下拉的缺陷以及使用方法
- 如何使用sendEmail发送邮件
- linux sendEmail工具的安装使用
- python email ==> send 发送邮件 :) [smtplib, email 模块]
- sendEmail的安装与使用
- 使用perl的Mail::SendEasy模块来发送邮件
- IE下用ReportView显示RDLC报表,提示“您的浏览器不支持脚本或已配置为不允许使用脚本”
- Python_使用smtplib和email模块发送邮件
- linux sendEmail工具的安装使用
- Python_使用smtplib和email模块发送邮件
- Nagios使用SendEmail发送邮件
- CentOs6.2使用sendEmail发送邮件
- perl 自定义包/模块的使用(正则表达式匹配email地址和ip)
- python simplejson模块的使用方法
- Linux下使用sendEmail发送带附件的邮件