利用大模型反馈故障的解决方案
通过二次开发原有巡检,针对智能巡检的告警报告,实现自动化故障反馈
背景
观测云有两个错误巡检脚本,RUM 错误巡检和 APM 错误巡检,代码均开源。
错误巡检的主要目的是发现新出现的错误消息(error stack),原有的巡检在上报了相应的事件报告后,只是定位了问题,并没有给出合适的解决方案。OpenAI 的出现,给了解决个性化 error stack 的一些洞察和解决方案。
本次最佳实践通过二次开发原有巡检,针对智能巡检的告警报告,实现自动化故障反馈,为用户提出合适的改进意见,一并在事件报告中体现,作为更加完备的巡检解决方案。
实现流程
1.安装观测云集成(ChatGpt 监控)[ID: guance_chatgpt_monitor] 脚本。完整流程可参考最佳实践文档《一行代码实现 OpenAI 可观测》

2.安装观测云 APM 新增错误或 RUM 新增错误巡检脚本。
本最佳实践以RUM 新增错误巡检为例。

3.对新增错误获取到的 error-stack 进行提取,与大模型进行问答。
在构建事件报告的 RUMEventStruct 类下新增一个大模型故障反馈模块,示例代码如下:
# 大模型故障反馈
def build_chatgpt_solution(self, js_new_error_messages, start_time, end_time):
chatgpt_solution_section = event_detail.Section(name='大模型故障反馈', name_en='Solution Details', index=3)
OPENAI_API_KEY = DFF.ENV('OPENAI_API_KEY')
# 发送请求并获取回复
url = 'https://us1-private-func.guance.com/api/v1/al/auln-...../simplified'
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {OPENAI_API_KEY}'
}
for js_new_error in js_new_error_messages:
js_new_error_message = js_new_error[0]
error_stack = js_new_error_message['error_stack']
print(f'error_stack:\n{error_stack}')
datas = {
"model": "gpt-3.5-turbo",
"messages": [{'role':'user', 'content':f'如果错误:{error_stack},请问原因是什么?怎么解决?'}],
"temperature": 0.5,
"presence_penalty": 0,
"stream": False,
}
response = requests.post(url=url, headers=headers, json=datas)
md = event_detail.Markdown("")
text_list = [
f'**解决方案**:`{response.text}`']
text_list_en = [
f'**Solution**:`{response.text}`',
]
md.set_text(*text_list)
md.set_text(*text_list_en, lang='en')
chatgpt_solution_section.add(md)
return chatgpt_solution_section

4.url 处填写第一步中授权链接的 POST 简化形式(JSON)。

5.巡检一小时跑一次,如果所连接应用触发了巡检逻辑,即可在观测云控制台的 **监控 -> 智能巡检 模块看到生成的事件报告。**如下图所示:

总结
在原有的智能巡检事件报告中,给出的建议相对固定,不能全面地将所有可能涉及到的错误建议给出。结合利用大模型,可以针对性地对触发的告警错误给出建议,提高事件报告的可读性。
Get a tailored plan
Contact us
Join the community
Scan with WeChat
to join the community
to join the community
Try Guance
Start online and pay only for what you use.
Get startedChoose a Guance plan