千分尺 - 在度量名称中添加默认前缀

Posted

技术标签:

【中文标题】千分尺 - 在度量名称中添加默认前缀【英文标题】:Micrometer - Add default prefix in metric name 【发布时间】:2020-06-19 08:48:15 【问题描述】:

在千分尺中,我们可以创建一个新的量规,做类似的事情

myMeterRegistry.gauge("my_metric", 69);

在此处查看代码https://github.com/micrometer-metrics/micrometer/blob/master/micrometer-core/src/main/java/io/micrometer/core/instrument/MeterRegistry.java#L468

可以默认为我的myMeterRegistry 对象包含一个“前缀”名称吗?

手动,应该是这样的:

myeterRegistry.gauge("myprefix_my_metric", 69);

我的目标是每个在我的应用程序中创建计量指标的开发人员都不必在指标名称的开头添加“myprefix_”

【问题讨论】:

【参考方案1】:

MeterFilter 会让你这样做(但不要这样做!):

new MeterFilter() 
    @Override
    public Meter.Id map(Meter.Id id) 
      return id.withName("myprefix." + id.getName());
    

但是,常见的前缀通常是不正确的维度。通常用户会尝试添加区域、主机或应用程序的名称作为前缀。这些最好作为标签提供,因为那时您可以跨系统聚合并使用通用仪表板。

推荐使用commonTags 方法:

registry.config().commonTags("team", "myteam", "region", "us-east-1");

对于分级计量注册表,标签将作为前缀包含在名称中。

【讨论】:

感谢您的意见。问题,使用通用标签,开发人员应该关心添加通用标签,对吗?我的意思是,没有办法通过项目级别的配置来做到这一点,所以项目中使用的任何 MeterRegistry 对象都会默认获取那些通用标签,对吧? 如果您使用的是 SpringBoot,您似乎可以通过配置来执行此操作(请参阅github.com/micrometer-metrics/micrometer/issues/646)。此外,像 Prometheus 这样的一些后端允许将此作为​​服务发现机制的一部分(请参阅prometheus.io/blog/2015/06/01/advanced-service-discovery)

以上是关于千分尺 - 在度量名称中添加默认前缀的主要内容,如果未能解决你的问题,请参考以下文章

如何在 XSLT 输出中控制名称空间前缀(特别是默认名称空间)?

XPATHS和默认命名空间

关于django xadmin的学习改造(菜单名称,更改默认前缀数据库)

删除ns2作为默认名称空间前缀

如何从 Flyway 迁移名称中删除前缀?

ABP框架源码学习之修改默认数据库表前缀或表名称