1、爲何要自定義郵件腳本報警?
靈活,方便。能夠自定義過濾信息。
下面是使用不一樣方式的郵件報警,一個是利用sendEmail程序來發送報警郵件,第二個是利用python腳原本發送郵件。
2、sendEmail的部署步驟
1.官方介紹:http://caspian.dotconf.net/menu/Software/SendEmail/
2.先下載安裝包到本地,解壓。
[root@zabbix-6 ~]# wget -c http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
[root@zabbix-6 ~]# tar zxf sendEmail-v1.56.tar.gz
[root@zabbix-6 ~]# cd sendEmail-v1.56
[root@zabbix-6 sendEmail-v1.56]# cp -a sendEmail /usr/local/bin/
[root@zabbix-6 sendEmail-v1.56]# chmod +x /usr/local/bin/sendEmail
[root@zabbix-6 sendEmail-v1.56]# file /usr/local/bin/sendEmail
/usr/local/bin/sendEmail: a /usr/bin/perl -w script text executable
3.看下sendemail命令的幫助信息
[root@zabbix-6 sendEmail-v1.56]# /usr/local/bin/sendEmail
sendEmail-1.56 by Brandon Zehm <caspian@dotconf.net>
Synopsis: sendEmail -f ADDRESS [options]
Required:
-f ADDRESS from (sender) email address
* At least one recipient required via -t, -cc, or -bcc
* Message body required via -m, STDIN, or -o message-file=FILE
Common:
-t ADDRESS [ADDR ...] to email address(es)
-u SUBJECT message subject
-m MESSAGE message body
-s SERVER[:PORT] smtp mail relay, default is localhost:25
Optional:
-a FILE [FILE ...] file p_w_upload(s)
-cc ADDRESS [ADDR ...] cc email address(es)
-bcc ADDRESS [ADDR ...] bcc email address(es)
-xu USERNAME username for SMTP authentication
-xp PASSWORD password for SMTP authentication
Paranormal:
-b BINDADDR[:PORT] local host bind address
-l LOGFILE log to the specified file
-v verbosity, use multiple times for greater effect
-q be quiet (i.e. no STDOUT output)
-o NAME=VALUE advanced options, for details try: --help misc
-o message-content-type=<auto|text|html>
-o message-file=FILE -o message-format=raw
-o message-header=HEADER -o message-charset=CHARSET
-o reply-to=ADDRESS -o timeout=SECONDS
-o username=USERNAME -o password=PASSWORD
-o tls=<auto|yes|no> -o fqdn=FQDN
Help:
--help the helpful overview you're reading now
--help addressing explain addressing and related options
--help message explain message body input and related options
--help networking explain -s, -b, etc
--help output explain logging and other output options
--help misc explain -o options, TLS, SMTP auth, and more
4.安裝下依賴
[root@zabbix-6 sendEmail-v1.56]# yum install perl-Net-SSLeay perl-IO-Socket-SSL -y
5.簡單的報警腳本mail
新建[root@zabbix]#mkdir /usr/lib/zabbix/alertscripts/
[root@zabbix-6 sendEmail-v1.56]# cd /usr/lib/zabbix/alertscripts/
[root@zabbix-6 alertscripts]# cat mail.sh#!
#!/bin/bash
SMTP_server='smtp.163.com' # SMTP服務器
username='zabbix@163.com' # 用戶名
password='zabbix' # 密碼(163客戶端受權密碼)
from_email_address='zabbix@163.com' # 發件人Email地址
to_email_address="$1" # 收件人Email地址,zabbix傳入的第一個參數
message_subject_utf8="$2" # 郵件標題,zabbix傳入的第二個參數
message_body_utf8="$3" # 郵件內容,zabbix傳入的第三個參數
# 轉換郵件標題爲GB2312,解決郵件標題含有中文,收到郵件顯示亂碼的問題。
message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_subject_utf8
EOF`
[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"
# 轉換郵件內容爲GB2312
message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF
$message_body_utf8
EOF`
[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"
# 發送郵件
sendEmail='/usr/local/bin/sendEmail'
$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312
測試郵件可否發送
/usr/lib/zabbix/alertscripts/mail.sh 704219265@qq.com "測試主題" "測試內容"
編輯完成後,給腳本權限
[root@zabbix-6 alertscripts]# chmod +x mail.sh
[root@zabbix-6 alertscripts]# chown zabbix.zabbix mail.sh
設置Zabbix用戶報警郵箱地址
打開Zabbix—管理-示警媒介類型-建立媒體類型
名稱:Sendmail
類型:腳本
腳本名稱:sendmail.sh
已啓用:勾選
添加
添加如下三個須要的3個參數:收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
管理-用戶-Admin (Zabbix Administrator)
切換到示警媒介-添加
類型:Sendmail
收件人:xxx@xxx.com
其餘默認便可,也可
以根據須要設置
狀態:已啓用
添加—更新
設置Zabbix觸發報警的動做
配置-動做-建立動做
名稱:Action-Email
默認接收人:故障PROBLEM,服務器:{HOSTNAME1}:{HOST.CONN}發生: {TRIGGER.NAME}故障!
默認信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
恢復信息:打鉤
恢復主旨:恢復OK, 服務器:{HOSTNAME1}:{HOST.CONN}的 {TRIGGER.NAME}已恢復!
恢復信息:
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
已啓用:打鉤
切換到操做選項
新的
操做類型:送出信息
送到用戶:添加
默認信息:打鉤
選擇用戶:Admin
選擇
僅送到:Sendmail
添加
模擬下,把其中一個zabbix-agent 服務關掉
[root@iZ25pvjcsyhZ ~]# service zabbix_agentd stop
Shutting down zabbix_agentd: [ OK ]
html