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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

类和对象之拜访对象村

类和对象 1.面向对象的初步认知 ————(进入对象村)1.1为什么称为对象村1.2面向对象和面向过程 2.类的定义和使用————(这个陌生人是谁?)2.1简单认识类2.2类的定义格式2.3定义一个狗类 3.类的实例化之new一个“对…

Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

IDEA创建spring boot项目的时候,pom.xml 文件中spring-boot-maven-plugin报红。 解决方法: 给spring-boot-maven-plugin指定版本 原因: idea自动找的插件版本是其他版本的,和自己设置的不同,导致idea在本地maven仓库…

深入解析JMeter响应断言功能

JMeter 是一个功能强大的性能测试工具,它可以模拟大量用户并发访问网站或应用程序,以测试其性能和稳定性。在进行性能测试时,我们需要对响应结果进行断言,以确保应用程序或网站的功能和性能符合预期。 在 JMeter 中,响…

Spring之强大的DefaultListableBeanFactory

系列文章目录 如何查看类继承结构参考这里 文章目录 系列文章目录一、DefaultListableBeanFactory的类继承实现结构二、实现接口 一、DefaultListableBeanFactory的类继承实现结构 二、实现接口 AliasRegistry:支持别名功能,一个名字可以对应多个别名B…

SpringBoot整合sentinel

1、引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency> 2、 配置文件添加 spring:cloud:sentinel:transport:dashboard: ip:8858 项目重启&#x…

[PyTorch][chapter 9][李宏毅深度学习][CNN]

前言&#xff1a; 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学习模型或类似于人工神经网络的多层感知器&#xff0c;常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家Yann LeCun&#xff0c;目前在Facebook工作&#xff0c;…

Time-series forecasting with deep learning: a survey

人们开发了许多深度学习架构来适应不同领域的时间序列数据集的多样性。在本文中&#xff0c;我们调查了一步前进和多水平时间序列预测中使用的常见编码器和解码器设计&#xff0c;描述了如何将时间信息纳入每个模型的预测中。接下来&#xff0c;我们重点介绍混合深度学习模型的…

数据结构【排序篇】

数据结构【排序篇】 文章目录 数据结构【排序篇】前言为什么突然想学算法了&#xff1f;为什么选择码蹄集作为刷题软件&#xff1f; 目录一、插入排序二、交换排序三、 选择排序四、归并排序和基数排序 结语 前言 为什么突然想学算法了&#xff1f; > 用较为“官方”的语言讲…

SpringIOC之support模块DefaultMessageSourceResolvable

博主介绍&#xff1a;✌全网粉丝5W&#xff0c;全栈开发工程师&#xff0c;从事多年软件开发&#xff0c;在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战&#xff0c;博主也曾写过优秀论文&#xff0c;查重率极低&#xff0c;在这方面有丰富的经验…

【ITK库学习】使用itk库进行图像配准:变换Transform(三)

目录 1、itkAffineTransform 仿射变换2、itkBSplineDeformableTransform B样条可变形变换 1、itkAffineTransform 仿射变换 该类实现向量空间的仿射变换&#xff08;例如空间坐标&#xff09; 此类允许定义和操作n维仿射空间&#xff08;及其关联的向量空间&#xff09;对其自…

QT C++调用python传递RGB图像和三维数组,并接受python返回值(图像)

目的&#xff1a; 用QT调用python代码&#xff0c;将QT读取的图像(Qimage)作为参数传入python中&#xff0c;将QT的三维数组作为参数传递给python&#xff0c;python接收QT传入的图像进行计算&#xff0c;将结果返回给QT并显示。 一 .pro 头文件的配置&#xff0c;和lib库的…

在 Mac 上轻松安装和配置 JMeter

Apache JMeter 是一个开源的负载测试工具&#xff0c;可以用于测试静态和动态资源&#xff0c;确定服务器的性能和稳定性。在本文中&#xff0c;我们将讨论如何下载和安装 JMeter。 安装 Java&#xff08;已安装 Java 的此步骤可跳过&#xff09; 要安装 Java&#xff0c;请按…

数字孪生与边缘计算的结合

数字孪生与边缘计算的结合可以在物理实体附近进行实时数据处理和决策&#xff0c;从而提高响应速度、降低延迟&#xff0c;并有效地利用边缘资源。以下是数字孪生在边缘计算中的一些应用&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开…

JavaWeb——后端之SpringBoot基础知识

2. SpringBoot 官网&#xff1a;https://spring.io/ Spring全家桶&#xff1a;Spring已经形成了一种开发生态圈&#xff0c;其提供的若干子项目分别用于完成特定的功能 Spring Boot简化了Spring Framework&#xff0c;不用底层实现那么配置繁琐&#xff0c;可以快速构建应用…

【Java EE初阶八】多线程案例(计时器模型)

1. java标准库的计时器 1.1 关于计时器 计时器类似闹钟&#xff0c;有定时的功能&#xff0c;其主要是到时间就会执行某一操作&#xff0c;即可以指定时间&#xff0c;去执行某一逻辑&#xff08;某一代码&#xff09;。 1.2 计时器的简单介绍 在java标准库中&#xff0c;提供…

ChatGPT怎么帮我上班的

1.解放生产力 1&#xff09;标准格式&#xff0c;完美输出。GPT对于公文等具有一定标准格式的文件&#xff0c;可以进行完美仿写&#xff0c;随随便便以假乱真那都是小菜一碟&#xff0c;这对于经常要开展规范成文的人来说&#xff0c;简直就是个福音&#xff0c;只要前期调教…

使用“反向代理服务器”的优点是什么?

反向代理服务器是一种网络架构模式&#xff0c;通常位于客户端和实际服务器之间&#xff0c;用于处理客户端请求并转发到实际服务器。以下是使用反向代理服务器的优点&#xff1a; 1.安全性&#xff1a;反向代理服务器可以提供额外的安全层。通过在反向代理服务器上配置防火墙和…

Jmeter 性能压测 —— 常见问题

1、怎么确定系统最大负载&#xff1f; 通过负载测试&#xff0c;不断增加用户数&#xff0c;随着用户数的增加&#xff0c;各项性能指标也会相应产生变化&#xff0c;当出现了性能拐点。 比如&#xff0c;当用户数达到某个数量级时&#xff0c;响应时间突然增长&#xff0c;那…

电脑重装后恢复音频输出(安装声卡驱动)

写在前面&#xff1a;本博客仅作记录学习之用&#xff0c;部分图片来自网络&#xff0c;如需引用请注明出处&#xff0c;同时如有侵犯您的权益&#xff0c;请联系删除&#xff01; 文章目录 前言基本设置检查声卡驱动自带Realtek高清晰音频管理器不带Realtek高清晰音频管理器 总…

ROS学习笔记(8)进一步深入了解ROS第二步

0.前提 在上一讲中我提到过该系列是基于宾夕法尼亚大学工程学院的ROS公开课&#xff0c;系列文章将来源于公开课中的课后习题。该系列可以很好的帮助大家更加深入的了解ROS的一些概念。&#xff08;有效面对HR的提问。&#xff09; 1. (C)What is a nodehandle object? Can we…