编辑此页面

Quarkus 中的可观察性

可观测性可以定义为允许人提问和回答关于系统问题的能力。

随着时间的推移,已经开发了许多扩展,为 Quarkus 应用程序提供可观测性功能。本指南将概述 Quarkus 中可用的可观测性扩展,以及哪些扩展可用于根据 Quarkus 应用程序的需求提供可观测性。

遥测

遥测包含关于系统内部状态的数据,可以分为不同的类别或信号

  • 日志记录,经典的本地或集中式日志

  • 指标,在每个 Quarkus 应用程序实例中计算的指标

  • 追踪,跨应用程序的分布式追踪

  • 性能分析,用于分析和监控应用程序的性能、资源使用情况和运行时行为

  • 事件,最通用的信号。它表示程序执行过程中发生的某些重要事情。

指南

Quarkus 可观测性中只有一个重要的指南

  • OpenTelemetry OTLP 协议是将遥测数据从 Quarkus 应用程序发送出去的推荐方式。这为应用程序的遥测提供了一个统一的输出。

概述

一些扩展具有重叠的功能,并且对于每种类型的信号都有推荐的扩展。

下表概述了 Quarkus 中可用的可观测性扩展,它们提供的信号以及每个信号的推荐扩展。

扩展 日志 指标 追踪 性能分析 健康检查 活动

quarkus-opentelemetry

O

O

R

X

quarkus-micrometer

R

quarkus-micrometer-opentelemetry

X

R

R

X

quarkus-jfr

R

X

Quarkus 中的日志记录

X

quarkus-logging-json

X

quarkus-logging-gelf

D

  • R - 推荐

  • X - 支持

  • D - 已弃用

  • O - 默认关闭

信号

日志记录和事件

我们可以说日志行是一种包含严重性分类的事件。OpenTelemetry 项目认识到这种方法,从而产生了几乎相同的 OpenTelemetry 日志和事件 API。

日志是一个更古老的概念,并且仍然在业界广泛使用,这就是为什么上面的概览表为日志和事件设置了不同的列。

将来,我们将看到这两个概念的融合,因为人们开始采用 OpenTelemetry 日志。

Quarkus 日志记录扩展

Quarkus 使用 JBoss Log Manager 日志记录后端将应用程序和框架日志发布到控制台或文件中。这些日志也可以转发到集中式日志记录系统,可以使用传统的 quarkus-logging-gelf 扩展,也可以使用推荐的 quarkus-opentelemetryquarkus-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-opentelemetryquarkus-micrometer-opentelemetry 扩展是推荐的追踪方式。

性能分析

Quarkus 使用 Java Flight Recorder (JFR) 为应用程序提供性能分析功能。quarkus-jfr 扩展是生成性能分析应用程序所需事件的推荐方法。

OpenTelemetry 性能分析信号仍在开发中,将来可能会提供。

查看遥测

Grafana LGTM Dev Service 扩展可用于在 Grafana 中可视化日志、指标和追踪的遥测数据。

相关内容