• Prometheus+grafana监控SpringBoot2应用


    micrometer

    我们对springboot2监控,主要用的是SpringBoot Actuator这个项目。而他的底层就是micrometer

    image-20201122153751510

    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

    image-20201122160710722

    访问我刚在在配置类中设置的指标:http://localhost:8080/actuator/metrics/demo.counter,http://localhost:8080/actuator/metrics/demo.gauge

    image-20201122160905784

    image-20201122160920301

    配置prometheus.yml:(添加springboot配置)

      - job_name: 'springboot'
        metrics_path: '/actuator/prometheus'
        static_configs:
        - targets: ['localhost:8080']
    
    

    配置完成后,重启prometheus,然后在target中就能看到springboot应用了

    image-20201122162135874

    接入Grafana

    在Grafana页面中点击import

    image-20201122162535962

    输入4701,点击load

    image-20201122162604327

    稍等片刻,就会出来JVM (Micrometer)页面

    image-20201122162658161

    选择之前生成的Prometheus的数据源

    就能看到jvm的dashboard了

    image-20201122163607591

  • 相关阅读:
    IntelliJ IDEA 2019.3 激活码
    TortoiseGit创建分支合并
    Lombok常用注解
    springboot项目打包发布流程
    liunx下部署jar包
    TortoiseGit配置SSH
    springboot单元测试 Failed to load ApplicationContext
    IDEA SpringBoot项目 Maven Reading Maven projects
    Spring的xml配置文件标签导入问题
    CentOS7 root用户、普通用户 vim与vi的切换
  • 原文地址:https://www.cnblogs.com/wwjj4811/p/14019820.html
Copyright © 2020-2023  润新知