Observability Dev Services

我们已经熟悉了 Dev Service 的概念,但在可观察性的情况下,我们需要一种编排和连接多个开发服务的方法,通常是整个服务堆栈;比如定期抓取应用程序度量指标的度量指标代理,将其推送到时序数据库,Grafana 提供该时序数据的图形。

考虑到这一点,我们添加了一个新的概念,即开发资源,这是开发服务概念和 Testcontainers 之间的适配器。由于我们现在有了细粒度的服务(每个容器都有开发资源),我们还可以进一步扩展,允许用户选择使用此新开发资源概念的方式:

每个开发资源实现也是一个 @QuarkusTestResourceLifecycleManager 实现

  • 让开发服务从类路径中挑选各种开发资源,并向其应用 Dev Service 概念

  • 显式禁用开发服务和启用开发资源,并使用较轻量的启动和停止开发资源的概念

  • 显式禁用开发服务和开发资源,并使用 Quarkus 的 @WithTestResource 测试概念(请参阅注释)

你可以添加可观察性扩展依赖项和必要的开发资源依赖项,或者使用现有的 sinks- pom.xml 文件,这些文件会添加可观察性扩展依赖项以及特定技术栈所需的其他依赖项;例如,victoriametrics 接收器将包含 quarkus-observability-devresource-victoriametricsquarkus-victoriametrics-client 依赖项,这些依赖项已经包含在 pom.xml 中。

确保将这些接收器依赖项的 scope 设置为 provided,否则 Testcontainers 等库会最终进入你的应用的生产库中:

        <dependency>
            <groupId>io.quarkus</groupId>
            <artifactId>quarkus-observability-devservices-...</artifactId>
            <scope>provided</scope> <!-- !! -->
        </dependency>

让我们实际看看所有这一切,采用通常的 all-in-one Grafana 用法,以 OTel-LGTM Docker 镜像的形式。