如何配置Zabbix告警邮件通知并基于GPT提供解决方案?

一、概述
时间来到2023年末,距离Open AI发布GPT-3.5,首次向公众推出ChatGPT已经整整过去了一年。如今,以ChatGPT为代表的人工智能模型已然被应用众多领域,当然也包括IT运维。在IT运维中,通过对接运维监控平台,GPT已经实现为故障告警提供解决方案。本文将以Zabbix对接GPT为例,介绍如何配置Zabbix告警邮件(以QQ邮箱为例),并基于GPT提供运维解决方案。

本文主要实现的目标是:当Zabbix收到告警时,触发邮件通知,并在通知之前,将告警标题发送给互联网上的第三方免费GPT网站进行简单分析,获取相关解决方案。考虑到GPT回答问题需要一定时间,可考虑使用多个通知方式,一部分告警通过GPT获取解决方案,一部分告警直接通知,确保告警的及时性。下面让我们一起来看看如何实现吧。

注:

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

  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 = Falsecontent += 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'] = myemailmsg['To'] =  recvmailprint(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部署需求、Zabbix二开需求还可以到乐维社区留言。
乐维社区是运维监控领域的垂直社区,专注打造Zabbix等技术栈的线上交流与共享平台,每周三下午,社区关联答疑群还提供免费专家在线答疑,欢迎小伙伴们加入。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/597495.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows机器上安装mysql

0、mysql下载地址 1、参考文章 2、把Data数据目录迁移到其他盘 2.0 首先停止mysql(任务管理器-详细信息-随便找个进程右击进入转入服务,找到MySQL服务,点击停止) 2.1 windows的 mysql默认的data目录在C:\ProgramData\MySQL\MySQ…

深度神经网络中的混合精度训练

Mixed-Precision Training of Deep Neural Networks | NVIDIA Technical Blog 目录 混合精度成功训练的技术 FP32 累加 损失缩放 loss scaling FP32 Master Copy of Weights 混合精度训练迭代过程 AMP混合精度训练介绍 FP16和FP32的区别 FP16的优势 FP16的问题 解决P…

多线程基础入门【Linux之旅】——上篇【线程控制,线程互斥,线程安全】

目录 前文 回望页表 一,什么是线程 二,使用 pthread_create (线程创建) 三,线程控制 1 ,线程共享进程数据,但也拥有自己的一部分数据: 2, 线程 VS 进程优点 3,…

在前端利用Broadcast Channel实现浏览器跨 Tab 窗口通信的方法

Broadcast Channel 在前端,我们经常会用postMessage来实现页面间的通信,但这种方式更像是点对点的通信。对于一些需要广播(让所有页面知道)的消息,用postMessage不是非常自然。Broadcast Channel 就是用来弥补这个缺陷…

DVenom:一款功能强大的Shellcode加密封装和加载工具

关于DVenom DVenom是一款功能强大的Shellcode加密封装和加载工具,该工具专为红队研究人员设计,可以帮助红队成员通过对Shellcode执行加密封装和加载实现反病毒产品的安全检测绕过。 功能介绍 1、支持绕过某些热门反病毒产品; 2、提供了多种…

vue中的$nextTick的作用及使用场景

文章目录 一、$nextTick的作用二、特点和用途三、使用场景:1、在 Vue 组件内部使用:2、在普通 JavaScript 代码中使用: 三、注意事项 一、$nextTick的作用 $nextTick() 是 Vue 提供的一个异步方法,用于在 DOM 更新之后执行回调函…

【React系列】react-router

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识react-router 1.2. 前端路由原理 前端路由是如何做到URL和内容进行映射呢?监听URL的改变。 UR…

新视野英语课本复盘1

the triumpth of years of hard work 多年的辛勤付出的胜利 get by on very little sleep 靠很少的睡眠勉强维持生活或工作 pursue new passions 追求新的热爱之事 reap the benefits of this opportunity 收获这个机会带来的益处 you will not only emerge as a more broadly …

目标检测YOLO实战应用案例100讲-基于红外图像处理的无人机光伏组件故障检测(续)

目录 3.2 自适应温度阈值故障检测算法设计 3.3 基于拟合灰度曲线的故障检测方案设计

