1. 程式人生 > >ZABBIX配置郵箱報警(UBUNTU),保證90%的成功率

ZABBIX配置郵箱報警(UBUNTU),保證90%的成功率

前提條件:

 you have smtp server

QQ郵箱不行

 網易的不知道,我是自己搭建了一個郵箱伺服器

也不知道為什麼zabbix自帶的郵件功能配置了不起作用...簡直過分

 

zabbix3.0.4 郵件告警詳細配置

sendEmail是一個輕量級,命令列的SMTP郵件客戶端。如果你需要使用命令列傳送郵件,那麼sendEmail是非常完美的選擇:使用簡單並且功能強大.這個被設計用在php、bash
perl和web站點使用。

1.下載軟體

wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

2.建立目錄

mkdir /usr/local/bin

3.解壓軟體

tar zxf sendEmail-v1.56.tar.gz -C /usr/src

4.進入目錄

cd /usr/src/sendEmail-v1.56

5.複製檔案,並設定許可權

cp -a sendEmail /usr/local/bin
chmod +x /usr/local/bin/sendEmail

6.安裝元件

yum install perl-Net-SSLeay perl-IO-Socket-SSL -y

7.測試郵件功能

# /usr/local/bin/sendEmail -f [email protected]
-t [email protected] -s smtp.163.com -u "我是郵件主題" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp 123456 -m "我是郵件內容" -l /var/log/sendMyEmail.log

命令說明:

/usr/local/bin/sendEmail        命令主程式
-f [email protected]                 發件人郵箱
-t [email protected]                   收件人郵箱
-s smtp.163.com                 發件人郵箱的smtp伺服器
-u "我是郵件主題"                 郵件的標題
-o message-content-type=html    郵件內容的格式,html表示它是html格式
-o message-charset=utf8         郵件內容編碼
-xu 
[email protected]
發件人郵箱的使用者名稱 -xp 123456 發件人郵箱密碼 -m "我是郵件內容" 郵件的具體內容 -l
/var/log/sendMyEmail.log 非必輸項,郵件傳送日誌記錄到日誌檔案

 

8.檢視編輯指令碼配置

進入zabbix自定義的指定目錄,我這裡是/usr/local/zabbix
可以檢視zabbix_server.conf配置檔案AlertScriptsPath變數是如何定義的。

vim /usr/local/zabbix/etc/zabbix_server.conf

找到AlertScriptsPath選項,可以自定義位置, 這個路徑可能每個人情況不一樣

### Option: AlertScriptsPath
#       Full path to location of custom alert scripts.
#       Default depends on compilation options.
#
# Mandatory: no
# Default:
# AlertScriptsPath=${datadir}/zabbix/alertscripts

AlertScriptsPath=/usr/local/zabbix/alertscripts

cd /usr/local/zabbix/alertscripts/
9.編輯指令碼

vim sendEmail.sh

內容如下:

#!/bin/bash

to=$1
subject=$2
body=$3
/usr/local/bin/sendEmail  -f [email protected] -t "$to" -s smtp.163.com -u "$subject" -o message-content-type=html -o message-charset=utf8 -xu [email protected] -xp password -m "$body"

說明:
[email protected] 替換成自己的發件郵箱
smtp.163.com 表示郵

箱的smtp伺服器,這裡展示使用的是163郵箱,替換自己的郵箱SMTP地址
password 替換成發件郵箱密碼

10.編輯完成後,給指令碼許可權

 

chmod +x sendEmail.sh
chown zabbix.zabbix sendEmail.sh

 

11.web介面配置

進入zabbix管理頁面
 點選管理->報警媒介型別 點選最右邊的建立媒體型別

 

輸入指令碼名稱,型別選擇指令碼並新增以下3個引數,分別對應sendEmail.sh指令碼需要的3個引數:收件人地址、主題、詳細內容
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

 

解釋:很多人安裝zabbix 3.0之後,寫的指令碼一直髮信不成功,手動執行時可以的。
 那是因為zabbix3.0之後,可以自定義引數了。所以不寫引數,它是不會傳引數的。
 在2.x版本不存在這個問題,預設會傳3個引數。

點選Admin使用者

 

點選報價媒介-新增

 

選擇sendEmail.sh指令碼,輸入收件人的郵箱地址

 

點選使用者群組,點選zabbix administrator後面的呼叫模式,點選一下,就啟用了

 

點選Zabbix administrators組名稱 點許可權->新增

 

選擇所有 點選更新。

點選配置->動作 點選預設的動作:

 

點選操作->編輯:

 

修改以下內容(實際情況,大家根據自己需求填寫,這裡僅僅為了展示)
修改持續時間為60秒
 修改步驟為3,表示觸發3次動作
 選擇使用者Admin
選擇僅送到sendEmail.sh
點選更新

 

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

我這裡新增一個條件,觸發後:
 郵件傳送後內容為:

 

點選報表->動作日誌 可以看到觸發動作的次數。只會有3次,除非test主機狀態改變,也就是正常的時候,會觸發一次,否則不會再觸發。

7、在zabbix的web端配置郵件告警

點選管理,媒體型別,點選建立新的媒體型別

輸入名稱,修改型別為script,選擇指令碼檔案,完成即可

8、配置使用者的郵箱地址

選擇【Administration】->【Users】,進入使用者配置介面,在"Media"選項卡中配置使用者接收告警的郵箱地址。點選"Add",在彈出的視窗中輸入使用者郵箱,見下圖:

 

 

 

 

 9、定義action

進入告警動作配置介面(Actions),建立新的action。

具體配置給出官方連結:https://www.<wiz_tmp_highlight_tag class="cm-searching">zabbix.com/documentation/2.2/manual/config/notifications/action

這裡只介紹告警標題和內容的配置,如下圖: