Zabbix-alert邮件告警以及html格式告警内容

部署运行你感兴趣的模型镜像

打算用Python3的脚本,简单又明了,所以自定义目录先安装python3

python3.6下载解压、编译安装、使用所有CPU编译、软连接到/usr/bin/python3。

wget https://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz && tar -zxvf Python-3.6.1.tgz && cd Python-3.6.1
./configure --prefix=/data/python3
make -j `nproc ` && make install
ln -s /data/python3/bin/python3 /usr/bin/python3

在Zabbix server目录下创建一个脚本目录用于zabbix server端读取python脚本

mkdir /data/zabbix/scripts/

在Zabbix server的配置文件中添加读取脚本的路径

echo "AlertScriptsPath=/data/zabbix/scripts" >> /data/zabbix/etc/zabbix_server.conf

创建python脚本(下面由163邮箱举例)

vim /data/zabbix/scripts/sendmail.py

#!/usr/bin/python3
# -*- coding:UTF-8 -*-
# =====================Description=====================
# [Features]: SMTP电子邮件发送
# [Usage]: ./sendmail.py receiver@example.com Subject Message
#          Put it in: /usr/local/zabbix/alertscripts
# =====================================================
import sys
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.utils import parseaddr,formataddr

# <----------------------------Configure Start--------------------------->
# STMP Config
#163smtp服务器
SMTP_Host="smtp.163.com"
#smtp端口
SMTP_Port=465
#163邮箱账号
SMTP_User="163邮箱账号"
#163邮箱的账号对应的安全码(此处非密码)
SMTP_Pass="163安全码"
# Mail Config
Mail_From="Zabbix Monitor<%s>" % SMTP_User
Mail_To=sys.argv[1]
Mail_Subject=sys.argv[2]
Mail_Body=sys.argv[3]
# <----------------------------Configure  End---------------------------->
# 署名格式化函数
def _format_addr(s):
    name, addr = parseaddr(s)
    return formataddr((Header(name, 'utf-8').encode(), addr))


# 格式化署名和接收人信息
message=MIMEMultipart()
message['From'] = _format_addr(Mail_From)
message['To'] = _format_addr(Mail_To)
message['Subject'] = Header(Mail_Subject, 'utf-8').encode()
message.attach(MIMEText(Mail_Body, 'html', 'utf-8'))

# 发送邮件!
try:
    smtpobj = smtplib.SMTP_SSL(SMTP_Host,SMTP_Port)
    smtpobj.login(SMTP_User, SMTP_Pass)
    smtpobj.sendmail(Mail_From,  Mail_To, message.as_string())
    print('邮件发送成功')
    smtpobj.quit()
except smtplib.SMTPException as e:
    print('邮件发送失败,Case:%s'%e)

添加执行权限

chmod 766 /data/zabbix/scripts/sendmail.py
chown zabbix.zabbix sendmail.py

完成后对邮箱发送一封邮件进行测试

./sendmail.py dobixu@163.com 告警标题 '<h1 style="color:blue;">This is a Message</h1>'

发送成功,以及收到了这封邮件

1.png2.png

  • 在Zabbix-Web端-管理-报警媒介类型修改Email

3.png

脚本名称:

sendmail.py

参数:

{ALERT.SENDTO}

{ALERT.SUBJECT}

{ALERT.MESSAGE}

中添加告警模板我这边是自定义的4.png

5.png

  • 在Zabbix-Web端-配置-动作-Report problems to Zabbix administrators-操作

默认标题:

[报警触发] 当前状态:{TRIGGER.STATUS},服务器:{HOSTNAME1} 发生:{TRIGGER.NAME}故障!

消息内容:

<table border="1"  bordercolor="black" cellspacing="0px" cellpadding="4px" width="500px">
<tr bgcolor="#FF3333"><th colspan=2>
{TRIGGER.STATUS} Status Report
</tr>
<tr >
<td bgcolor="#ff7d0a" width="20%">告警主机</td>
<td bgcolor="#ff7d0a">{HOSTNAME1}</td>
</tr>
<tr >
<td bgcolor="#ff7d0a">告警别名</td>
<td bgcolor="#ff7d0a">{HOST.NAME} </td>
<tr >
<tr >
<td bgcolor="#ff7d0a">告警地址</td>
<td bgcolor="#ff7d0a">{HOST.IP}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">告警时间</td>
<td bgcolor="#ff7d0a">{EVENT.DATE} {EVENT.TIME}</td>
</tr>

