本文紧张实现的目标是:当Zabbix收到告警时,触发邮件关照,并在关照之前,将告警标题发送给互联网上的第三方免费GPT网站进行大略剖析,获取干系办理方案。
考虑到GPT回答问题须要一定韶光,可考虑利用多个关照办法,一部分告警通过GPT获取办理方案,一部分告警直接关照,确保告警的及时性。
下面让我们一起来看看如何实现吧。

注:

1. 本次利用的环境是Zabbix 6版本;

phppanduanpostget若何设置装备摆设Zabbix告警邮件通知并基于GPT供给解决计划 Python

2. 本文用到了http://www.zaiwen.top/供应的免费GPT接口,该网站为公益免费网站。

二、获取邮箱第三方授权密钥

首先,在邮箱上设置第三方授权密钥。
点击设置->账号->管理做事。

点击天生授权码:

三、配置告警媒介

创建一个报警媒介类型:

名称:邮件关照-gpt

类型:脚本

脚本名称:CXHEmail.py

脚本参数:依次{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}

关照内容设置:(本文只设置了告警触发时的关照内容,可按需设置其他类型的关照内容)

Message type:问题

主题:【告警关照】: {EVENT.NAME}

告警主机业务名称: {HOST.NAME}

主机IP:{HOST.IP}

告警等级: {EVENT.SEVERITY}

监控项目1:{ITEM.NAME1}

监控取值1:{ITEM.LASTVALUE1}

监控项目2:{ITEM.NAME2}

监控取值2:{ITEM.LASTVALUE2}

告警韶光:{EVENT.DATE} {EVENT.TIME}

选项默认即可:

四、放置告警关照脚本

将CXHEmail.py脚本防置在Zabbix的告警媒介目录下(告警媒介目录紧张为Zabbix配置文件zabbix_server.conf里的AlertScriptsPath参数设置的目录)。

CXHEmail.py脚本内容:(个中myemail参数须要填写发送邮件的QQ邮箱号,password参数填写QQ邮箱第三方授权码)

#!/usr/bin/python3

# -- coding: utf-8 --

from email.mime.text import MIMEText

from email.header import Header

#from smtplib import SMTP_SSL

from smtplib import SMTP

import sys

import requests

import json

smtpaddr = 'smtp.qq.com'

myemail='xxxxx@qq.com' ##发送邮件的QQ

password='xxx' ##填写上岸客户真个授权码,在邮箱里天生同时须要打开POP3,IMAP做事

#f = open('/usr/local/zabbix/.passwd','r')

#password = f.readline().strip()

####gpt_url = "https://aliyun.zaiwen.top/message"

gpt_url = "https://bak.cwjiaoyu.cn/message_local"

recvmail=sys.argv[1] ##发送邮件给谁

subject=sys.argv[2] ## 发送的主题

content=sys.argv[3] ##发送的内容

content += '\n'

try:

panduan = True #如果返回的是并发数过高 则重试

while panduan:

payload={"message":[{"role":"user","content":"请详细列出关于以下运维问题的推举办理方案是什么:" + str(subject)}],"mode":"chatglm","key":"null"}

headers = {

'Content-Type': 'application/json',

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.289 Safari/537.36',

'Host':'jump.zaiwen.top',

'Origin':'http://www.zaiwen.top',

'Referer':'http://www.zaiwen.top/'

}

response = requests.request("POST", gpt_url, headers=headers, data=json.dumps(payload,ensure_ascii=False).encode('utf-8'))

if response.text != '[1302][您当前利用该API的并发数过高,请降落并发,或联系客服增加限额。
]':

panduan = False

content += response.text

#去掉空行

lines = content.split('\n')

lines = [line for line in lines if line.strip() != '']

content = '\n'.join(lines)

print(content)

msg = MIMEText("""%s"""%(content), "plain", "utf-8") ##发送的内容

msg['Subject'] = Header(subject, 'utf-8').encode()

msg['From'] = myemail

msg['To'] = recvmail

print(msg)

#smtp = SMTP_SSL( smtpaddr )

smtp = SMTP(smtpaddr,"587")

smtp.starttls() #启用安全传输模式

smtp.login(myemail, password)

smtp.sendmail(myemail, recvmail.split(','), msg.as_string())

smtp.quit()

print("success")

except Exception as e:

print("fail: "+str(e))

五、配置告警关照吸收用户

在Zabbix界面上,点击管理->用户->吸收关照的用户名->报警媒介->添加。

类型:邮件关照-gpt

收件人:告警关照吸收用户的邮箱号

六、配置告警关照动作

在Zabbix界面上,点击配置->动作->Trigger actions->创建动作。

名称:邮件告警关照-gpt

条件:按照自己的想法进行设置。

点击操作标签页,添加一个操作。

Operation:发送

设置告警关照吸收用户或用户组。

仅送到:邮件关照-gpt

本文只设置了告警触发时的操作,可按需设置规复操作和更新操作。

七、验证邮件关照结果

人工仿照一个告警,触发一次邮件告警关照,或等待实际告警时,不雅观察收到的邮件内容。
如下,成功实现基于GPT供应运维办理方案并发送告警邮件。

以上便是本期的全部内容。
大家好,我是乐乐,专注运维技能研究与分享,关注我学习更多Zabbix等利用技巧。

乐维社区是运维监控领域的垂直社区,专注打造Zabbix等技能栈的线上互换与共享平台,每周三下午,社区关联答疑群

还供应免费专家在线答疑,欢迎小伙伴们加入。