【问题标题】: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_”

【问题讨论】:

    标签: micrometer


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-29
    • 1970-01-01
    • 2012-06-18
    • 2021-06-27
    • 1970-01-01
    相关资源
    最近更新 更多