Quarkus 中的可观察性
可观测性可以定义为允许人提问和回答关于系统问题的能力。
随着时间的推移,已经开发了许多扩展,为 Quarkus 应用程序提供可观测性功能。本指南将概述 Quarkus 中可用的可观测性扩展,以及哪些扩展可用于根据 Quarkus 应用程序的需求提供可观测性。
遥测
遥测包含关于系统内部状态的数据,可以分为不同的类别或信号
-
日志记录,经典的本地或集中式日志
-
指标,在每个 Quarkus 应用程序实例中计算的指标
-
追踪,跨应用程序的分布式追踪
-
性能分析,用于分析和监控应用程序的性能、资源使用情况和运行时行为
-
事件,最通用的信号。它表示程序执行过程中发生的某些重要事情。
指南
Quarkus 可观测性中只有一个重要的指南
-
OpenTelemetry OTLP 协议是将遥测数据从 Quarkus 应用程序发送出去的推荐方式。这为应用程序的遥测提供了一个统一的输出。
概述
一些扩展具有重叠的功能,并且对于每种类型的信号都有推荐的扩展。
下表概述了 Quarkus 中可用的可观测性扩展,它们提供的信号以及每个信号的推荐扩展。
扩展 | 日志 | 指标 | 追踪 | 性能分析 | 健康检查 | 活动 |
---|---|---|---|---|---|---|
O |
O |
R |
X |
|||
R |
||||||
X |
R |
R |
X |
|||
R |
X |
|||||
X |
||||||
X |
||||||
D |
-
R - 推荐
-
X - 支持
-
D - 已弃用
-
O - 默认关闭
信号
日志记录和事件
我们可以说日志行是一种包含严重性分类的事件。OpenTelemetry 项目认识到这种方法,从而产生了几乎相同的 OpenTelemetry 日志和事件 API。
日志是一个更古老的概念,并且仍然在业界广泛使用,这就是为什么上面的概览表为日志和事件设置了不同的列。
将来,我们将看到这两个概念的融合,因为人们开始采用 OpenTelemetry 日志。
Quarkus 日志记录扩展
Quarkus 使用 JBoss Log Manager 日志记录后端将应用程序和框架日志发布到控制台或文件中。这些日志也可以转发到集中式日志记录系统,可以使用传统的 quarkus-logging-gelf
扩展,也可以使用推荐的 quarkus-opentelemetry
或 quarkus-micrometer-opentelemetry
扩展。
OpenTelemetry 日志在 quarkus-opentelemetry
扩展中默认禁用,但在 quarkus-micrometer-opentelemetry
扩展中默认启用。
其他事件
在 Quarkus 中没有生成可观测性事件的推荐方法,因为 OpenTelemetry Events API 仍在开发中,并且不建议使用。
quarkus-jfr
扩展可以生成与可观测性相关的事件。
指标
Quarkus 长期以来一直使用 Micrometer 从应用程序收集指标。Quarkus 中几乎所有开箱即用的指标检测都是使用 Micrometer 实现的。
最近,OpenTelemetry Metrics 已在 quarkus-opentelemetry
扩展中可用,但默认情况下已禁用,因为指标语义约定尚未稳定。
解决方案是使用 quarkus-micrometer-opentelemetry
扩展来允许同时使用 Micrometer 指标和 OpenTelemetry 日志和追踪,并使用 OTLP 协议进行统一输出。也可以使用此扩展手动创建 OpenTelemetry 指标,并且为了方便起见,默认情况下启用所有信号。
追踪
Quarkus 使用 OpenTelemetry Tracing 为应用程序提供追踪功能。quarkus-opentelemetry
和 quarkus-micrometer-opentelemetry
扩展是推荐的追踪方式。
性能分析
Quarkus 使用 Java Flight Recorder (JFR) 为应用程序提供性能分析功能。quarkus-jfr
扩展是生成性能分析应用程序所需事件的推荐方法。
OpenTelemetry 性能分析信号仍在开发中,将来可能会提供。
查看遥测
Grafana LGTM Dev Service 扩展可用于在 Grafana 中可视化日志、指标和追踪的遥测数据。