当前位置: 首页 > 知识库问答 >
问题:

使用测微计查询数据

杭涵映
2023-03-14

我们有一个奇特的监控系统,我们的Spring启动服务将指标发布到带有千分尺的流入数据库中。有一个很好的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有一个invox-db客户端,我接下来将尝试它,但归根结底,我不希望我的应用程序中的多个组件做同样的事情,仅仅因为我不熟悉我继承的工具。

共有1个答案

伍弘盛
2023-03-14

< code>InfluxMeterRegistry是一个< code>StepMeterRegistry,因此从中创建的< code >计数器是一个< code>StepCounter。< code > step counter . increment()递增当前步骤中的计数,但< code>StepCounter.count()将返回上一步骤中的计数。这就是为什么尽管您已经多次调用了< code>increment(),但< code>count()仍为0。您可以在下一步看到它,默认步骤是1分钟,所以您必须等待1分钟才能看到它。

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

 类似资料:
  • 问题内容: 我有一个关于MYSQL中的选择查询的问题 我有两个不同的表,我想获得一定的结果 我使用了COUNT方法,该方法只给我结果(> = 1) 但实际上,我想使用包含零的所有计数怎么做? 我的查询是: 第一张桌子:Content_hits 第二张表:Content_tag 结果但不完整 例如:tag_id = 1的Subsrciber6应该具有count(*)= 0 问题答案: 现在,您已经进

  • 在使用Micronaut数据执行显式查询(@query)时,是否可以给出一个countQuery示例来实现分页?在中没有示例https://micronaut-projects.github.io/micronaut-data/latest/guide/#explicitQueries 我必须提出一个如下的问题

  • 我是测微计新手。有人能告诉我如何在spring boot中集中管理微服务指标吗? 在哪里可以获得influxdb中所有注册的服务信息、矩阵和存储的度量?

  • 所有的查询条件不区分调用顺序,但必须在调用Get,Exist, Sum, Find,Count, Iterate, Rows这几个函数之前调用。同时需要注意的一点是,在调用的参数中,如果采用默认的SnakeMapper所有的字符字段名均为映射后的数据库的字段名,而不是field的名字。

  • 问题内容: 我想按数据库中的条件计数记录数。 我尝试使用下一个查询 但是没有方法可以执行此操作并获得结果。 我知道,我可以使用 所以问题是,查询是否具有更高的性能?如果,那么我该如何执行查询呢? 问题答案: 您可以通过调用来执行第一个查询,例如。 如果要将计数分配给变量,则需要将其转换为适当的类型(它可以取决于DB,但很可能是Long)。第二个查询效率很低,因为Hibernate需要从数据库中检索

  • 问题内容: 在SQL中按月将一列中的1-12连接到一堆计数的好方法是什么?…在​​SQL中 最终会像 编辑-基本上是一种获取我的月份列表/表格/任何内容的巧妙方法 问题答案: 许多方法…在上一份工作中对许多应用程序来说对我来说效果很好的一种方法是建立时间表。 然后,您可以将其日期字段放在startstamp和endstamp之间的timeframes表中进行联接。 这样可以很容易地拉出某个时间段或