AI 和可观测性到底如何整合?
这一波 AI 浪潮跟以往都不同,各个行业都看到了新的可能性,都想把 AI 引入自己的场景,看看能迸发什么样的助力。笔者所在的监控、可观测性领域,也有各种尝试,比如:
通过 AI 翻译人类语言生成 SQL 或 Promql
把告警事件扔给 AI,让 AI 生成泛泛的建议
把一批日志或 Trace Span 扔给 AI,让 AI 做 Summary 或异常甄别
上面的思路确实可以放到开源夜莺项目(Nightingale)里,作为一款开源软件,在一些功能上做增强,确实会变得更性感。但这些增强都是面向“点”的,有没有面向“面”的更让人眼前一亮的思路呢?
在我们的夜莺商业版(即 Flashcat)里,近期做了一个尝试,这里把思路分享给大家,欢迎跟我们一起交流:https://flashcat.cloud/contact
核心思路
监控、可观测性确实在很多方面都能起到作用,但是可观测性的最重要应用场景还是“故障定位”,这也是大部分 SRE、DEV 最为关注的场景。
那我们就让 AI 帮我们做故障定位吧!
最好的方式,是把最近几个小时的可观测性数据全部扔给 AI,让 AI 自动分析,告诉我有哪些故障、影响面几何、根因在哪里,但是这个数据量巨大无比,算力需求也很大,时间也很长,真要等做到,估计黄花菜都凉了。
那退一步,有哪些问题、故障,这个信息我不用 AI 了,因为已经有各种成熟的告警引擎了,比如普通的阈值告警、同环比告警、数据缺失告警、Hot-Winters 等统计算法告警等。我直接把已经生成的告警交给 AI 来分析。
但是,这个分析仍然需要巨量的数据,怎么简化?如果能大概挑出跟这个故障相关的数据也行,把 AI 要分析的数据减少,只给它相对少量的、关联性强的数据,这就有了生产环境落地的可能性。
于是,可以总结,核心需要的是:
跟故障有关联性且较为完备的数据!
具体应该怎么落地?我以 Flashcat 举例,把整个流程给你串一遍,希望对你的思路有所帮助。
1. 集成大模型
为了做这么一个智能可观测性平台,首先毫无疑问的是你得把大模型集成进来,让平台知道如何调用大模型的 API:

2. 集成数据
监控、可观测性类的数据,可能来自很多数据源,很多公司都有很多套相关的系统。比如:
指标数据可能来自 Zabbix、Prometheus、云监控
日志数据可能来自 Elastic、ClickHouse、Splunk
链路数据可能来自 Arms、Jaeger、Skywalking
AI + 可观测性,要想效果好,各类数据源集成少不了。给大家瞅一眼我们目前集成的数据源,有个体感:

如果你的数据不完备,作为乙方我们很乐意帮你一起建设😆,数据建设是典型的脏活累活,需要采集各类指标、日志、链路、事件,还要做标签增强、数据 ETL 等。不过建成之后,价值是很大滴。
3. 构建数据关联、做数据筛选
上面提到,因为数据量太大,我们只能挑选少量和故障关联性强的数据给到 AI。虽说在采集和 Pipeline 过程中可以打上一些关联标签,但未必足够。
巧了,我们之前做的“灭火图”产品,恰好可以在这里起到作用。灭火图就是对数据做了各类关联,而且灭火图里的数据都是重要数据,故障之后,根据灭火图可以很容易知道故障相关的重要数据是哪些。

大家可以参考 这篇文章 或 Google 关键字“快猫星云 灭火图”了解相关设计思路,这里不再重复赘述。
4. AI 介入分析
有了上面的工作铺垫,AI 可以上场了。比如某个核心接口故障,让 AI 帮我们一键分析一下。AI 会利用数据关联性,找到相关的指标、日志、Span、事件等,挨个分析并最终输出结论。

近期文章
SRETALK 主要交流 SRE、监控、可观测性、开源等话题,欢迎小伙伴们投稿哈,直接在公众号后台留言即可。
评论