micrometer:重点总结

    micrometer号称监控界的SLF4J,以极低的开销为基于JVM的程序收集监控指标。

1、注册表Registry:

    Meter是用来收集应用的测量指标的接口。micrometer通过MeterRegistry创建和保存Meter,每个监控系统都会有MeterRegistry的实现。

SimpleMeterRegistry

    SimpleMeterRegistry持有内存中每一个指标的最新值,但是不用于对外提供。在未确定

定义方式:

MeterRegistry registry = new SimpleMeterRegistry();

混合注册

    Micrometer 提供了一个CompositeMeterRegistry可添加多个注册表的程序,支持将metrics标准同时发布到多个监视系统。

CompositeMeterRegistry composite = new CompositeMeterRegistry();

Counter compositeCounter = composite.counter("counter");
compositeCounter.increment(); (1)

SimpleMeterRegistry simple = new SimpleMeterRegistry();
composite.add(simple); (2)

compositeCounter.increment(); (3)

    备注:

    1)CompositeMeterRegistry composite中添加的所有注册表,都具备composite的指标,例如simple中有Counter compositeCounter;

    2)当Counter compositeCounter增加的时候,CompositeMeterRegistry composite中添加的所有注册表中的compositeCounter都会相应地增加。

全局注册

    Micrometer提供了一个静态全局注册表Metrics.globalRegistry和一组静态构建器,用于基于此注册表生成计量表。globalRegistry是一个组合注册表。

class MyComponent {
    Counter featureCounter = Metrics.counter("feature", "region", "test"); (1)

    void feature() {
        featureCounter.increment();
    }

    void feature2(String type) {
        Metrics.counter("feature.2", "type", type).increment(); (2)
    }
}

class MyApplication {
    void start() {
        // wire your monitoring system to global static state
        Metrics.addRegistry(new SimpleMeterRegistry()); (3)
    }
}

    全局注册表中添加的指标会自动添加到所有注册表中。

2、指标

    micrometer的指标由指标名称和键值对组成。指标需要注册到注册表中,通过注册表来进行发布。micrometer的指标分为4类:Counter、Gauge、Timer、Summary。

    一般来说,指标的使用分成4个环节:创建、注册、使用、发布。

1、Counter

    counter是计数器,特征是只增不减。counter通常用来表示业务的请求次数之类的只增不减的指标。通常会使用counter的increment()方法或者increment(int n)方法,分别增加1和n。示例:

MeterRegistry registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT);
Counter counter = registry.counter("counter", "tag_key", "tag_value"); 

Flux.interval(Duration.ofMillis(10))
        .doOnEach(d -> {
            if (rand.nextDouble() + 0.1 > 0) { 
                counter.increment(); 
            }
        })
        .blockLast();

2、Gauge

    Gauge是仪表值。顾名思义,Gauge用来记录可以瞬息万变的一个数值,例如CPU利用率、内存利用率等。示例:

//example 1:
List<String> list = registry.gauge("listGauge", Collections.emptyList(), new ArrayList<>(), List::size);
List<String> list2 = registry.gaugeCollectionSize("listSize2", Tags.empty(), new ArrayList<>());
Map<String, Integer> map = registry.gaugeMapSize("mapGauge", Tags.empty(), new HashMap<>());

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

//example 3:
Gauge gauge = Gauge
    .builder("gauge", myObj, myObj::gaugeValue)
    .description("a description of what this gauge does") // optional
    .tags("region", "test") // optional
    .register(registry);

3、Timer

    Timer是计时器,用来测量短时间的代码块的执行时间的分布。Timer记录代码块的执行时间后,可以对执行时间进行统计,分析记录执行的最大时间、总时间、平均时间、执行完成的总任务等。

    Timer的方法:

void record(long amount, TimeUnit unit);
void record(Duration duration);
double totalTime(TimeUnit unit);

    Timer的使用示例:

Timer timer = Timer
    .builder("my.timer")
    .description("a description of what this timer does") // optional
    .tags("region", "test") // optional
    .register(registry);

