micrometer
我们对springboot2监控,主要用的是SpringBoot Actuator这个项目。而他的底层就是micrometer
micrometer号称监控界的SLF4J,主要用来以极低极低的消耗来给Java程序提供对指标的监控。
micrometer支持接入多种数据库,这里我使用的是prometheus。
集成prometheus
我这里boot版本是2.1.8,部分maven依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--micrometer桥接prometheus-->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
<version>1.2.0</version>
</dependency>
<!--micrometer获取jvm相关信息-->
<dependency>
<groupId>io.github.mweirauch</groupId>
<artifactId>micrometer-jvm-extras</artifactId>
<version>0.1.4</version>
</dependency>
properties配置:
spring.application.name=boot-micrometer
management.metrics.tags.application=${spring.application.name}
management.endpoints.web.exposure.include=*
#可以远程关闭springboot服务
#curl -X POST http://localhost:8080/actuator/shutdown
management.endpoint.shutdown.enabled=true
management.metrics.export.simple.enabled=false
info.author=wen.jie
主启动类:
@EnableScheduling
@SpringBootApplication
public class BootMicrometerApplication {
public static void main(String[] args) {
SpringApplication.run(BootMicrometerApplication.class, args);
}
}
配置类:
@Component
public class MeterConfig implements MeterBinder {
public Counter counter;
public Map<String,Double> map;
public MeterConfig() {
map = new HashMap<>();
}
@Override
public void bindTo(MeterRegistry registry) {
this.counter = Counter.builder("demo.counter").tags("name","counter").description("this is counter").register(registry);
Gauge.builder("demo.gauge",map,x->x.get("x")).tag("name","guage").description("this is gauge").register(registry);
}
}
定时任务:
@Component
public class ScheduledConfig {
@Autowired
MeterConfig meterConfig;
int count1 = 0;
@Async("one")
@Scheduled(fixedDelay = 1000)
public void increment(){
count1++;
meterConfig.counter.increment();
meterConfig.map.put("x", (double) count1);
System.out.println(count1);
}
}
访问:http://localhost:8080/actuator/metrics
访问我刚在在配置类中设置的指标:http://localhost:8080/actuator/metrics/demo.counter,http://localhost:8080/actuator/metrics/demo.gauge
![image-20201122160920301](https://gitee.com/wj204811/wj204811/raw/master/img/20201122160920.png)
配置prometheus.yml:(添加springboot配置)
- job_name: 'springboot'
metrics_path: '/actuator/prometheus'
static_configs:
- targets: ['localhost:8080']
配置完成后,重启prometheus,然后在target中就能看到springboot应用了
接入Grafana
在Grafana页面中点击import
输入4701,点击load
稍等片刻,就会出来JVM (Micrometer)页面
选择之前生成的Prometheus的数据源
就能看到jvm的dashboard了