为方便运维,我们需要及时掌握线上 keepalived 的运行状态。本文以163邮件为例,讲述当 keepalived 发生状态切换时,如何进行邮件告警。
一、设置163邮箱的SMTP服务器
登录163邮箱:
系统会提示输入授权码,即为第三方客户端的登录密码。
二、编写脚本
此处采用python脚本:
#coding:utf -8
import sys
import socket
import smtplib #smtp服务器
from email.mime.text import MIMEText #邮件文本
def SendMail(argv):
if len(argv) < 2:
print 'Error: parameter invalid!'
return
state = argv[1]
#获取本机计算机名称
hostname = socket.gethostname()
#获取本机ip
ip_str = socket.gethostbyname(hostname)
#邮件标题
subject = "keepalived: %s change to state: %s" % (ip_str, state)
#邮件正文内容
content = subject
message = MIMEText(content,"plain","utf-8") #plain 文本格式,utf-8 编码格式
sender = "******@163.com" #发送方
sender_password = "******" #发送方邮箱密码,即为前面设置的授权码
recver = "******@163.com" #接收方
#构建邮件
message['Subject'] = subject #邮件标题
message['To'] = recver #收件人
message['From'] = sender #发件人
#发件人登录
smtp = smtplib.SMTP_SSL("smtp.163.com",465) #实例化smtp服务器
smtp.login(sender,sender_password)
#发送邮件
smtp.sendmail(sender, [recver], message.as_string()) #as_string 对 message 的消息进行了封装
smtp.close()
if __name__ == "__main__":
SendMail(sys.argv)
三、修改 keepalived 配置文件
vim /etc/keepalived/keepalived.conf
四、测试
关闭 master:
systemctl stop keepalived
检查 backup 发送邮件是否成功:
发送者邮箱:
接收者邮箱: