熱門搜索 Zabbix技術資料 Zabbix常見問、答討論 成功案例 Zabbix交流區 Prometheus交流區
時間來到2023年末,距離Open AI發布GPT-3.5,首次向公眾推出ChatGPT已經整整過去了一年。如今,以ChatGPT為代表的人工智能模型已然被應用眾多領域,當然也包括IT運維。在運維實踐中,通過對接運維監控平臺,GPT已經實現為故障告警提供解決方案。
本文將以zabbix對接GPT為例,當zabbix告警時,觸發郵件通知,并在通知之前,將告警標題發送給互聯網上的第三方免費GPT網站進行簡單分析,并獲取推薦的解決方案。
注:
1.本次使用的環境是zabbix 6版本;
2.本文用到了http://www.zaiwen.top/提供的免費GPT接口,此網站為公益免費網站;
3.考慮到GPT回答問題需要一定時間,可考慮使用多個通知方式,一部分告警通過GPT獲取解決方案,一部分告警直接通知,確保告警的及時性。
以QQ郵箱為例。首先,在郵箱上設置第三方授權密鑰。點擊設置->賬號->管理服務。
點擊生成授權碼:
創建一個報警媒介類型:
名稱:郵件通知-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 = "http://aliyun.zaiwen.top/message"
gpt_url = "http://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
本文只設置了告警觸發時的操作,可按需設置恢復操作和更新操作。
人工模擬一個告警,觸發一次郵件告警通知,或等待實際告警時,觀察收到的郵件內容。
上就是本期的全部內容。大家好,我是樂樂,專注運維技術研究與分享,關注我學習更多zabbix等使用技巧,更多運維問題、zabbix部署需求、zabbix二開需求還可以到尊龍時凱社區留言。
尊龍時凱社區是運維監控領域的垂直社區,專注打造zabbix等技術棧的線上交流與共享平臺,每周三下午,社區關聯答疑群(如下圖)還提供免費專家在線答疑,歡迎小伙伴們加入。
采用分布式實施,分別集中監控線上(阿里云) IT基礎架構和線下IT基礎架構,將不同類別的基礎架構統一在一個平臺上實現監控功能。分別對主機、網絡、存儲、數據...
View details基于企業IT系統結構特點,結合客戶運維痛點與實際需求,尊龍時凱為該客戶打造了涵蓋全局監控、資產梳理、大屏視圖、專線鏈路、管理門戶、告警中心等于一...
View details尊龍時凱以運維監控起家,具有十多年運維產品經驗,形成了非常成熟的運維監控解決方案。同時,尊龍時凱緊跟信創國產化浪潮,積極推動信創產品適配,融入信創生態,能...
View details