當(dāng)前公司nagios已經(jīng)正常使用,也能報警,但是郵件報警采用的是sendmail,發(fā)件人總是nagios@localhost,收到后經(jīng)常被加入到郵件中的垃圾箱,并且有些郵箱服務(wù)器有反垃圾檢測,導(dǎo)致用戶接收不到郵件。為解決這個問題,決定自己寫一個郵件發(fā)送程序。過程如下:
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的靜樂網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴![root@yckj python]# cat sendmail.py #!/usr/bin/python # -*- coding:utf-8 -*- import smtplib import sys from email.mime.text import MIMEText import time #獲取當(dāng)前時間 current_time=time.strftime('%Y-%m-%d %H:%M',time.localtime(time.time())) #獲取用戶名密碼登陸遠程再也箱服務(wù)器 mail_host = 'smtp.exmail.qq.com' mail_user = 'yangr@vcnglobal.com' mail_pwd = '12345' #此處密碼為假 def send_email( content, mailto, get_sub ): #獲取郵件內(nèi)容,后面是為了支持中文 msg = MIMEText( content,_subtype='plain',_charset='gb2312') #獲取收件人,與標題 msg['From'] = mail_user msg['Subject'] =get_sub msg['To'] = ",".join( mailto ) try: #連接上遠程郵件發(fā)送服務(wù)器 s = smtplib.SMTP_SSL( mail_host, 465 ) #登陸 s.login(mail_user, mail_pwd ) #發(fā)送郵件 s.sendmail(mail_user, mailto, msg.as_string()) s.close() except Exception as e: print 'Exception: ', e #傳參第一個為郵件標題 title=sys.argv[1] #傳參第二個為郵件內(nèi)容,此處定義內(nèi)容格式 cont=""" ---------------------------------- | 云巢運維管理平臺 ---------------------------------- | 報警信息: %s ---------------------------------- | 發(fā)送時間: %s ---------------------------------- """ %(sys.argv[2],current_time) #指定收件人 to_list = [ #'zhengzh@vcnglobal.com', #'duc@vcnglobal.com', #'yangr@vcnglobal.com', 'yangy@vcnglobal.com', ] #執(zhí)行上述類 send_email( cont, to_list, title)
編輯nagios定義命令的文件,注銷掉原有的發(fā)送郵件命令。新增如下:
#vi /usr/local/nagios/etc/objects/commands.cfg
define command{
command_name notify-host-by-email
command_line /usr/bin/python/python/sendmail.py "$HOSTNAME$_$HOSTADDRESS$ $NOTIFICATIONTYPE$, $HOSTNAME$ is $HOSTSTATE$" "$HOSTNAME$ $HOSTADDRESS$ is$HOSTSTATE$,$HOSTOUTPUT$."
}
define command{
command_name notify-service-by-email
command_line /usr/bin/python/python/sendmail.py "$HOSTNAME$_$HOSTADDRESS$ service is $SERVICESTATE$" "$HOSTALIAS$_$HOSTADDRESS$state is $SERVICESTATE$,$SERVICEOUTPUT$. "
#執(zhí)行這個程序,把主機名報警信息傳參進去就可。
}
重啟nagios
#/etc/init.d/nagios chekconfig
#/etc/init.d/nagios restart
Down了nagios監(jiān)控中的一臺192.167.6.136,報警信息如下:
注:模板內(nèi)容可自行更改。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。