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

 

觸發報警的動做

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

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

相關文章
相關標籤/搜索