自动生成表结构screw

采用的组件 screw 操作流程&#xff1a; 1、新建springboot 项目 2、引入相关的依赖 <!-- screw核心 --><dependency><groupId>cn.smallbun.screw</groupId><artifactId>screw-core</artifactId><version>1.0.4</version><…

数据库知识汇总之NoSQL

目录 数据库常见分类关系型数据库NoSQL数据库NoSQL数据库5大类型NoSQL数据库在 大数据时代的优势 数据库常见分类 数据库可以根据不同的标准进行分类&#xff0c;以下是一些常见的数据库分类方式&#xff1a; 关系型数据库&#xff08;RDBMS&#xff09;&#xff1a;这是最常…

SwiftUI之深入解析如何使用visualEffect视图修饰符

一、visualEffect 简介 在 WWDC 23 中&#xff0c;SwiftUI 引入了一个名为 visualEffect 的新视图修饰符&#xff0c;此修饰符允许通过访问特定视图的布局信息来附加一组可动画化的视觉效果。那么&#xff0c;如何在 SwiftUI 中使用新的 visualEffect 视图修饰符呢&#xff1f…

超简单|配图详细| 双系统Ubuntu22.04 系统磁盘扩容

文章目录 1. 打开磁盘工具2. 格式化空闲分区3. 挂载该分区4. 数据迁移与备份5. 卸载原分区6. 挂载新的/home分区7. 重启系统8. 删除原来的数据8.1 直接格式化分区8.2 没有单独的/home分区1. 查看设备名2. 重新挂载该分区3. 删除原始分区/home目录中的内容4. 卸载原分区5. 重启 …

关于无人机上层控制的PID算法的思考

一、前言 背景介绍&#xff1a;PID虽然出现了很多年&#xff0c;但是目前工业界还是把PID作为主流的控制算法&#xff08;尽管学术界有很多非常时尚的控制算法&#xff0c;包括鲁邦控制&#xff0c;神经网络控制等等&#xff09;&#xff0c;PID的算法在于其不需要对系统进行复…

使用 PHP-FFMpeg 操作视频/音频文件

做音频合成的时候找到的一个php操作ffmpeg 的类库。GitHub地址&#xff1a;https://github.com/PHP-FFMpeg/PHP-FFMpeg/。本文的例子大部分都是上面的 在使用之前请安装好 FFMpeg 。如何安装&#xff1f;请看 FFmpeg 安装教程。 使用composer快速安装 > composer require …

netty使用http和webSocket

1&#xff1a;pom.xml配置 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifactId><version>4.1.73.Final</version></dependency>2&#xff1a;Netty作为HTTP服务器 import io.netty.bootstrap.Server…

【Spring实战】20 Spring Data REST+JPA构建基础的RESTful API

文章目录 1. 基础概念1&#xff09;Spring Data REST2&#xff09;JPA&#xff08;Java Persistence API&#xff09; 2. 添加依赖3. 创建JPA实体4. 创建JPA Repository5. 启用Spring Data REST6. 启动服务7. 测试8. 总结 Spring Data REST 是 Spring Framework 生态系统中的一…

加密算法和身份认证

前瞻概念 在了解加密和解密的过程前&#xff0c;我们先了解一些基础概念 明文&#xff1a;加密前的消息叫 “明文” &#xff08;plain text&#xff09;密文: 加密后的文本叫 “密文” (cipher text)密钥: 只有掌握特殊“钥匙”的人&#xff0c;才能对加密的文本进行解密,这里…

【深度学习:(Contrastive Learning) 对比学习】深入浅出讲解对比学习

对比学习允许模型从未标记的数据中提取有意义的表示。通过利用相似性和不相似性&#xff0c;对比学习使模型能够在潜在空间中将相似的实例紧密地映射在一起&#xff0c;同时将那些不同的实例分开。这种方法已被证明在计算机视觉、自然语言处理 &#xff08;NLP&#xff09; 和强…

每天刷两道题——第六天

1.1字母异位词分组 给你一个字符串数组&#xff0c;将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词指的是由重新排列源单词的所有字母得到的一个新单词。 输入: strs [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”] 输出: [[“bat”],[“nat”,…