springboot 2.X接入Prometheus

摘自我球的docs文档,我没时间在CSDN上再写一份,见

前景提要

注意:官方提供的simpleclient_spring_boot这个starter在springboot2.0中不支持,官方issue:https://github.com/prometheus/client_java/issues/345

会报以下错误:

Caused by: java.lang.ClassNotFoundException: org.springframework.boot.actuate.endpoint.AbstractEndpoint
at java.net.URLClassLoader.findClass(URLClassLoader.java:382) ~[na:1.8.0_201]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[na:1.8.0_201]
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349) ~[na:1.8.0_201]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_201]

相关的组件介绍:

grafana

Prometheus

正式开始

pom添加依赖:

<!-- Spring boot actuator to expose metrics endpoint -->
<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Micormeter core dependecy -->
<dependency>
 <groupId>io.micrometer</groupId>
 <artifactId>micrometer-core</artifactId>
</dependency>
<!-- Micrometer Prometheus registry -->
<dependency>
 <groupId>io.micrometer</groupId>
 <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

application.yml配置监控指标:

## prometheus监控配置

management:

  server:

    port: 18080 # 修改actuator的端口

  metrics:

    export:

      prometheus:

        enabled: true

        step: 1m

        descriptions: true

  web:

    server:

      auto-time-requests: true

  endpoints:

    prometheus:

      id: springmetrics

    web:

#     base-path: /xueqiu # 修改actuator的路径名

      exposure:

        include: health,prometheus

        exclude: info,env,metrics,httptrace,threaddump,heapdump

服务发现

该部分正在测试阶段,稍后开放,不影响用户当前使用

安全认证

--------该部分不需要,直接由NGINX层面完成-----------

以下是在项目中添加security安全依赖,也可以使用系统自己的安全认证

配置pom.xml

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-security</artifactId>
</dependency>
 

配置application.xml

## security认证配置

  security:

    user:

      name: monitor

      password: monitor123

配置prometheus.xml

……

scrape_configs:

# job name 这个配置是表示在这个配置内的时间序例,每一条都会自动添加上这个{job_name:"redis-manage"}的标签。

  - job_name: 'redis-manager'

    # metrics_path defaults to '/actuator/prometheus'

    # scheme defaults to 'http'.

    # 重写了全局抓取间隔时间,由15秒重写成5秒。

    metrics_path: /xueqiu/prometheus

    scrape_interval: 5s

    scheme: http

    basic_auth:

      username: admin

      password: admin

    static_configs:

      - targets: ['192.168.64.51:8099']

……

样例效果

grafana的dashboard json demo:

spring-boot-statistics_rev2.json

Prometheus监控效果:

参考链接:

https://docs.spring.io/spring-metrics/docs/current/public/prometheus

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-endpoints.html

https://prometheus.io/docs/prometheus/latest/configuration/configuration/

https://www.wqp0010.top/2018/12/27/SpringBoot2-0%E6%95%B4%E5%90%88Prometheus-Grafana/

https://segmentfault.com/a/1190000018642077

https://juejin.im/post/5aad3351f265da23994e4ce7

代码稍后给你们。。。

发布了212 篇原创文章 · 获赞 68 · 访问量 36万+

猜你喜欢

转载自blog.csdn.net/singgel/article/details/101120430
今日推荐