Zabbix 經過smtp 郵件報警

Zabbix郵件報警

咱們經過zabbix設置了監控項,觸發器,最終就是要監控某一項達到報警的做用,下面是經過發送郵件報警的方式。web

web頁面設置報警媒介

 

給Admin用戶添加報警媒介

 

服務器報警配置

兩個腳本:
第一個是zabbix調用的發送郵件的腳本. 他會調用第二個腳本去發送郵件.(Media types的script name:)vim

[root@zabbix01 ~]# cat /usr/lib/zabbix/alertscripts/sendemail.sh 
#!/bin/bash
SMTP_server='smtp.163.com'    # SMTP服務器
username='xxxx@163.com'     # 用戶名
password='xxxxxxxx'             # 密碼
from_email_address='xxxx@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/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
echo "`date +"%F %T"` send to $to_email_address" >> /tmp/send.log


第二個是perl 寫的sendemail專門用來經過smtp發送郵件的(對應第一個腳本中發送郵件的sendEmail)bash

#下載並解壓
wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
tar xvf sendEmail-v1.56.tar.gz
#把sendEmail複製到指定目錄 並修改權限
cd sendEmail-v1.56
cp sendEmail /usr/bin/
chmod +x /usr/bin/sendEmail

上述兩步完成後,能夠先測試可否成功發送郵件服務器

/usr/lib/zabbix/alertscripts/sendemail.sh 279790279@qq.com zabbixtest "blaze test email"

另外須要注意的是,server端的配置文件須要配置好執行腳本的路徑(跟咱們存放腳本文件的目錄須要一致)app

vim /etc/zabbix/zabbix_server.conf

...
AlertScriptsPath=/usr/lib/zabbix/alertscripts

測試發送郵件可能會出現perl版本不兼容的狀況,須要在sendemail.sh發送郵件的時候添加個參數測試

錯誤:spa

*******************************************************************
 Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
 is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
 together with SSL_ca_file|SSL_ca_path for verification.
 If you really don't want to verify the certificate and keep the
 connection open to Man-In-The-Middle attacks please set
 SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
  at /usr/bin/sendEmail line 1906.
invalid SSL_version specified at /usr/share/perl5/vendor_perl/IO/Socket/SSL.pm line 415.

解決:.net

$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o tls=no message-content-type=text -o message-charset=gb2312
echo "`date +"%F %T"` send to $to_email_address" >> /tmp/send.log

 也可能會有受權錯誤:3d

Mar 20 16:37:19 rsjxqyf03 sendEmail[24611]: ERROR => ERROR => SMTP-AUTH: Authentication to smtp.163.com:25 failed.

檢查郵箱是否開啓smtp功能(默認是關閉的),用戶名密碼是否正確,若是都正確,可嘗試將腳本一的郵箱密碼改成受權碼,如何得到受權碼請自行百度。code

 

觸發報警的動做

以上兩步完成之後,咱們須要設置觸發報警的動做

添加好了動做,能夠將大文件拷貝進機器的根目錄,觸發觸發器,便可發送郵件了。

相關文章
相關標籤/搜索