赞
踩
监控要可视化,仪表化,这样才能有最直观的感受。
监控软件系统多种多样,类型繁多,如:AppOptics , Azure Monitor , Netflix Atlas , CloudWatch , Datadog , Dynatrace ,Elastic , Ganglia , Graphite , Humio , Influx/Telegraf , JMX , KairosDB , New Relic , Prometheus , SignalFx , Google Stackdriver , StatsD , Wavefront ,Nightingale等。
要选择或者更替可视化的监控软件,就显得尤为麻烦。而Micrometer就是一个集成了上述这些监控软件的第三方,同时它还有一些自己的扩展。不必去适配各种监控软件,只需要使用和配置好Micrometer,间接地使用上述软件。
Micrometer是一款监控指标的度量类库,Micrometer 会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。Micrometer 还支持推送数据到多个不同的监控系统。因其功能强大,spring在Springboot2.x中正式将其纳入范围。
springboot集成Micrometer:
1)加入springboot集成micrometer依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
2)加入对应使用的监控系统依赖,实现数据上报到对应监控系统:
格式:io.micrometer/micrometer-registry-{system}
示例:加入夜莺依赖
<dependency>
<groupId>com.github.lynxcat</groupId>
<artifactId>micrometer-registry-nightingale</artifactId>
<version>1.6.5</version>
</dependency>
简述:监控系统单适配、多适配
Meter是收集关于你的应用的一系列指标的接口。
Meter是由MeterRegistry创建的。每个支持的监控系统都必须实现MeterRegistry。
Micrometer中包含一个SimpleMeterRegistry,它在内存中维护每个meter的最新值,并且不将数据导出到任何地方。
如果你还没有一个首选的监测系统,你可以先用SimpleMeterRegistry:
MeterRegistry registry = new SimpleMeterRegistry();
注意:如果你用Spring的话,SimpleMeterRegistry是自动注入的
还提供一个CompositeMeterRegistry用于将多个registries结合在一起使用,允许同时向多个监视系统发布指标。
CompositeMeterRegistry composite = new CompositeMeterRegistry();
Counter compositeCounter = composite.counter("counter");
compositeCounter.increment();
SimpleMeterRegistry simple = new SimpleMeterRegistry();
composite.add(simple);
compositeCounter.increment();
简述:监控不同业务指标实现Meter即可
Meter是收集关于你的应用的一系列指标的接口。
Meter是由MeterRegistry创建的。每个支持的监控系统都必须实现MeterRegistry。 Micrometer提供一系列原生的Meter,包括Timer , Counter , Gauge , DistributionSummary , LongTaskTimer , FunctionCounter , FunctionTimer , TimeGauge。不同的meter类型导致有不同的时间序列指标值。例如,单个指标值用Gauge表示,计时事件的次数和总时间用Timer表示。
简述:适配监控系统需定义各自不同规则的命名转换器
Micrometer使用了一种命名约定,用.分隔小写单词字符。不同的监控系统有不同的命名约定。
每个Micrometer的实现都要负责将Micrometer这种以.分隔的小写字符命名转换成对应监控系统推荐的命名。
因此每个监控系统都要提供一个命名转换器,NamingConvention来覆盖默认的命名转换
registry.config().namingConvention(myCustomNamingConvention);
示例:定义http请求次数timer
registry.timer("http.server.requests");
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。