1. 程式人生 > >Centos7 Zabbix3.4郵件告警配置(解決郵件內容為xx.bin附件的問題)

Centos7 Zabbix3.4郵件告警配置(解決郵件內容為xx.bin附件的問題)

一、新增監控Linux主機

1、配置-主機-建立主機

2、填寫資訊

3、新增模板

4、檢視狀態

二、配置郵箱

系統環境:

[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

1、安裝郵件傳送工具mailx

如果安裝了其他郵件傳送工具,先關閉

service sendmail stop  ##關閉sendmail
systemctl disable sendmail.service  ##禁止開機啟動sendmail
service postfix stop  ##關閉postfix
systemctl disable postfix.service  ##禁止開機啟動postfix
[[email protected] ~]# yum install mailx

2、配置Zabbix服務端外部郵箱,開啟檔案vim /etc/mail.rc 如果mail.rc檔案沒有,就手動建立,然後新增如下內容:

[[email protected] ~]# vim /etc/mail.rc

set sendcharsets=iso-8859-1,utf-8
set [email protected]
set smtp=smtp.163.com        #163郵箱要開啟smtp授權
set [email protected]  #認證使用者
set smtp-auth-password=xxx    #認證密碼

3、測試郵件傳送

[[email protected] ~]# echo "zabbix test mail" | mail -s "zabbix" [email protected]

4、編寫傳送郵件指令碼

1)安裝dos2unix轉換工具( 解決發出的郵件是xx.bin附件格式的問題 ),如果這裡的下載連結失效就到阿里官網查詢

[[email protected] ~]# rpm -ivh https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
獲取https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/Packages/dos2unix-6.0.3-7.el7.x86_64.rpm
準備中...                          ################################# [100%]
正在升級/安裝...
   1:dos2unix-6.0.3-7.el7             ################################# [100%]

如下接受郵件顯示,無法顯示文字

2)修改郵件傳送指令碼內容

為什麼我們會在這個路徑下面建立這個指令碼呢,這是在我們的zabbix_serber.conf檔案中配置的
AlertScriptsPath=/usr/lib/zabbix/alertscripts

所以你不想將這個指令碼放在這個目錄下面,需要修改服務端的配置檔案中的AlertScriptsPath的值

[[email protected] ~]# vim /usr/lib/zabbix/alertscripts/sendmail.sh

#!/bin/bash 

#export.UTF-8 ###解決傳送的中文變成了亂碼的問題 
FILE=/tmp/mailtmp.txt 
echo "$3" >$FILE 
dos2unix -k $FILE ###解決了傳送的郵件內容變成附件的問題。 

/bin/mail -s "$2" $1 < $FILE

3)建立臨時檔案並授權,這裡確保你的使用者存在zabbix

[[email protected] ~]# touch /tmp/mailtmp.txt
[[email protected] ~]# chown zabbix.zabbix /tmp/mailtmp.txt

4)上面的這三個引數是接收從Web頁面傳遞的資訊:

$1:收件人郵箱地址;
$2:郵件標題;
$3:郵件內容

5)給指令碼新增許可權,要不發生告警的時候郵件無法正常傳送出去

[[email protected]ocalhost ~]# chmod 755 /usr/lib/zabbix/alertscripts/sendmial.sh 

5、管理-報警媒介型別-建立媒體型別

6、填寫內容

新增以下3個引數,分別對應sendmail.sh指令碼需要的3個引數:收件人地址、主題、詳細內容
      {ALERT.SENDTO}
      {ALERT.SUBJECT}
      {ALERT.MESSAGE}
如果在3.0中不新增這三個引數會報錯,因為在3.0以後zabbix允許自定義引數了,所以不會預設傳遞引數,在2.0的時候會預設傳遞三個引數,所以在3.0如果不寫這三個引數會報錯。

7、給使用者新增報警媒介

8、設定告警條件:配置-動作-建立動作

1)設定條件和名稱

2)填寫接收人,預設資訊,使用者是剛填寫好的接收郵件人,MyEmail也是剛建立的

故障告警:{TRIGGER.STATUS}: {TRIGGER.NAME} 
告警主機:{HOST.NAME} 
主機地址:{HOST.IP} 
告警時間:{EVENT.DATE} {EVENT.TIME} 
告警等級:{TRIGGER.SEVERITY} 
告警資訊:{TRIGGER.NAME} 
問題詳情:{ITEM.NAME}:{ITEM.VALUE} 
事件程式碼:{EVENT.ID} 

解釋:預設的步驟是1-1,也即是從1開始到1結束。一旦故障發生,就是執行sendEmail.sh指令碼發生報警郵件給Admin使用者和zabbix administrator組。假如故障持續了1個小時,它也只發送一次。如果改成1-0,0是表示不限制.無限傳送 間隔就是預設持續時間60秒。那麼一個小時,就會發送60封郵件。

3)恢復操作

故障解除:{TRIGGER.STATUS}: {TRIGGER.NAME} 
恢復主機:{HOST.NAME} 
主機地址:{HOST.IP} 
恢復時間:{EVENT.DATE} {EVENT.TIME} 
恢復等級:{TRIGGER.SEVERITY} 
恢復資訊:{TRIGGER.NAME} 
問題詳情:{ITEM.NAME}:{ITEM.VALUE} 
事件程式碼:{EVENT.ID}


到這我們的郵件報警配置就完成了,這是隻要我們設定的觸發器觸發,就會自動給我傳送報警郵件。

9、測試郵件告警

1)開啟觸發器

2)可以將zabbix自帶的模板中的對可用記憶體的監控中的觸發器的臨界值改為大於20,進入模板列表

改之後

3)修改更新時間,使其更快檢測

4)檢視告警

5)郵箱確認

如果傳送郵件有問題就重啟服務端和zabbix-server 和httpd服務,客戶端重啟zabbix-agent服務