57.4注册自定义指标
要注册自定义指标,请将 MeterRegistry 注入组件,如以下示例所示:
class Dictionary {
private final List<String> words = new CopyOnWriteArrayList<>();
Dictionary(MeterRegistry registry) {
registry.gaugeCollectionSize("dictionary.size", Tags.empty(), this.words);
}
// …
}
如果您发现跨组件或应用程序重复检测一套度量标准,则可以将此套件封装在 MeterBinder 实现中。默认情况下,所有 MeterBinder beans的
指标都会自动绑定到Spring - 托管 MeterRegistry 。
57.5自定义各个指标
如果需要将自定义应用于特定的 Meter 实例,可以使用 io.micrometer.core.instrument.config.MeterFilter 接口。默认情况下,所
有 MeterFilter beans都将自动应用于千分尺 MeterRegistry.Config 。
例如,如果要将 mytag.region 标记重命名为 mytag.area 以查找以 com.example 开头的所有仪表ID,您可以执行以下操作:
@Bean
public MeterFilter renameRegionTagMeterFilter() {
return MeterFilter.renameTag("com.example", "mytag.region", "mytag.area");
}
57.5.1通用标签
通用标签通常用于操作环境中的维度向下钻取,如主机,实例,区域,堆栈等。共用标签应用于所有仪表,并且可以按以下示例所示进行配置:
management.metrics.tags.region=us-east-1
management.metrics.tags.stack=prod
上面的示例将 region 和 stack 标记添加到所有计量表,其值分别为 us-east-1 和 prod 。
如果您使用Graphite,则常用标记的顺序很重要。由于使用此方法无法保证常用标记的顺序,因此建议Graphite用户定义自定
义 MeterFilter 。
57.5.2 Per-meter属性
除了 MeterFilter beans之外,还可以使用属性在每米的基础上应用一组有限的自定义。Per-meter自定义适用于以给定名称开头的所有仪表
ID。例如,以下内容将禁用任何ID为 example.remote 的计量表
management.metrics.enable.example.remote=false
以下属性允许每米定制:
表57.1。Per-meter自定义
Property 描述
management.metrics.enable 是否拒绝米发布任何指标。
management.metrics.distribution.percentiles-histogram 是否发布适合于计算可聚合(跨维度)
百分位近似的直方图。
management.metrics.distribution.minimum-expected-value ,
management.metrics.distribution.maximum-expected-value
通过限制预期值的范围来发布更少的直
方图桶。
management.metrics.distribution.percentiles 发布在您的应用程序中计算的百分位数
值
management.metrics.distribution.sla 使用SLA定义的存储桶发布累积直方图。
有关 percentiles-histogram , percentiles 和 sla 背后概念的更多详细信息,请参阅千分尺文档的“直方图和百分位数”部分。