Spring Boot 自带监控功能 Actuator,可以帮助实现对程序内部运行情况监控,比如监控状况、Bean加载情况、环境变量、日志信息、线程信息等。这一节结合 Prometheus 、Grafana 来更加直观的展示这些信息。

服务名 地址 端口
Prometheus 172.16.2.101 9090
Grafana 172.16.2.101 3000
Spring Boot Demo 172.16.2.204 8080

创建用于测试的 Spring Boot 项目,主要代码如下。

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-actuator</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.springframework.boot</groupId>
  7. <artifactId>spring-boot-starter-web</artifactId>
  8. </dependency>
  9. <dependency>
  10. <groupId>io.micrometer</groupId>
  11. <artifactId>micrometer-registry-prometheus</artifactId>
  12. </dependency>
  13. <dependency>
  14. <groupId>org.springframework.boot</groupId>
  15. <artifactId>spring-boot-starter-test</artifactId>
  16. <scope>test</scope>
  17. </dependency>
  1. management:
  2. endpoints:
  3. web:
  4. exposure:
  5. include: '*'
  6. endpoint:
  7. health:
  8. show-details: always
  9. metrics:
  10. tags:
  11. application: actuator-demo
  • management.endpoints.web.exposure.include:大多数actuator的端口都不会通过http公开,* 代表公开所有这些端点。对于生产环境,应该仔细选择要公开的端点。
  • management.metrics.tags.application:为应用设置 tag ,方便区分不同的应用。
  1. @SpringBootApplication
  2. @RestController
  3. public class SpringbootActuatorPrometheusDemoApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(SpringbootActuatorPrometheusDemoApplication.class, args);
  6. }
  7. @RequestMapping(value = "/hello")
  8. public String sayHello() {
  9. for (int i = 1 ; i <= 10 ; i++) {
  10. Thread t = new Thread(() -> {
  11. try {
  12. Thread.sleep(5000);
  13. } catch (InterruptedException e) {
  14. e.printStackTrace();
  15. }
  16. } , "HelloThread - " + i);
  17. t.start();
  18. }
  19. return "ok";
  20. }
  21. /**
  22. @Bean
  23. MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
  24. return registry -> registry.config().commonTags("application", "springboot-actuator-prometheus-demo");
  25. }
  26. */
  27. }

在 prometheus.yml 中添加针对该 Spring Boot 应用 的监控 job

  1. - job_name: 'actuator-demo'
  2. metrics_path: '/prometheus'
  3. static_configs:
  4. - targets: ['172.16.2.204:8080']

运行 Prometheus 和 Grafana:

  1. docker start prometheus grafana

访问 Prometheus UI http://172.16.2.101:9090 ,查看 targets ,可以看到 job 处于 UP 状态,说明配置成功了。

Grafana UI http://172.16.2.101:3000,通过Grafana的 + 图标导入(Import) JVM (Micrometer) dashboard:

  • grafana id = 4701
  • 注意选中prometheus数据源

查看JVM (Micormeter) dashboard:

可以看到应用的 JVM 的 堆栈、 线程、 IO 等等信息。

https://github.com/gf-huanchupk/SpringBootLearning/tree/master/springboot-actuator-prometheus

https://micrometer.io/docs/registry/prometheus
https://prometheus.io/docs/prometheus

欢迎扫码或微信搜索公众号《程序员果果》关注我,关注有惊喜~

版权声明:本文为huanchupkblog原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/huanchupkblog/p/11717351.html