美文网首页
Zabbix郵件告警

Zabbix郵件告警

作者: Maliao | 来源:发表于2018-03-23 15:56 被阅读180次

設置完觸發器已經可以在前端消息中報警,但這並不方便,若沒有登入Zabbix或人不在位置上,就無法實時得到告警信息。

使用郵件告警來加強提醒效果,通常設置郵件告警有兩種方式,一種是Zabbix內建的郵件模板,另一種是自己寫python或sh腳本來實現。下面介紹的是第二種方法:利用python發信告警。

1. Python腳本

Zabbix可結合腳本告警,而用Python發信非常方便,只要是Linux系統通常都有內置Python,其中CentOS的yum工具就是用Python2所寫,如果要安裝Python3要留意避免版本衝突問題。

低安全性

要使用Gmail的話,需先至低安全性應用程式網頁中開放存取權限,否則會無法發送成功。

image

腳本路經

默認路徑:/usr/local/share/zabbix/alertscripts

也可以透過設定檔查看更改成其他路徑:/usr/local/etc/zabbix_server.conf

創建Python腳本

Python標準庫已內建SMTP模塊,不需安裝其他依賴,直接寫好腳本就可以發信。

創建一個Python腳本並命名為zabbix-alert-smtp.py

#!/bin/python
# -*- coding: utf-8 -*-

"""
Zabbix SMTP Alert script for gmail.
"""

import sys
import smtplib
from email.MIMEText import MIMEText
from email.Header import Header
from email.Utils import formatdate

# Mail Account
MAIL_ACCOUNT = 'your_account@gmail.com'
MAIL_PASSWORD = 'xxxx'

# Sender Name
SENDER_NAME = u'Zabbix Server Alert'

# Mail Server
SMTP_SERVER = 'smtp.gmail.com'
SMTP_PORT = 587

def send_mail(recipient, subject, body, encoding='utf-8'):

    msg = MIMEText(body, 'plain', encoding)
    msg['Subject'] = Header(subject, encoding)
    msg['From'] = Header(SENDER_NAME, encoding)
    msg['To'] = recipient
    msg['Date'] = formatdate()

    session = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
    session.ehlo()
    session.starttls()
    session.ehlo()
    session.login(MAIL_ACCOUNT, MAIL_PASSWORD)
    session.sendmail(MAIL_ACCOUNT, recipient, msg.as_string())

    # close session
    session.quit()

if __name__ == '__main__':
    send_mail(recipient=sys.argv[1],subject=sys.argv[2],body=sys.argv[3])
  • 小說明

    輸入自己Gmail的帳密

    MAIL_ACCOUNT = 'your_account@gmail.com'
    MAIL_PASSWORD = 'xxxx'
    

    命令列參數

    send_mail(recipient=sys.argv[1],subject=sys.argv[2],body=sys.argv[3])
    sys.argv開頭的皆為命令列參數,後面會在補充與Zabbix的對應位置,方便理解為何此處要用命令列參數。
    recipient 收件人
    subject 主旨
    body 內文
    

測試腳本

寄一封信給自己,主旨為"測試",內文為"給自己"

python zabbix-alert-smtp.py ceshizhanghu1001@gmail.com 測試 給自己

寄送成功

image

2. 設定報警媒介

報警媒介可以依類型"電子郵件"、"短信"、"腳本"等,待觸發器發報時一併報警。

创建媒体类型

選單:"管理" -> "報警媒介類型" -> "创建媒体类型"

image

腳本信息

名稱:Gmail
類型:"腳本"
腳本名稱:zabbix-alert-smtp.py
(
路經:/usr/local/share/zabbix/alertscripts,
權限:777
)
腳本參數:
{ALERT.SENDTO} 收件人地址
{ALERT.SUBJECT} 主題
{ALERT.MESSAGE} 詳細內容

以上輸入的三個腳本參數,也就對應著py腳本的命令列參數,權限需留意否則無法發送成功。

image

添加完成

image

3. 設定用戶報警媒介"收件人"

選擇用戶

選單:"管理" -> "用戶" -> "Admin"

image

添加報警媒介

選單:"報警媒介" -> "添加"

image

報警媒介信息

類型:Gmail
收件人:ceshizhanghu1001@gmail.com(測試)

收件人地址,實際上是與腳本參數"{ALERT.SENDTO}"對應的。

image

添加完成

確認信息後按更新完成添加。

image

4. 設定動作

選單:"配置" -> "動作" -> "創建動作"

image

動作信息

名稱:Nginx1
條件:触发器 = PingHost: Nginx1

image

操作信息

默認接收人:(不變)
默認信息:(不變)
操作細節:添加"用戶"及"報警媒介"

默認接收人及默認信息,實際上就是對應腳本參數"{ALERT.SUBJECT}""{ALERT.MESSAGE}"。若不希望接收訊息時都是全英文,那麼可以將非{}的文字改成中文,這樣並不會影響功能。

image

恢復操作信息

這部分與操作分頁設定相同,記得要添加操作細節(用戶及報警媒介)。

image

動作添加完成

image

5. 發信告警

由步驟"腳本"到"動作"設置完畢後,只要每當異常、恢復都會發信通知一次。

動作日誌

選單:"報表" -> "動作日誌"

Zabbix3.0以後新增的動作日誌功能非常好用,動作內容及是否成功通通都會顯示在這裡。

image

異常時通知

image

恢復時通知

image

小結

一開始接觸會認為步驟繁瑣了點,其實配置上都是圍繞著腳本參數所關聯的,明白其中相關關係,做出更多報警如:Telegram、Line、微信等都是沒有問題的。

相关文章

  • Zabbix郵件告警

    設置完觸發器已經可以在前端消息中報警,但這並不方便,若沒有登入Zabbix或人不在位置上,就無法實時得到告警信息。...

  • 用wxpython製作簡易Zabbix微監控

    概念說明 Zabbix前端報警及郵件發信等已可立即告警,但如果能整合到內部系統豈不甚好? 既然如此,後面將會以下圖...

  • zabbix 配置 telgram 告警

    zabbix 配置 telgram 告警 zabbix 配置 Zabbix-in-Telegram 国内推荐使用丁...

  • zabbix 告警收敛

    思路 zabbix告警|告警收敛 - 简书 将产生的告警事件对应的subjectID(对应一条告警事件)、acti...

  • zabbix内存溢出

    1.告警具体内容 root@zabbix~]# tail -f /var/log/zabbix/zabbix_se...

  • zabbix邮件告警设置

    1.准备zabbix服务器安装完毕 使用3.2+版本 2.创建邮件告警脚本(不用zabbix自带邮件告警) 下载软...

  • ZABBIX 告警

    https://www.zabbix.com/documentation/3.2/manual/config/no...

  • zabbix 告警 | 告警收敛

    在多个运维技术分享中都会谈及到“告警风暴”这个词,即在大规模网络发生异常的时候,报警量激增,运维伙伴手机在1个多小...

  • Docker 容器 时区 及容器语言设置

    今天把zabbix 和grafana迁移到容器上跑了,发现zabbix告警的时间相差了8小时和zabbix页面报错...

  • zabbix设置微信告警,亲测可用!!!

    zabbix微信告警 前面写了一个zabbix微信告警的,用的我的企业号,后来发现用的人太多消息都超过限制了,应大...

网友评论

      本文标题:Zabbix郵件告警

      本文链接:https://www.haomeiwen.com/subject/exgffftx.html