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

测微计:移除/禁用特定标签

郑高驰
2023-03-14

我正在使用默认的测微计绑定器,其中一个创建了Gauagejvm。记忆力已使用。问题是它有两个可用标记:“区域”和“id”。这实际上产生了我不感兴趣的6个仪表。

我能够做到这一点:

@Bean
public MeterRegistryCustomizer<MeterRegistry> metricsCustomizer() {

    return  registry -> {
        registry.config().meterFilter(MeterFilter.ignoreTags("id"));
    };
}

但这将忽略带有此标记的所有米。

我如何才能只拒绝jvm。记忆力是否与id标签一起使用?

谢谢

编辑:
查看全局注册表:

Metrics.globalRegistry.get注册表

jvm.memory.used的每个仪表都具有以下结构:

<代码>“MeterId{name='jvm.memory.used',标记=[标记(区域=非堆),标记(id=元空间)]}”

因此,我们不能只按getName()进行筛选。等于(“jvm.memory.used”)


共有1个答案

翟黎明
2023-03-14
匿名用户

我想你可能把概念混为一谈了。这些标签只是用额外的信息“装饰”度量/量表,它们实际上不会导致发送更多的量表。例如,行<代码>度量。仪表(“名称”,标签(“id”,“a”,“area”,“b”),1)只是一个单一仪表对象。拒绝jvm。记忆力与id一起使用可能会拒绝所有jvm。记忆力已使用。如果仍要筛选jvm。记忆力与您可以使用的id标记一起使用

@Bean
public MeterFilter meterFilter() {
    return MeterFilter.deny(
        id -> "jvm.memory.used".equals(id.getName()) &&
              id.getTags().stream().anyMatch(t -> "id".equals(t.getKey()))
         );
    }

另一方面,如果您只想删除id标记,则需要使用replaceTags方法。

@Bean
public MeterFilter meterFilter() {
    return new MeterFilter() {
        @Override
        public Meter.Id map(Meter.Id id) {
            if("jvm.memory.used".equals(id.getName())) {
                List<Tag> tags = id.getTags().stream().filter(t -> !"id".equals(t.getKey())).collect(Collectors.toList());
                return id.replaceTags(tags);
            }
           return id;
        }
    };
}

您还可以完全自定义仪表。通过调用新仪表返回Id。Id(名称、标记、基本单位、描述、类型)如下所示,并更改要更改的值:

@Bean
public MeterFilter meterFilter() {
    return new MeterFilter() {
        @Override
        public Meter.Id map(Meter.Id id) {
            if("jvm.memory.used".equals(id.getName())) {
                return new Meter.Id(id.getName(), <put tags here>, id.getBaseUnit(), id.getDescription(), id.getType()
            }
           return id;
        }
    };
}

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

  • 嗨,我有以下代码。该代码处于 for 循环中,它生成了 300 多个绘图。 我已经查看了下面的链接(以及更多): 删除垫图中的 xtick? https://datascience.stackexchange.com/questions/48035/how-to-show-percentage-text-next-to-the-horizontal-bars-in-matplotlib 当我尝试第

  • 我试图删除堆栈中的特定元素,但遇到了一些问题。我的想法是将元素弹出到一个临时堆栈中,弹出我正在寻找的索引,然后将临时堆栈中的元素弹出到主堆栈中。我很难想象如何让临时堆栈回到顶部。任何帮助都将不胜感激。 想法?干杯!

  • 我想将Micrometer的默认执行器度量(JVM内存等)发送到AWS ElasticSearch实例,并在Kibana中可视化数据。 我想我的设置是正确的,但我没有得到数据在吉巴纳。 以下是我的配置: URL在应用程序中是硬编码的,我只是在这里删除了它。我使用的url来自ES域的AWS仪表板,其中列出: 但是使用这个配置,我还没有能够得到任何数据显示在Kibana。 其他注意事项:我知道Micr

  • 我正在使用这两行将HibernateQueryMetrics和HibernateMetrics注册到我们的千分尺,但我们没有看到那里报告任何指标。 即使在本地测试并发送查询数据库的请求时,注册表也没有列出任何ID包含“Hibernate”的仪表。我们确实看到了其他像HikariCP仪表的仪表,但没有Hibernate的仪表。这是我第一次使用微米s,所以我倾向于相信我在这里遗漏了一些步骤。

  • 问题内容: 我正在构建HTML5游戏,并且尝试将鼠标指针放在特定事件上的某个控件上,以便在特定方向上移动始终具有相同的结果。这可能吗? 问题答案: 因此,我知道这是一个古老的话题,但是我首先要说这是不可能的。当前最接近的事情是将鼠标锁定在单个位置,并跟踪其x和y的变化。这个概念已经被Chrome和Firefox所采用。它由所谓的 Mouse Lock进行管理 ,点击逃逸将破坏它。通过我的 简要 阅