设为首页 加入收藏

TOP

Micrometer 快速入门(二)
2019-09-24 18:11:04 】 浏览:96
Tags:Micrometer 快速 入门
db"
, "users"); // 数据库调用次数 2 registry.counter("http.requests", "uri", "/api/users"); // HTTP请求数

2.3.2.  Common tags

Common tags可以被定义在registry级别,并且会被添加到每个监控系统的报告中

预定义的Tags有host , instance , region , stack等 

1 registry.config().commonTags("stack", "prod", "region", "us-east-1");
2 registry.config().commonTags(Arrays.asList(Tag.of("stack", "prod"), Tag.of("region", "us-east-1"))); // 二者等价

2.3.4.  Tag values

Tag values must be non-null 

 

2.4.  Meter filters

每个registry都可以配置指标过滤器,它有3个方法:

Deny (or accept) meters from being registered

Transform meter IDs

Configure distribution statistics for some meter types.

实现MeterFilter就可以加到registry中

1 registry.config()
2     .meterFilter(MeterFilter.ignoreTags("too.much.information"))
3     .meterFilter(MeterFilter.denyNameStartsWith("jvm")); 

过滤器按顺序应用,所有的过滤器形成一个过滤器链(chain) 

2.4.1.  Deny/accept meters

接受或拒绝指标

1 new MeterFilter() {
2     @Override
3     public MeterFilterReply accept(Meter.Id id) {
4        if(id.getName().contains("test")) {
5           return MeterFilterReply.DENY;
6        }
7        return MeterFilterReply.NEUTRAL;
8     }
9 }

MeterFilter还提供了许多方便的静态方法用于接受或拒绝指标 

2.4.2.  Transforming metrics 

一个转换过滤器可能是这样的:

1 new MeterFilter() {
2     @Override
3     public Meter.Id map(Meter.Id id) {
4        if(id.getName().startsWith("test")) {
5           return id.withName("extra." + id.getName()).withTag("extra.tag", "value");
6        }
7        return id;
8     }
9 }

 

2.5.  Counters(计数器)

Counter接口允许以固定的数值递增,该数值必须为正数。 

 1 MeterRegistry registry = new SimpleMeterRegistry();
 2 
 3 // 写法一
 4 Counter counter = registry.counter("counter");
 5 
 6 // 写法二
 7 Counter counter = Counter
 8     .builder("counter")
 9     .baseUnit("beans") // optional
10     .description("a description of what this counter does") // optional
11     .tags("region", "test") // optional
12     .register(registry);

2.5.1.  Function-tracking counters

跟踪单调递增函数的计数器

1 Cache cache = ...; // suppose we have a Guava cache with stats recording on
2 registry.more().counter("evictions", tags, cache, c -> c.stats().evictionCount()); // evictionCount()是一个单调递增函数,用于记录缓存被剔除的次数

 

2.6.  Gauges

gauge是获取当前值的句柄。典型的例子是,获取集合、map、或运行中的线程数等。

MeterRegistry接口包含了用于构建gauges的方法,用于观察数字值、函数、集合和map。 

1 List<String> list = registry.gauge("listGauge", Collections.emptyList(), new ArrayList<>(), List::size); //监视非数值对象
2 List<String> list2 = registry.gaugeCollectionSize("listSize2", Tags.empty(), new ArrayList<>()); //监视集合大小
3 Map<String, Integer> map = registry.gaugeMapSize("mapGauge", Tags.empty(), new HashMap<>()); 

还可以手动加减Gauge

1 AtomicInteger n = registry.gauge("numberGauge", new AtomicInteger(0));
2 n.set(1);
3 n.set(2);

 

2.7.  Timers(计时器) 

Timer用于测量短时间延迟和此类事件的频率。所有Timer实现至少将总时间和事件次数报告为单独的时间序列。

例如,可以考虑用一个图表来显示一个典型的web服务器的请求延迟情况。服务器可以快速响

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java 截取字符串中指定数据及之后.. 下一篇java使用dom4j操作XML增删改查-超..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目