ZABBIX配置郵箱報警(UBUNTU),保證90%的成功率
前提條件:
you have smtp server
QQ郵箱不行
網易的不知道,我是自己搭建了一個郵箱伺服器
也不知道為什麼zabbix自帶的郵件功能配置了不起作用...簡直過分
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。
這裡只介紹告警標題和內容的配置,如下圖: