Zabbix是一個強大的監控系統,但真正的目的是可以在出現故障時能及時的通知我們,是以配置報警功能就會非常重要。報警的方式有郵件、企業微信、釘釘、短信等,使用較多的還是郵件報警。這節針對郵件報警進行配置。使用mutt調用msmtp用戶端進行郵件報警。
1. 安裝msmtp用戶端
(1) 下載下傳msmtp用戶端
wget https://marlam.de/msmtp/releases/msmtp-1.6.8.tar.xz
(2) 解壓msmtp軟體
tar -xvJf msmtp-1.6.8.tar.xz
(3) 進入解壓的軟體包
cd msmtp-1.6.8
(4) configure安裝
./configure --prefix=/usr/local/msmtp
make && make install
(5) 建立一個etc目錄
mkdir /usr/local/msmtp/etc
(6) 建立一個配置檔案
touch /usr/local/msmtp/etc/msmtprc
(7) 在/usr/local/msmtp/etc/msmtprc中寫入如下内容,将<xxx>替換為提示的正常參數:
defaults
account <郵件顯示名稱,例如Zabbix報警>
host <郵件伺服器位址>
domain <域名位址,例如:qq.com>
from <發件人位址>
auth login
user <郵箱登陸賬号>
password <郵箱登陸密碼>
account default:<郵件顯示名稱,同上>
logfile /var/log/maillog
儲存退出
2. 使用mutt調用msmtp發送郵件
mutt預設會安裝,如果沒有安裝請使用 yum -y install mutt.x86_64 來進行安裝
(1) 修改mutt的配置檔案/etc/Muttrc,一定要注意這裡的Muttrc首字母是大寫的M
set from="發件人的郵件位址" # 發送郵件位址
set sendmail="/usr/local/msmtp/bin/msmtp" # msmtp運作程式的目錄
set use_from=yes # 開啟發送消息時生成From:标題字段
set realname="Zabbix告警" # 預設顯示發件人名稱
set editor="vi" #設定預設使用哪種編輯器
(2) 測試一下mutt是否有效,格式:echo "郵件内容" | mutt -s "主題" 收件人郵箱位址
echo "測試測試" | mutt -s "測試郵件" [email protected]
3. 建立郵件報警腳本
(1) 進入Zabbix源碼安裝預設腳本存放路徑,腳本檔案必須放在這個位置,Zabbix才找的到。若是RPM包可檢視/etc/zabbix/zabbix_server.conf配置檔案,RPM預設腳本存放路徑為/usr/lib/zabbix/alertscripts
cd /usr/local/zabbix/share/zabbix/alertscripts
(2) 建立vim email.sh報警腳本并添加以下内容
#!/bin/bash
echo "$3" | mutt -s "$2" $1 # $3表示郵件内容、$2表示郵件标題、$1表示收件人
(3) 将腳本檔案加入執行權限,并更改屬主和屬組
chmod a+x email.sh
chown zabbix:zabbix email.sh
(4) 修改msmtprc的預設權限
chmod 600 /usr/local/msmtp/etc/msmtprc
chown zabbix:zabbix msmtprc
4. 設定Zabbix郵件報警
(1) 建立Meida types
Administration ——> Meida types ——> Create media type
這裡選擇建立一個新的報警類型,Zabbix自帶的類型我們不去管它或者選擇禁用也都是可以的
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCM581dvRWYoNHLwEzX5xCMx8FesU2cfdGLwATMfRHLGZkRGZkRfJ3bs92YskmNhVTYykVNQJVMRhXVEF1X0hXZ0xiNx8VZ6l2cssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLyUTO0cjM2ITO2EDM2UTNx8CXzIDNwkTMwIzLcNXZnFWbp9CXvwVbvNmLvR3YxUjL0M3Lc9CX6MHc0RHaiojIsJye.png)
在Media types頁籤中有兩個地方需要注意。
第一個是Type(類型),因為是調用腳本來發送郵件,所有類型這裡我們要選擇Script(腳本)
第二個是參數,對應位置按順序填寫三個腳本參數:
{ALERT.SENDTO} 代表收件人位址
{ALERT.SUBJECT} 代表郵件主題
{ALERT.MESSAGE} 代表郵件内容
(2) 建立Actions
Configuration ——> Actions ——> Create actions
選擇建立一個動作
操作細節部分,如果是發送單個使用者可以在<發送到使用者>處添加使用者。若是多個使用者,建議使用<發送到使用者群組>。<僅送到>這裡選擇之前建立的腳本報警類型
注意注意,最後千萬不要忘記點選更新,不然是不會儲存的
報警内容分為告警内容和恢複内容,可參考文章的最後給出的示例。
(3) 配置Users
Adimistration ——> Users ——> 選擇需要收信的使用者
最後,進入要接收郵件的使用者設定中,可配置報警的類型、接收報警的郵件位址、什麼時間端接收報警郵件、接收那種級别的報警郵件
至此,Zabbix配置郵件報警任務完成,報警的郵件内容可參考下面格式
告警主題:
[{TRIGGER.SEVERITY}]伺服器:{HOSTNAME1}發生:{TRIGGER.NAME}故障!
告警内容:
位址:{HOST.IP}
告警主機: {HOSTNAME1}
主機分組: {TRIGGER.HOSTGROUP.NAME}
告警時間: {EVENT.DATE} {EVENT.TIME}
告警等級: {TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警項目: {TRIGGER.KEY1}
問題詳情: {ITEM.NAME}:{ITEM.VALUE}
目前狀态: {TRIGGER.STATUS}
事件ID: {EVENT.ID}
恢複主題:
[{TRIGGER.SEVERITY}]伺服器:{HOSTNAME1}{TRIGGER.NAME}已恢複!
恢複内容: