環境:zabbix2.2.4 ; centos6.5 ; centos
需求:zabbix 郵件報警 bash
方案:利用163的郵箱或者公司內部的郵箱,用msmtp+mutt 完成郵件報警 服務器
實施步驟: 測試
1;msmtp的安裝 spa
a; tar xf msmtp-1.4.17.tar.bz2 日誌
b; cd msmtp-1.4.17 server
c; mkdir -p /opt/local/etc 事件
d; ./configure --prefix=/opt/local/ --sysconfdir=/opt/local/etc ip
2 ;配置msmtp ci
a; mkdir -p /var/log/zabbix //創建日誌文件
touch /var/log/zabbix/msmtp.log
chown zabbix:zabbix /var/log/zabbix
b; vi /opt/local/msmtp/etc/msmtprc
account zabbix
host smtp.163.com //smtp 服務器
port 25
from ssss8888@163.com
auth login
tls off
user ssss8888 //發送郵件的郵箱帳號
password 123456 //密碼
logfile /var/log/zabbix/msmtp.log //日誌
d; 測試msmtp
/opt/local/msmtp/bin/msmtp 12345@qq.com //發送給這個qq郵箱
hello word! test mail //郵件內容
//ctrl+d 結束髮送郵件
3; 進日誌或者郵箱看下是否正常發送
4;安裝mutt,測試mutt發送郵件
a; 配置
yum -y install mutt
vi /etc/Muttrc
set sendmail="/opt/local/msmtp/bin/msmtp"
set use_from=yes
set realname="ssss8888@163.com"
set editor="vi"
b;mutt命令測試發郵件
echo "helloworld" | mutt -s "hello" 12345@qq.com
5;建立郵件腳本
a;編輯腳本
vi /opt/local/zabbix/share/zabbix/alertscripts/zext_msmtp.sh
#! /bin/bash
DEBUG=1
if [ $DEBUG -gt 0 ]
then
exec 2>>/var/log/zabbix/msmtp.log
set -x
fi
FROM='ssss8888@163.com'
MSMTP_ACCOUNT='zabbix'
# Parameters (as passed by Zabbix):
# $1 : Recipient
# $2 : Subject
# $3 : Message
recipient=$1
subject=$2
message=$3
date=`date --rfc-2822`
sed 's/$/\r/' <<EOF | /opt/local/msmtp/bin/msmtp --account $MSMTP_ACCOUNT $recipient
From: <$FROM>
To: <$recipient>
Subject: $subject
Date: $date
$message
EOF
b; 受權,改權限
chown zabbix:zabbix zext_msmtp.sh
chmod 755 zext_msmtp.sh
6;zabbix server配置裏修改腳本位置
vi /opt/local/zabbix/etc/zabbix_server.conf
AlertScriptsPath=/opt/local/zabbix/share/zabbix/alertscripts //打開參數,設置腳本位置
7;配置zabbix媒體類型,添加郵件報警
a;管理-示警媒介類型-建立媒體類型
b;管理-用戶,對特定用戶設置郵件報警
8;創建動做,設置用zext_msmtp 報警
組態-動做 來設置一個動做
9;設置好後,觸發一個報警然動做執行,看是否收到郵件報警
查看動做是否執行成功,直接 監測中-事件 點開事件,查看,以下圖