编辑此页面

可观察性 Dev Services

我们已经熟悉了开发服务的概念,但在可观测性的情况下,我们需要一种方式来协调和连接多个开发服务,通常是一整套服务;例如,一个指标代理定期抓取应用程序的指标,并将它们推送到时间序列数据库中,然后 Grafana 从这个时间序列数据中生成图表。

考虑到这一点,我们添加了一个新的开发资源概念,即开发服务概念和Testcontainers之间的适配器。 既然我们有了细粒度的服务 - 每个容器都有一个开发资源,我们可以更进一步,允许用户选择使用这种新的开发资源概念的方式

每个开发资源实现也是一个 @QuarkusTestResourceLifecycleManager 实现
  • 交给开发服务从类路径中选取各种开发资源,并将开发服务概念应用于它

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

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

您可以添加可观测性扩展依赖项以及所需的开发资源依赖项,也可以使用现有的 sinks - pom.xml 文件,这些文件添加可观测性扩展依赖项以及某些技术堆栈所需的其他依赖项;例如,victoriametrics sink 将已经包含 quarkus-observability-devresource-victoriametricsquarkus-victoriametrics-client 依赖项在 pom.xml 中。

请确保将这些 sink 依赖项的 scope 设置为 provided,否则 Testcontainers 等库最终会出现在你的应用程序生产库中

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

让我们看看这在实践中是如何运作的,以常用的 all-in-one Grafana 用法,以 OTel-LGTM Docker 镜像的形式。

相关内容