springboot 2.X接入Prometheus

769 阅读1分钟

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

前景提要

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

会报以下错误:

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监控效果:

 

参考链接:

docs.spring.io/spring-metr…

docs.spring.io/spring-boot…

prometheus.io/docs/promet…

www.wqp0010.top/2018/12/27/…

segmentfault.com/a/119000001…

juejin.im/post/5aad33…

 

代码稍后给你们。。。