Prometheus+grafana监控SpringBoot2应用

摘要:
micrometer我们对springboot2监控,主要用的是SpringBootActuator这个项目。micrometer支持接入多种数据库,这里我使用的是prometheus。集成prometheus我这里boot版本是2.1.8,部分maven依赖:org.springframework.bootspring-boot-starter-actuatororg.springframework.bootspring-boot-starter-web˂!

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

免责声明:文章转载自《Prometheus+grafana监控SpringBoot2应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇curl实现SFTP上传下载文件vuecli3打包部署 非根目录下 配置vue.config.js publicPath下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

prometheus-数据展示之grafana部署和数据源配置

1、监控pods 。   prometheus再部署以后,会自带cAdvisor。结果如下: 2、K8S集群状态监控。需要使用kube-state-metrics插件。部署以后 kubernetes.io/cluster-service: "true" 会自动启用监控对象,无需配置 [root@VM_0_48_centos prometheus]#...

springboot 实时监控 spring-boot-starter-actuator 包

对java工程实时监控方式很多,本文主要讲在springboot框架中的监控。 springboot框架,自带了actuator监控,在pom中引入jar包即可,如下 1.引入jar <dependency> <groupId>org.springframework.boot</groupId> <artifac...

监控Spark应用方法简介

监控Spark应用有很多种方法。Web接口每一个SparkContext启动一个web UI用来展示应用相关的一些非常有用的信息,默认在4040端口。这些信息包括:任务和调度状态的列表RDD大小和内存使用的统计信息正在运行的executor的信息环境信息你可以在浏览器中打开http://<driver-node>:4040网址来访问这些信息。如...

K8s容器资源限制

在K8s中定义Pod中运行容器有两个维度的限制:1. 资源需求:即运行Pod的节点必须满足运行Pod的最基本需求才能运行Pod。如: Pod运行至少需要2G内存,1核CPU2. 资源限额:即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。 # kubectl describe node node1.zcf.com...

虚拟机搭建Kubespere3.0(详细)

前言:不断学习就是程序员的宿命。 相对于rancher,我个人更倾向于kubespere,因为它界面确实比较吸引我,废话不多扯,下面开始吧 1.环境准备 1.前置要求 虚拟机:centos7.6~7.8!!! 以下:https://kuboard.cn/install/install-k8s.html#%E6%A3%80%E6%9F%A5-centos-...

[Android]自己动手做个拼图游戏

目标 在做这个游戏之前,我们先定一些小目标列出来,一个一个的解决,这样,一个小游戏就不知不觉的完成啦。我们的目标如下: 游戏全屏,将图片拉伸成屏幕大小,并将其切成若干块。 将拼图块随机打乱,并保证其能有解。 在屏幕上留出一个空白块,当点空白块旁边的块,将这块移动到空白块。 判断是否已经拼好。 实现目标 1.将图片拉伸成屏幕大小,并将其切成若干块。 想...