4、Summary

    Summary是摘要,用于跟踪事件的分布。micrometer的Summary可以通过prometheus的Summary来理解:prometheus指标

代码示例:

//example 1:
DistributionSummary summary = registry.summary("response.size");

//example 2:
DistributionSummary summary = DistributionSummary
    .builder("response.size")
    .description("a description of what this summary does") // optional
    .baseUnit("bytes") // optional (1)
    .tags("region", "test") // optional
    .scale(100) // optional (2)
    .register(registry);

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微米级测量器API是一种使用编程语言(比如Java)进行微米级测量的应用程序接口(API)。它允许开发人员通过编写代码来控制测量仪器,从而进行精确到微米级的测量。 使用微米级测量器API,开发人员可以通过各种功能来实现准确的测量任务。例如,他们可以使用API读取测量仪器的当前位置,或者将测量指令发送到测量仪器以执行特定的测量操作。API还可以提供一些计算功能,如计算测量结果的平均值、最大值或最小值。 微米级测量器API还可以与其他应用程序或设备进行集成。开发人员可以将API作为中间层来连接测量仪器和其他应用程序,使测量数据可以在不同的系统之间流通和共享。这使得测量数据可以与其他系统的数据进行比较、分析和处理,从而为用户提供更全面的信息和更准确的结果。 总之,微米级测量器API提供了开发人员与测量仪器进行交互和控制的方便方式。它能够帮助开发人员轻松实现微米级测量任务,并与其他应用程序或设备进行集成,为用户提供更好的测量数据和结果。 ### 回答2: micrometer api是一个用于应用程序性能监控的Java框架。它提供了一组简单易用的API,用于测量应用程序的各种指标,如请求处理时间、内存使用量等。micrometer api可以与各种监控系统和指标存储进行集成,如Prometheus、Graphite和InfluxDB等。 使用micrometer api,开发人员可以方便地在应用程序中定义和记录自定义的指标。它提供了各种度量的方法,比如计数器、分布和计时器等。开发人员可以根据自己的需求选择适合的度量类型,并使用提供的API进行度量。 micrometer api还提供了基于标签的度量支持,开发人员可以为指标添加自定义标签,以便更好地组织和过滤指标数据。这使得应用程序的监控数据更加灵活和可定制。 micrometer api还支持将指标数据导出到各种监控系统和存储。开发人员可以选择将数据导出为平台相关的格式,如Graphite,在其他监控工具中进行使用。或者将数据导出到统一的格式,如Prometheus的Exposition格式,以便使用Prometheus进行集中式的监控和告警。 总之,micrometer api提供了一个简单灵活的方式来监控和度量Java应用程序的各种指标。它的易用性和高度可扩展性使得开发人员可以轻松地集成应用程序性能监控,并获取准确的指标数据。 ### 回答3: Micrometer API是一种用于在Java应用程序中度量(measure)和报告(report)指标的开源库。它是Spring Boot 2.0中的一个核心组件,也可以与其他Java框架一起使用。 Micrometer API的设计目标是提供一种统一的、跨度量系统(metrics system)和监控系统(monitoring system)的方式。它提供了一套简单易用的API,让开发人员可以轻松地收集应用程序的各种指标,如响应时间、吞吐量、错误率等等。 使用Micrometer API,开发人员可以选择将指标报告到不同的度量系统中,包括Prometheus、Graphite、InfluxDB和Datadog等。这使得开发人员可以根据具体需求和现有的基础设施选择适合自己的度量系统,而不需要改变应用程序代码。 Micrometer API还支持创建自定义的指标,并可以通过编程方式对指标进行操作,如增加、减少、重置等。这使得开发人员可以根据自己的业务逻辑和场景需求进行灵活的度量和监控。 总之,Micrometer API是一个功能强大、易于使用的度量和监控库,它能够帮助开发人员轻松地收集和报告应用程序的指标,并与各种度量系统无缝集成。它的出现大大简化了应用程序的监控过程,提供了更好的可视化、分析和优化能力,有助于提高应用程序的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值