1. 程式人生 > >zabbix 通過smtp外部郵箱實現郵件報警

zabbix 通過smtp外部郵箱實現郵件報警

簡介

在zabbix的使用中,最重要的一點就是完善的報警機制,作為監控平臺,需要時刻關注機器和服務的執行狀態,更重要的是發現故障之後需要及時的報警給相關人員,早點發現問題,將隱患消除在未然階段。這樣才能保證服務的穩定執行。

報警的方式是多種多樣的,微信、簡訊和郵件報警是我們比較常見的方式。而且報警的頻率和策略直接影響著運維人員的重視程度和檢錯效率。如果整個報警列表中都是一些無關痛癢的提示、輕度警告。而他們的傳送頻率又特別的高,則非常容易錯過真正關鍵的報警。

本文主要介紹使用sendemail實現外部郵箱報警功能,簡訊、微信報警在此處不做討論。

報警郵箱準備

  1. 郵件報警有兩種情況:

    1. Zabbix服務端只是單純的傳送報警郵件到指定郵箱,傳送報警郵件的這個郵箱賬號是
      Zabbix服務端的本地郵箱賬號(例如:[email protected]),只能傳送,不能接收外部郵件。但使用本地郵箱傳送郵件經常會被認為是垃圾郵件,從而被攔截歸入垃圾箱。故此推薦使用外部郵箱充當發件人。 
    2. 使用一個可以在網際網路上正常收發郵件的郵箱賬號(例如:[email protected]),通過在Zabbix服務端中設定,使其能夠傳送報警郵件到指定郵箱。

如採用外部郵箱傳送郵件,外部郵箱需支援smtp/pop3功能才可正常供zabbix端呼叫。本例採用網易郵箱充當外部郵箱傳送報警資訊。需做以下設定:

至此,外部郵箱設定完畢。

Zabbix配置更改

修改zabbix_server.con

在410行的地方: AlertScriptsPath=/usr/lib/zabbix/alertscripts (指令碼存放目錄路徑,視實際情況選擇路徑,注意許可權)

寫入指令碼

        這裡有2個指令碼:

        第一個是zabbix呼叫的傳送郵件的指令碼. 他會呼叫第二個指令碼去傳送郵件。(Media types的script name)

第一個指令碼:

[[email protected] ~]# cat /usr/lib/zabbix/alertscripts/sendemail.sh

#!/bin/bash

SMTP_server='smtp.xxx.com'          # SMTP伺服器

username='************'             # 使用者名稱

password='***********'     # 密碼

from_email_address='**********'          # 發件人Email地址

to_email_address="$1" # 收件人Email地址,zabbix傳入的第一個引數

message_subject_utf8="$2" # 郵件標題,zabbix傳入的第二個引數

message_body_utf8="$3" # 郵件內容,zabbix傳入的第三個引數

# 轉換郵件標題為GB2312,解決郵件標題含有中文,收到郵件顯示亂碼的問題。

message_subject_gb2312=`iconv -t GB2312 -f UTF-8 << EOF

$message_subject_utf8

EOF`

[ $? -eq 0 ] && message_subject="$message_subject_gb2312" || message_subject="$message_subject_utf8"

# 轉換郵件內容為GB2312

message_body_gb2312=`iconv -t GB2312 -f UTF-8 << EOF

$message_body_utf8

EOF`

[ $? -eq 0 ] && message_body="$message_body_gb2312" || message_body="$message_body_utf8"

# 傳送郵件

sendEmail='/usr/bin/sendEmail'

$sendEmail -s "$SMTP_server" -xu "$username" -xp "$password" -f "$from_email_address" -t "$to_email_address" -u "$message_subject" -m "$message_body" -o message-content-type=text -o message-charset=gb2312

echo "`date +"%F %T"` send to $to_email_address" >> /tmp/send.log

  這個指令碼解釋的很詳細我就不解釋了

這裡的使用者名稱和密碼是發件人的,通過SMTP傳送郵件。可以使用QQ,163任何一個提供了SMTP的郵箱公司郵箱也可以。要修改的就是smtp,使用者名稱,密碼,發件人的郵箱。smtp可以去郵箱提供商獲取,或者百度

指令碼加許可權

chmod +x sendemail.sh

第二個指令碼是perl 寫的sendemail,專門用來通過smtp傳送郵件的

第二個指令碼:http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz

(不是sendmail,這個是perl 寫的一個使用smtp傳送郵件的指令碼)

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

