實驗目的:python
監控httpd服務是否正常工做vim
若是沒有工做,發送報警郵件給相應用戶,並執行遠程命令嘗試重啓httpd服務bash
httpd狀態恢復正常後,發送Recovery郵件給相應用戶服務器
郵件腳本使用的是python語言ide
編寫報警郵件腳本的方法:測試
方法一,爲不一樣的管理組編寫腳本ui
若是多個用戶綁定同一個公用郵箱,腳本中指定公用郵箱地址便可。若是用戶使用本身的郵箱,腳本中要定義好全部用戶的郵箱spa
方法二,編寫統一的腳本3d
經過$1參數獲取到用戶的郵箱地址。使用此方法,須要給每一個用戶分配一個zabbix帳號,並綁定Media Typerest
實驗中使用的是方法二
1、編輯腳本:
vim /etc/zabbix/zabbix_server.conf
vim /usr/lib/zabbix/alertscripts/alertMail.py //編輯腳本
#!/usr/bin/env python #coding: utf-8 import smtplib from email.mime.text import MIMEText import sys def sendMail(toEmail,subject,message): # 定義郵件發送 smtpHost = 'smtp.xxx.xxx' #smtp服務器 fromEmail = 'xxx@xxx' # 定義發件人 toEmail = toEmail passwd = 'xxxxx' # 發件人密碼 msg = MIMEText(message,'plain','utf-8') msg['Subject'] = subject msg['From'] = fromEmail msg['To'] = toEmail smtp_server = smtplib.SMTP(smtpHost,25) smtp_server.login(fromEmail,passwd) smtp_server.sendmail(fromEmail,toEmail,msg.as_string()) smtp_server.quit() if __name__ == '__main__': toEmail = sys.argv[1]+"@qq.com" # 補全用戶郵箱 sendMail(toEmail,sys.argv[2],sys.argv[3])
chmod +x /usr/lib/zabbix/alertscripts/alertMail.py //添加執行權限
service zabbix-server restart //重啓服務以讀取到新添加的腳本
2、添加Media Type:
3、建立用戶,綁定Media Type:
4、配置Action:
效果:
service httpd stop //在被監控主機上執行,關閉httpd服務
額外測試:
修改Action