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

Spring引导千分尺分层度量命名空间级联

夏侯弘光
2023-03-14

我有一个Spring Boot Java应用程序,正在向一个分层的Graphite度量系统发送度量。我在使用管理层。指标。出口石墨标记为前缀,并将主机和应用程序映射为前缀“我的指标”。然后,我有一个名称空间<代码>jvm的度量。记忆力已提交,但度量名称空间将作为主机进行连接。应用程序。JVMMORYCOMMITED* 。所以它代替了点(“.”)在metric名称空间中,并对名称空间的以下部分进行camelcusing。

应用属性<代码>管理。指标。出口石墨标记为前缀=[主机,应用程序]

标记作为前缀的自定义程序。

    @Bean
    public MeterRegistryCustomizer<MeterRegistry> commonTags() {
        return r -> r.config().commonTags("host", "localhost", "app", "app");
    }

当我看着/执行器/指标/jvm。记忆力提交的endpoint我看到以下内容:

  "name": "jvm.memory.committed",
  "description": "The amount of memory in bytes that is committed for the Java virtual machine to use",
  "baseUnit": "bytes",
  "measurements": [
    {
      "statistic": "VALUE",
      "value": 759701504
    }
  ],
  "availableTags": [
    {
      "tag": "area",
      "values": [
        "heap",
        "nonheap"
      ]
    },
    {
      "tag": "app",
      "values": [
        "app"
      ]
    },
    {
      "tag": "host",
      "values": [
        "localhost"
      ]
    },
    {
      "tag": "id",
      "values": [
        "G1 Old Gen",
        "CodeHeap 'non-profiled nmethods'",
        "G1 Survivor Space",
        "Compressed Class Space",
        "Metaspace",
        "G1 Eden Space",
        "CodeHeap 'non-nmethods'"
      ]
    },
  ]
}

但是,当发送度量时,度量名称已从*更改。jvm。记忆力已promise* 至<代码>*。JVMMORYCOMMITED* 。如何以点表示法保留度量名称空间?

请参见以下tcpdump输出:

$ sudo tcpdump -i any -A -s0 -vv udp port 2003 | grep -i committed
tcpdump: data link type PKTAP
tcpdump: listening on any, link-type PKTAP (Apple DLT_PKTAP), capture size 262144 bytes
....E....5..@............E...p..localhost.app.jvmMemoryCommitted.area.heap.id.G1_Eden_Space 178257920.00 1628102627
....E....5..@............E...p..localhost.app.jvmMemoryCommitted.area.heap.id.G1_Eden_Space 178257920.00 1628102627
....E...o...@............E...m..localhost.app.jvmMemoryCommitted.area.heap.id.G1_Old_Gen 465567744.00 1628102627
....E...o...@............E...m..localhost.app.jvmMemoryCommitted.area.heap.id.G1_Old_Gen 465567744.00 1628102627
....E.......@............E...s..localhost.app.jvmMemoryCommitted.area.heap.id.G1_Survivor_Space 10485760.00 1628102627
....E.......@............E...s..localhost.app.jvmMemoryCommitted.area.heap.id.G1_Survivor_Space 10485760.00 1628102627
....E...m...@............E...{..localhost.app.jvmMemoryCommitted.area.nonheap.id.CodeHeap_'non-nmethods' 3604480.00 1628102627
....E...m...@............E...{..localhost.app.jvmMemoryCommitted.area.nonheap.id.CodeHeap_'non-nmethods' 3604480.00 1628102627
....E....J..@............E......localhost.app.jvmMemoryCommitted.area.nonheap.id.CodeHeap_'non-profiled_nmethods' 10420224.00 1628102627
....E....J..@............E......localhost.app.jvmMemoryCommitted.area.nonheap.id.CodeHeap_'non-profiled_nmethods' 10420224.00 1628102627
....E.......@............E...z..localhost.app.jvmMemoryCommitted.area.nonheap.id.Compressed_Class_Space 9306112.00 1628102627
....E.......@............E...z..localhost.app.jvmMemoryCommitted.area.nonheap.id.Compressed_Class_Space 9306112.00 1628102627
....E....,..@............E...n..localhost.app.jvmMemoryCommitted.area.nonheap.id.Metaspace 69607424.00 1628102627
....E....,..@............E...n..localhost.app.jvmMemoryCommitted.area.nonheap.id.Metaspace 69607424.00 1628102627
^C444 packets captured
3200 packets received by filter
0 packets dropped by kernel```

I think the problem is that I'm using tags, but in a Hierarchical metrics system, but I can't figure out how to configure it properly. I can't seem to find my folly.

Spring Boot 2.5.2
Micrometer Core and Micrometer Registry Graphite 1.7.2

共有1个答案

贲招
2023-03-14

Graphite使用Hiree icalNameMapper将度量名称和标签转换为分层字符串

看见https://micrometer.io/docs/registry/graphite#_hierarchical_name_mapping

我不确定为什么您的映射器会将您的度量名称缩放为camelC,但您可以在构建自己的GraphiteMeter注册表并对它们的生成方式进行微调控制时设置Hi分层NameMapper

 类似资料:
  • 我正在构建一个Spring Boot应用程序,并计划使用进行Prometheus的数据刮取。看来主要的办法是用千分尺。但是,我看到还有另一个库,这就是Spring Metrics。

  • 是否有任何方法可以测量实用程序如何使用线程池?我已经浏览了代码,但还没有看到任何直接的选项。

  • 我们有一个限制实现,基本上可以归结为: 我想收集关于信号量对方法的整体响应时间的影响的指标。例如,我想知道等待获取的线程数量,等待的时间等等。我想,我正在寻找的是一种也能捕捉时间信息的量规。 如何测量Semphore统计数据?

  • 我试图获得Spring引导执行器的概念度量。执行器度量由千分尺实现。依赖关系已经包含在执行器起动机pom中了,我猜?有一个“/metrics”endpoint。但是数据保存在哪里呢?对于洞时间,我的应用程序正在运行? 我可以加上其他像普罗米修斯这样的监控系统。它将从/Prometheusendpoint刮取数据。但是,它只是相同数据的另一种格式?

  • 我是一个新的使用Spring引导的度量,并从千分尺开始。在我的spring-boot应用程序中,我找不到执行计时器度量的好例子(事实是它是新的)。我使用的是spring-boot-starter-web:2.0.2.release dependency。但是在运行spring-boot服务器和启动jconsole时,我没有看到它显示度量(MBeans),所以我还显式地包含了以下依赖项: 此外,mi

  • 响应于“/acturet/prometheus”的DistributionSummary可用的度量仅是度量的Sum、Max和Count。 我想显示在选定的时间量内API调用所用的平均时间。用于EX:API在过去5分钟内所用的平均时间。