tar xvf sendEmail-v1.56.tar.gz

cd sendEmail-v1.56

cp sendEmail  /usr/bin/

chmod +x /usr/bin/sendEmail

  解壓: tar xvf sendEmail-v1.56.tar.gz

將裡邊的sendEmail 複製到/usr/bin/

  然後測試第一個指令碼

/usr/lib/zabbix/alertscripts/sendemail.sh [email protected] zabbixtest " this is zabbix test mail ! "

如果能收到說明這兩個指令碼都沒問題


Zabbix網頁端

此處使用sendemail指令碼配置傳送報警郵件。sendemail是用perl語言寫的一個smtp發郵件的小程式,詳情可自行查閱

  1. 媒介型別

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

名稱:sendemail

型別:指令碼

指令碼名稱:sendemail.sh

指令碼引數:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

  1. 使用者報警媒介

  使用者配置下的報警媒介.

管理--->使用者--->選擇使用者--->報警媒介 新增型別、郵件地址(接收的郵件地址)

  1. 當觸發tiggers時發生的動作...這就是傳送郵件的入口

配置--> 動作 -->建立動作

名稱:Send to Admin

預設接收人:【故障】伺服器:{HOSTNAME1}發生: {TRIGGER.NAME}故障

預設資訊:

告警主機:{HOSTNAME1}

告警時間:{EVENT.DATE} {EVENT.TIME}

告警等級:{TRIGGER.SEVERITY}

告警資訊: {TRIGGER.NAME}

告警專案:{TRIGGER.KEY1}

問題詳情:{ITEM.NAME}

事件ID:{EVENT.ID}

恢復資訊: 這個是當報警回覆正常傳送郵件的內容. 這些變數都是系統定義好.你可以引用 也可以自己定義變數.

恢復主題:【恢復】 伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!

恢復資訊:

告警主機:{HOSTNAME1}

告警時間:{EVENT.DATE} {EVENT.TIME}

告警等級:{TRIGGER.SEVERITY}

告警資訊: {TRIGGER.NAME}

告警專案:{TRIGGER.KEY1}

問題詳情:{ITEM.NAME}:

事件ID:{EVENT.ID}

  1. 設定觸發器條件

  2. 定義觸發條件後進行的動作

這樣基本就完成了。

檢視日誌

報警設定完成後,可以在報表-à動作日誌 檢視相關動作,成功與否都會有日誌記錄,如傳送失敗可根據錯誤提示檢視錯誤提示。根據錯誤提示排錯。

參考連結:https://www.iyunv.com/thread-111385-1-1.html

相關推薦

zabbix 通過smtp外部郵箱實現郵件報警

簡介在zabbix的使用中,最重要的一點就是完善的報警機制,作為監控平臺,需要時刻關注機器和服務的執行狀態,更重要的是發現故障之後需要及時的報警給相關人員,早點發現問題,將隱患消除在未然階段。這樣才能保證服務的穩定執行。報警的方式是多種多樣的,微信、簡訊和郵件報警是我們比較常

搭建Zabbix監控系統服務以及實現郵件報警功能配置詳解

一、zabbix簡介:zabbix是完全開源的工具,整合了cacti和nagios等特性      附:SNMP(udp 161  udp 162)眾多網路工具都支援此協議,比如常見路由交換,常見OS,其既可以做管理端也可以做被管理端,snmp協議大致有3個版本分別是v1 、

zabbix使用外部郵箱賬號傳送報警郵件設定

一、關閉sendmail或者postfix service sendmail stop #關閉 chkconfig sendmail off #禁止開機啟動 service postfix stop chkconfig postfix off 備註: 使用外部郵箱賬號時,不

配置zabbix使用mailx實現郵件報警

說明: Zabbix監控服務端、客戶端都已經部署完成,被監控主機已經新增,Zabiix監控執行正常。 實現目的: 在Zabbix服務端設定郵件報警,當被監控主機宕機或者達到觸發器預設值時,會自動傳送報警郵件到指定郵箱。 具體操作: 以下操作在Zabbix監控服務端進行 備註:

Zabbix 如何實現郵件報警通知以及免費簡訊報警通知

                 前提條件:(1) zabbix伺服器端已經成功安裝並且執行。(2) zabbix客戶端已經成功建立並且執行。1 下載並且安裝msmtp軟體tar jxvf msmtp-1.4.32.tar.bz2cd msmtp-1.4.32./configure--prefix=/usr/

