zabbix邮箱AI告警
拓扑结构
主机名 | IP | 主机角色 | linux版本 |
---|---|---|---|
zabbix-server | 192.168.242.61 | server | Rocky9.4 |
zabbix-proxy | 192.168.242.62 | proxy | Rocky9.4 |
zabbix-agent | 192.168.242.63 | agent | CentOS7 |
zabbix-server安装pypl包
同步时间
dnf install -y chrony # rocky用这个
yum install -y chrony
vi /etc/chrony.conf
# 添加以下NTP服务器(请注释原来的NTP服务器)
pool ntp1.aliyun.com iburst
pool ntp.tencent.com iburst
pool ntp1.bce.baidu.com iburst
# 设置开机自启
systemctl restart chronyd
systemctl enable chronyd
编写邮箱告警代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Project: zxnbmk
# @Author: zxnbmk
# @File name: Email_AI_Warnning
# @Create time: 2024/12/29 下午2:14
# @Date : PyCharm
# encoding=utf-8
from email.mime.text import MIMEText
from email.header import Header
from smtplib import SMTP
import sys
import spark_ai
smtpaddr = 'smtp.qq.com' ## 邮件服务器域名
myemail = '你的账户' ##发送邮件的账户
password = '你的授权码' ## 填写登陆客户端的授权码,在邮箱里生成同时需要打开POP3,IMAP服务
recvmail = sys.argv[1] ##发送邮件给谁
subject = sys.argv[2] ## 发送的主题
content = sys.argv[3] ##发送的内容
content += '\n'
def ai_api()->str:
issue="请详细列出关于以下运维问题的推荐解决方案是什么:\n"+ content
messages=content+"=======================================\n"+spark_ai.chat_dispose(issue)
return messages
def send_mail():
msg = MIMEText("""%s""" % ai_api(), "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()
if __name__ == '__main__':
send_mail()
编写spark接口
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Project: zxnbmk
# @Author: zxnbmk
# @File name: spark_ai
# @Create time: 2024/12/29 下午2:22
# @Date : PyCharm
# coding: utf-8
from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage
from json import loads
#星火认知大模型Spark Max的URL值,其他版本大模型URL值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_URL = 'wss://spark-api.xf-yun.com/v3.5/chat'
#星火认知大模型调用秘钥信息,请前往讯飞开放平台控制台(https://console.xfyun.cn/services/bm35)查看
SPARKAI_APP_ID = '你的id'
SPARKAI_API_SECRET = '你的secret'
SPARKAI_API_KEY = '你的key'
#星火认知大模型Spark Max的domain值,其他版本大模型domain值请前往文档(https://www.xfyun.cn/doc/spark/Web.html)查看
SPARKAI_DOMAIN = 'generalv3.5'
def chat_dispose(issue: str)->str:
"""
用于调用sparkai的接口进行对话
:param issue: 你的问题
:return: 将会返回问题的答案
"""
spark = ChatSparkLLM(
spark_api_url=SPARKAI_URL,
spark_app_id=SPARKAI_APP_ID,
spark_api_key=SPARKAI_API_KEY,
spark_api_secret=SPARKAI_API_SECRET,
spark_llm_domain=SPARKAI_DOMAIN,
streaming=False,
)
messages = [ChatMessage(
role="user",
content=issue
)]
handler = ChunkPrintHandler()
a = spark.generate([messages], callbacks=[handler])
print(a.generations[0][0].text)
return a.generations[0][0].text
上述代码位置:server主机的 /usr/lib/zabbix/alertscripts/下
并将这两个py文件权限加上x权限
修改server配置文件
开启邮箱媒介
配置告警通知接收用户
配置告警通知动作
自定义监控项(检测登录数量)
下载zabbix-get(proxy端)
手动创建zabbix的配置文件(扩展目录中),用于自定义key
创建配置文件,以及内容如下:(这里需要明确下我们是监控哪个服务器,就往哪个服务器写配置,这里是agent)
创建模板与监控项
创建触发器
创建图像
关联主机
手动触发
手动新建多个窗口登录