<tr>
<td bgcolor="#ff7d0a">告警等级</td>
<td bgcolor="#ff7d0a">{TRIGGER.SEVERITY}</td>
</tr>

<tr>
<td bgcolor="#ff7d0a">告警信息</td>
<td bgcolor="#ff7d0a">{TRIGGER.NAME}</td>
</tr>

<tr>
<td bgcolor="#ff7d0a">告警项目</td>
<td bgcolor="#ff7d0a">{TRIGGER.KEY1}</td>
</tr>
<tr >
<td bgcolor="#FF3333">问题详情</td>
<td bgcolor="#FF3333">{ITEM.NAME}:&nbsp;{ITEM.VALUE}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">当前状态</td>
<td bgcolor="#ff7d0a">{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}</td>
</tr>
<tr>
<td bgcolor="#ff7d0a">事件ID</td>
<td bgcolor="#ff7d0a">{EVENT.ID}</td>
</tr>
</table>
  • 在Zabbix-Web端-配置-动作-Report problems to Zabbix administrators-恢复操作
  • 并且它的状态必须为启用状态

6.png

默认标题:

[报警恢复] 当前状态:{TRIGGER.STATUS},服务器:{HOSTNAME1} 发生:{TRIGGER.NAME}恢复!

消息内容:

<table border="1"  bordercolor="black" cellspacing="0px" cellpadding="4px" width="500px">
<tr bgcolor="#49c208"><th colspan=2>
{TRIGGER.STATUS} Status Report
</tr>

<tr >
<td bgcolor="#ffba00" width="20%">恢复主机</td>
<td bgcolor="#ffba00">{HOSTNAME1}</td>
</tr>
<tr >
<td bgcolor="#ffba00">恢复别名</td>
<td bgcolor="#ffba00">{HOST.NAME} </td>
<tr >
<td bgcolor="#ffba00">恢复地址</td>
<td bgcolor="#ffba00">{HOST.IP}</td>
</tr>
<tr>
<td bgcolor="#ffba00">恢复时间</td>
<td bgcolor="#ffba00">{EVENT.DATE} {EVENT.RECOVERY.TIME}</td>
</tr>

<tr>
<td bgcolor="#ffba00">恢复等级</td>
<td bgcolor="#ffba00">{TRIGGER.SEVERITY}</td>
</tr>

<tr>
<td bgcolor="#ffba00">恢复信息</td>
<td bgcolor="#ffba00">{TRIGGER.NAME}</td>
</tr>

<tr>
<td bgcolor="#ffba00">恢复项目</td>
<td bgcolor="#ffba00">{TRIGGER.KEY1}</td>
</tr>
<tr >
<td bgcolor="#49c208">恢复详情</td>
<td bgcolor="#49c208">{ITEM.NAME}:&nbsp;{ITEM.VALUE}</td>
</tr>
<tr>
<td bgcolor="#ffba00">当前状态</td>
<td bgcolor="#ffba00">{TRIGGER.STATUS}:&nbsp;{ITEM.VALUE1}</td>
</tr>
<tr>
<td bgcolor="#ffba00">事件ID</td>
<td bgcolor="#ffba00">{EVENT.ID}</td>
</tr>
</table>
  • 在Zabbix-Web端-管理-用户-报警媒介-添加

添加收件人邮箱

7.png

那么告警以及恢复的时候都会发送邮件给到收件人。

那么就到此为止了。

以下参数可以自己看看

告警主机:{HOSTNAME1}

告警别名:{HOST.NAME}

告警地址:{HOST.IP}

监控项目:{ITEM.NAME}

监控取值:{ITEM.LASTVALUE}

告警等级:{TRIGGER.SEVERITY}

当前状态:{TRIGGER.STATUS}

告警信息:{TRIGGER.NAME}

告警时间:{EVENT.DATE} {EVENT.TIME}

恢复时间:{EVENT.DATE} {EVENT.RECOVERY.TIME}

事件ID:{EVENT.ID}

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大锅霍皮久

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值