[Zabbix] 如何實現郵件報警通知以及免費簡訊報警通知

 前提條件:(1) zabbix伺服器端已經成功安裝並且執行。(2) zabbix客戶端已經成功建立並且執行。1 下載並且安裝msmtp軟體tar jxvf msmtp-1.4.32.tar.bz2cd msmtp-1.4.32./configure--prefix=/usr

Zabbix利用msmtp+mutt發送郵件報警

echo pass 但是 郵件服務 mod 利用 pat get log Zabbix利用msmtp+mutt發送郵件報警Zabbix支持多種報警的方式,其中成本最低、最方便的就是郵件報警的方式了。但是因為它不支持郵件的用戶認證,這種方式現在也非常少見,同時安全性也差,如果

java通過smtp發送電子郵件

instance 獲取 ins dma 使用html標簽 ssl cnblogs 使用 ack package com.sm.modules.oa.web; import javax.mail.Session; import javax.mail.Transport;

zabbix監控(三)配置郵件報警

郵件報警 zabbix配置郵件報警:zabbix服務端1.編輯/etc/mail.rcset [email protected] smtp=smtp.163.comset [email protected] smtp-auth-password=w

Zabbix監控系統二:配置郵件報警

tmp messages thead $2 time 監控 末尾 mar 媒體 在zabbix的使用中,最重要的一點就是完善的報警機制,作為監控平臺,需要時刻關註機器和服務的運行狀態,更重要的是發現故障之後需要及時的報警給相關人員,早點發現問題,將隱患消除在未然階段。這樣才

Openfalcon實現郵件報警

cd $GOPATH/src mkdir github.com/open-falcon/ -p cd github.com/open-falcon/ git clone https://github.com/open-falcon/mail-provider.

zabbix通過python指令碼發告警郵件

python指令碼為敏捷開發指令碼,在zabbix監控也起到重要作用,以下是使用python指令碼傳送告警郵件配置方法。 指令碼如下: #!/usr/bin/python #coding:utf-8

CentOS 6.5 and Ubuntu 14.04 使用外部郵箱傳送郵件

我們可以使用外部郵箱(163,126,gmail,139等等)為我們發郵件 for CentOS 6.5 yum -y install mailx vi /etc/mail.rc 在檔案的末行新增以下5行 set [email protected] se

Cacti設定流量閾值實現郵件報警

2015年03月17日 09:55:16 svdata 閱讀數:8219 個人分類: 監控

Prometheus+AlertManager實現郵件報警

AlertManager下載 https://prometheus.io/download/ 解壓 新增配置檔案test.yml,配置收發郵件郵箱   Prometheus下載配置參考我的另一篇: https://www.cnblogs.com/caizhenghui/p/9132414

Zabbix通過騰訊雲實現簡訊告警

1、先申請騰訊雲賬號 2、如果選擇的是個人認證,在建立簽名時可以選擇公眾號或小程式,若沒有公眾號則可自行建立 3、簡訊模版申請(注意個人模版單個變數不能超過12個字元) 模版樣例: 4、簡訊告警 參考: 5、準備報警指令碼 [[email

CentOS6.5下呼叫外部郵箱傳送郵件

以下是自己收集的實用Linux下簡單配置外部郵箱傳送郵件的方法:1、配置/etc/mail.rc,使用mail命令# vim /etc/mail.rc###呼叫外部郵箱   set [email protected]     set smtp=smtp.exmail

阿里雲Centos7中GitLab使用smtp 163郵箱傳送郵件的注意事宜

1.修改gitlab.rb配置項目錄:/etc/gitlab/gitlab.rb修改:gitlab_rails['smtp_enable'] = truegitlab_rails['smtp_address'] = "smtp.163.com"gitlab_rails['sm

監控cpu內存磁盤,並實現郵件報警

div pan spa .com gre disk warn tmp 郵件報警 1 #!/bin/bash 2 #獲取當前時間 3 now=`date -u -d"+8 hour" +‘%Y-%m-%d %H:%M:%S‘` 4 #cpu使用閾值 5

zabbix郵件報警發送至qq郵箱

zabbix 郵件報警 zabbix郵件報警設置第一、安裝郵件發送工具mailx 這裏我選擇的是mailx,所以的關閉其他的郵件發送工具 service sendmail start #開啟,因為發送郵件需要開啟25端口 chkconfig sendmail off #禁止開機啟動