笃扇 发表于 4 天前

这套 Java 监控系统太香了!我连夜给项目加上了

大家好,我是程序员鱼皮。之前已经带大家完成了 AI 零代码应用生成平台 的核心功能,能够一句话生成复杂网站,并支持实时浏览和可视化修改。

但是作为一个对标大厂的项目,光实现功能怎么足够呢?
我们还要为项目添加全面的 可观测性 能力,让系统运行状态变得透明可见,为用户提供可靠稳定的服务。可观测性不仅有利于性能优化,也是现代软件架构的必备技能。
说直白一点,这也是玩具项目和企业级项目的重要区别。我相信很多朋友的项目应该是做完了就扔那了,压根儿没想到要去监控它的运行状态吧。

下面就来带大家学习可观测性相关的技术,依然是保姆级教程:

[*]可观测性介绍
[*]ARMS 系统监控
[*]Prometheus + Grafana 业务监控
⭐️ 推荐观看视频版:https://bilibili.com/video/BV1QPYDztEtW
本项目代码开源:https://github.com/liyupi/yu-ai-code-mother
编程导航 的朋友们可以看到完整的项目教程:

 
一、可观测性介绍

可观测性(Observability)指通过系统的外部输出推断其内部状态的能力。在软件开发中,可观测性是指通过日志、指标和追踪等数据,全面了解系统的运行状况,以便及时发现和解决问题。
你可以简单将其理解为 “监控”,但它又比监控的概念更广更深。
 
相关概念

接下来,我们了解一些和可观测性有关的概念。
维度和指标

维度是用来描述和分类数据的标签属性,比如用户 ID、应用 ID、模型名称等,关注 “是什么”。
指标是用来量化的数值数据,比如请求次数、响应时间、Token 消耗量等,关注 “有多少”。
简单来说,维度是可以用来筛选的标签,指标是用来计算的数值。
举个例子:

[*]维度:user_id=12345, app_id=67890, model_name=deepseek-chat
[*]指标:requests_total=100, response_time=1.5s, tokens_used=2000
 
监控的数据分类

在实现可观测性时,我们需要关注多种不同类型的数据:
1)系统指标:包括 CPU 使用率、内存占用、磁盘 I/O、网络流量等基础设施层面的监控数据。
2)应用指标:涵盖接口响应时间、QPS(每秒查询率)、错误率、JVM 状态等应用层面的性能数据。
3)业务指标:针对我们平台的特定业务逻辑,比如 AI 模型调用次数、Token 消耗量、用户活跃度等。
4)调用链:在分布式系统中,一个请求可能经过多个服务组件。Trace 表示一个完整请求的调用链路,而 Span 则代表调用链中的一个操作单元。通过分析 Trace 和 Span,我们可以清晰地看到请求在系统中的流转过程,快速定位性能瓶颈。

 
百分位数

在性能监控中,我们经常会看到 P50、P75、P90、P99 这些指标,它们被称为 百分位数。

[*]P50:中位数,表示 50% 的请求响应时间都在这个值以下
[*]P75:75% 的请求响应时间都在这个值以下
[*]P90:90% 的请求响应时间都在这个值以下
[*]P99:99% 的请求响应时间都在这个值以下
举个例子,如果一个接口的 P99 响应时间是 500ms,这意味着 99% 的请求都能在 500ms 内完成,只有 1% 的请求可能超过这个时间。P99 指标对于发现系统中的异常情况特别有用,因为它能反映出那些偶发的长尾延迟问题。



来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 这套 Java 监控系统太香了!我连夜给项目加上了