【问题标题】:querying data with micrometer用千分尺查询数据
【发布时间】:2018-10-05 08:44:42
【问题描述】:

我们有这个花哨的监控系统,我们的 spring-boot 服务将指标发布到带有千分尺的流入数据库。有一个不错的 grafana 前端,但问题是我们现在处于一个阶段,我们必须在其他服务中提供一些这些指标来进行推理。 整个系统都是前任搭建的,我现在对它的了解几乎为零。我可以添加和发布新的指标,但我这辈子都无法输出它。

这是一个简短的例子: 我们的网关会为相机发布到它的每个图像增加计数器。计数器的定义如下所示:

private val imageCounters = mutableMapOf<String, Counter>()
private val imageCounter = { camera: String ->
    imageCounters.getOrPut(camera) {
        registry.counter("gateway.image.counter", "camera", camera)
    }

并且计数器在代码中递增如下:

imageCounter("placeholder-id").increment()

现在我们正在改进我们的计费方式,计费服务需要知道某个摄像头的多少图像通过了网关。所以我尝试的第一件事自然是这样的:

class MonitoringService(val metrics: MeterRegistry) {

    private val log = logger()
    private val imageCounters = mutableMapOf<String, Counter>()
    private val imageCounter = { camera: String ->
        imageCounters.getOrPut(camera) {
            metrics.counter("gateway.image.counter", "camera", camera)
        }
    }

    fun test() {
        val test = imageCounter("16004").count()
        val bugme = true
        log.info("influx test: $test")
    }
}

这有两个问题:首先它总是返回零,所以很明显我做错了。我只是无法弄清楚它是什么。 其次,即使它会返回一个合理的值,我也没有办法通过时间来限制它(我通常需要当月上传的图像数量)。

让我担心的是,虽然我可以找到很多关于如何使用千分尺发布数据的文档,但我似乎找不到任何关于如何查询的文档。测微计是否只设计用于发布监测数据,而不用于查询? .getOrPut() 方法表明它可以同时进行这两种操作,但据我所知,查询数据似乎没有记录,这可能是我的一个误解。

有一个用于 Java 的 influx-db 客户端,我接下来会尝试,但归根结底,我不希望我的应用程序中的多个组件仅仅因为我不熟悉我继承的工具。

【问题讨论】:

    标签: spring-boot kotlin influxdb micrometer spring-micrometer


    【解决方案1】:

    InfluxMeterRegistry 是一个StepMeterRegistry,所以从它创建的Counter 是一个StepCounterStepCounter.increment() 增加当前步骤中的计数,但StepCounter.count() 将返回上一步中的计数。这就是为什么您在 count() 中看到 0 的原因,尽管您已经多次调用了 increment()。下一步就可以看到了,默认步长是1分钟,所以要等1分钟才能看到。

    查看以下测试以了解其工作原理:https://github.com/izeye/sample-micrometer-spring-boot/blob/influx/src/test/java/com/izeye/sample/InfluxMeterRegistryTests.java

    【讨论】:

    • 感谢您的解释,但是我将如何阅读它在过去 n 小时内增加了多少次?您上面描述的内容实际上仅在构建事件系统时有用,而不是在需要推理指标时。
    • @UncleBob 恕我直言,它应该发生在监控系统中。
    • 我将其解释为“千分尺不是适合这项工作的工具”。谢谢,最终这就是我需要知道的。我想我应该用不同的措辞来表达这个问题......
    猜你喜欢
    • 2023-02-22
    • 1970-01-01
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多