首页 > 其他分享 >如何配置Zabbix告警邮件通知并基于GPT提供解决方案?

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

时间:2024-01-04 16:02:14浏览次数:40  
标签:通知 content 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接口,该网站为公益免费网站。


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

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

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

点击生成授权码:

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

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

三、配置告警媒介

创建一个报警媒介类型:

名称:邮件通知-gpt

类型:脚本

脚本名称:CXHEmail.py

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

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

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

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}

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

选项默认即可:

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

四、放置告警通知脚本

将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='[email protected]'     ##发送邮件的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_07

五、配置告警通知接收用户

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

类型:邮件通知-gpt

收件人:告警通知接收用户的邮箱号

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

六、配置告警通知动作

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

名称:邮件告警通知-gpt

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

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

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

Operation:发送消息

设置告警通知接收用户或用户组。

仅送到:邮件通知-gpt

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

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

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

七、验证邮件通知结果

人工模拟一个告警,触发一次邮件告警通知,或等待实际告警时,观察收到的邮件内容。如下,成功实现基于GPT提供运维解决方案并发送告警邮件。

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

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

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

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

以上就是本期的全部内容。大家好,我是乐乐,专注运维技术研究与分享,关注我学习更多Zabbix等使用技巧,更多运维问题、Zabbix部署需求、Zabbix二开需求还可以到乐维社区留言。

乐维社区是运维监控领域的垂直社区,专注打造Zabbix等技术栈的线上交流与共享平台,每周三下午,社区关联答疑群还提供免费专家在线答疑,欢迎小伙伴们加入。

标签:通知,content,Zabbix,GPT,告警,邮件
From: https://blog.51cto.com/lwops/9101946

相关文章

  • 【ChatGPT 默认强化学习策略】PPO 近端策略优化算法
    PPO近端策略优化算法PPO=概率比率裁剪+演员-评论家算法演员-评论家算法:多智能体强化学习核心框架概率比率裁剪:逐步进行变化的方法PPO目标函数的设计重要性采样KL散度 PPO=概率比率裁剪+演员-评论家算法论文链接:https://arxiv.org/abs/1707.06347OpenAI提出PPO旨在......
  • 文心一言 VS 讯飞星火 VS chatgpt (165)-- 算法导论13.1 5题
    五、用go语言,证明:在一棵红黑树中,从某结点x到其后代叶结点的所有简单路径中,最长的一条至多是最短一条的2倍。文心一言:首先,我们要理解红黑树的性质。红黑树是一种自平衡的二叉查找树,它满足以下性质:每个节点或是红色,或是黑色。根节点是黑色。每个叶节点(NIL或空节点)是黑色。如果......
  • 文心一言 VS 讯飞星火 VS chatgpt (166)-- 算法导论13.1 6题
    六、用go语言,在一棵黑高为k的红黑树中,内部结点最多可能有多少个?最少可能有多少个?文心一言:红黑树是一种自平衡的二叉查找树,其中每个节点都有一个颜色属性,可以是红色或黑色。红黑树满足以下性质:每个节点或者是红色,或者是黑色。根节点是黑色。每个叶节点(NIL或空节点)是黑色。如......
  • @Zabbix监控网络设备Trap接口UPDOWN关联告警配置
    网络设备Trap接口UPDOWN关联告警配置文章目录网络设备Trap接口UPDOWN关联告警配置SNMPTrap描述1.监控平台监控项配置2.监控平台日志接收3.监控平台触发器配置4.监控平台触发器功能测试1)告警触发2)告警恢复5.告警解析SNMPTrap描述在Zabbix中,SNMPTrap是一种基于SNMP协议的事件通知机......
  • 叫板GPT-4的Gemini,我做了一个聊天网页,可图片输入,附教程
    先看效果:简介Gemini是谷歌研发的最新一代大语言模型,目前有三个版本,被称为中杯、大杯、超大杯,GeminiUltra号称可与GPT-4一较高低:GeminiNano(预览访问)为设备端体验而构建的最高效模型,支持离线使用场景。GeminiPro(已推出)性能最佳的模型,具有各种文本和图像推理任务的功......
  • EassyCVR告警警告出错是什么原因?该如何解决?
    视频集中存储/云存储/视频监控管理平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。AI智能/大数据视频分析EasyCVR平台已经广泛应用在工地、工厂、园区、楼宇、校园、仓储等场景中。问......
  • OpenAI换血大震动始末:“ChatGPT之父”奥特曼,缘何被“扫地出门”?
    近期,AI业界发生了一场“大地震”。作为聊天机器人ChatGPT的开发者,OpenAI无疑是最受关注的人工智能公司之一。就是这家公司的联合创始人、CEO、有“ChatGPT之父”之称的阿尔特曼在“疯狂的5天”里,经历了被闪电免职、加入微软、最终又官复原职的戏剧性反转。ChatGPT:我是ChatGPT,一个由......
  • 安防LiteCVR监控视频云平台支持按时间查询告警列表消息
    随着人们对安全监控的需求不断提高,传统的监控设备已经无法满足人们的需求。因此,高清监控设备的出现成为了行业发展的必然趋势。高清监控设备不仅可以提供更清晰的画面,还可以提供更准确的监控信息。这也使得高清监控设备在安防监控领域的应用越来越广泛。 LiteCVR视频平台基于云......
  • 文心一言 VS 讯飞星火 VS chatgpt (169)-- 算法导论13.2 2题
    二、用go语言,证明:在任何一棵有n个结点的二叉搜索树中,恰有n-1种可能的旋转。文心一言:要证明在任何一棵有n个结点的二叉搜索树中,恰有n-1种可能的旋转,我们可以按照以下步骤逐步推导:二叉搜索树的性质:在二叉搜索树中,任意一个结点的左子树上的所有结点值都小于该结点值,而右子......
  • 文心一言 VS 讯飞星火 VS chatgpt (168)-- 算法导论13.2 1题
    一、用go语言,写出RIGHT-ROTATE的伪代码。文心一言:在计算机科学中,右旋转(RIGHT-ROTATE)是一种常见的操作,通常用于数组或链表。以下是一个使用Go语言实现右旋转的伪代码:funcrightRotate(arr[]int,kint)[]int{n:=len(arr)k%=n//防止k大于n的情况rev......