微信扫码
添加专属顾问
我要投稿
AIOps实践新突破,深度融合监控与故障分析,提升运维效率。 核心内容: 1. Prometheus与夜莺结合,实现高效故障告警 2. DeepSeek大模型接入,自动分析故障原因与处理建议 3. 告警通知模板与媒介设置,实现自动化通知流程
前面写过使用夜莺作为 Prometheus
告警引擎的文章,在此基础上接入 DeepSeek
进行故障分析,给出可能引起故障的原因和排查方法,大大降低平均故障处理时间(MTTR)。
工作流程:Prometheus
周期采集Exporter
的指标并存储在本地,夜莺周期查询Prometheus
中的指标是否符合故障告警规则,在产生故障后将故障信息发送给 DeepSeek
,DeepSeek
通过分析给出的故障原因和处理建议,拼接原告警信息和DeepSeek
分析结果一并发给用户。对于没有使用夜莺的小伙伴可以直接使用webhook
来执行脚本。
「流程图」
告警通知
--> 通知模板
--> 新增
, 新增aiops
模板
#### {{if .IsRecovered}}<font color="#008800">? {{.RuleName}}恢复</font>{{else}}<font color="#FF0000">? {{.RuleName}}告警</font>{{end}}
---
**级别状态**:{{if .IsRecovered}}<font color="#008800">S{{.Severity}}</font>{{else}}<font color="#FF0000">S{{.Severity}}</font>{{end}}
{{if eq (index .TagsMap "job") "web_status"}}
**归属公司**:{{index .TagsMap "company"}}
**项目名称**:{{index .TagsMap "project_cn"}}
**系统名称**:{{index .TagsMap "name"}}
{{if .IsRecovered}}**恢复内容**:{{index .TagsMap "name"}} 当前已恢复正常!
{{else}}**告警内容**:{{index .TagsMap "name"}} 当前无法访问!
{{end}}
**系统地址**:[{{index .TagsMap "instance"}}]({{index .TagsMap "instance"}})
{{end}}
{{if .IsRecovered}}**触发时间**:{{timeformat .FirstTriggerTime}}
**恢复时间**:{{timeformat .LastEvalTime}}{{else}}**触发时间**:{{timeformat .FirstTriggerTime}}{{end}}
告警通知
--> 通知设置
--> 通知媒介
--> 添加
aiops
aiops
告警通知
--> 通知设置
--> 通知脚本
--> 使用脚本
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import sys
import json
import requests
class Sender(object):
@classmethod
def send_email(cls, payload):
# already done in go code
pass
@classmethod
def send_wecom(cls, payload):
# already done in go code
pass
# 钉钉机器人
DINGTALK_URL = "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXX"
# DeepSeek key
DEEPSEEK_URL = "https://api.deepseek.com/v1/chat/completions"
DEEPSEEK_KEY = "sk-XXXXXXXXXX"
@classmethod
def call_deepseek(cls, message):
headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {cls.DEEPSEEK_KEY}"
}
data = {
"model": "deepseek-chat",
"messages": [{
"role": "user",
"content": f"""
告警信息:{message}
你是一名运维领域的专家,请分析告警信息给出可能原因、处理建议和紧急程度
排版要求:AI故障分析标题为蓝色h4大小,语言简洁突出重点
"""
}]
}
try:
response = requests.post(cls.DEEPSEEK_URL, headers=headers, json=data)
response.raise_for_status()
return response.json()['choices'][0]['message']['content']
except Exception as e:
print(f"Deepseek API error: {str(e)}")
return"无法获取处理建议"
@classmethod
def send_dingtalk(cls, payload):
original_message = payload.get('tpls').get("dingtalk", "dingtalk not found")
analysis = cls.call_deepseek(original_message)
final_message = f"""{original_message}
---
{analysis}
"""
headers = {
"Content-Type": "application/json;charset=utf-8"
}
body = {
"msgtype": "markdown",
"markdown": {
"title": "告警通知",
"text": final_message
}
}
response = requests.post(cls.DINGTALK_URL, headers=headers, data=json.dumps(body))
print(f"notify_dingtalk: status_code={response.status_code} response_text={response.text}")
@classmethod
def send_mm(cls, payload):
# already done in go code
pass
@classmethod
def send_sms(cls, payload):
pass
@classmethod
def send_voice(cls, payload):
pass
def main():
payload = json.load(sys.stdin)
with open(".payload", 'w') as f:
f.write(json.dumps(payload, indent=4))
for ch in payload.get('event').get('notify_channels'):
send_func_name = "send_{}".format(ch.strip())
ifnot hasattr(Sender, send_func_name):
print("function: {} not found", send_func_name)
continue
send_func = getattr(Sender, send_func_name)
send_func(payload)
def hello():
print("hello nightingale")
if __name__ == "__main__":
if len(sys.argv) == 1:
main()
elif sys.argv[1] == "hello":
hello()
else:
print("I am confused")
告警管理
--> 告警规则
,原有的规则勾上aiops
通知媒介
原告警信息
在这里只是简单的将告警信息发送给 DeepSeek
大模型进行分析然后将分析的结果发送给我们,分析的结果一般没办法完全符合我们的预期。下一步需要进行「RAG」(检索增强生成),通过检索外部知识库的方式,将知识库中的相关内容作为提示输入给大模型,从而给出更加符合我们预期的分析结果。在AIOps
建设的过程中,运维知识库的建设将非常重要,「RAG」的结果符合我们的预期后,再结合工作流、AI Agent
的方式进行告警收敛、故障自愈等操作。相关开源工具 --- dify
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-03-26
谷歌深夜炸场:Gemini 2.5 震撼发布!号称世界最强“思考型”AI,各种测试大幅领先
2025-03-26
谷歌震撼发布:Gemini 2.5 Pro 实验版开启智能新纪元
2025-03-26
为什么大模型要使用Token?为什么不使用UTF8?
2025-03-26
实测:Deepseek满血、14b、7b基于同一知识库回答差异分析
2025-03-26
百度推出的“秒哒”到底如何?实测效果来了
2025-03-25
微信聊天框内置元宝,超级 App 又一轮进化开始
2025-03-25
万字长文,聊聊下一代AI Agent的新范式
2025-03-25
从FP8到安全张量,DeepSeek‑V3‑0324 重塑大模型生态的秘密武器
2024-08-13
2024-06-13
2024-08-21
2024-09-23
2024-07-31
2024-05-28
2024-08-04
2024-04-26
2024-07-09
2024-09-17
2025-03-26
2025-03-25
2025-03-23
2025-03-22
2025-03-22
2025-03-22
2025-03-22
2025-03-22