• Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】


    Java web应用性能分析之【java进程问题分析概叙】-CSDN博客

    Java web应用性能分析之【java进程问题分析工具】-CSDN博客

    Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客

    Java web应用性能分析之【java进程问题分析定位】-CSDN博客

    Java web应用性能分析之【系统监控工具prometheus】-CSDN博客

            由于篇幅限制,前面只是整理了prometheus的工作原理,而Java服务级监控用于对每个应用占用的CPU、内存、线程池的线程数量、restful调用数量和响应时间、JVM状态、GC信息等进行监控,并可将指标信息同步至Prometheus中集中展示和报警。

            springboot,prometheus,Grafana三者关系如下:

            1.监控信息:springboot 添加actuator,micrometer-registry-prometheus依赖,提供当前springboot进程的运行数据信息,以micrometer格式展示出来,http://localhost:8080/actuator/prometheus。还可以在在Spring Boot自定义业务指标,并对关键指标进行监控和告警。

            2.提取监控信息+简陋的展示:prometheus中metrics_path,static_configs添加http://localhost:8080/actuator/prometheus的监控数据源配置,prometheus就会按照一定的时间间隔scrape_interval,scrape_timeout拉取对应springboot进程的运行数据信息,(热更新prometheus配置 curl -X POST http://localhost:9090/-/reload),此时就可以在prometheus的简陋界面查看到springboot的监控信息。

            3.展示监控信息:在Grafana导入,关联Prometheus数据源,即可在Grafana大屏上看到已收集到相关数据,包括系统启动时间、运行时间、tomcat 连接池信息、JVM相关信息等。

    1.下载安装prometheus

    下载地址:Download | Prometheus

    版本选择LTS版:2.45.5      https://github.com/prometheus/prometheus/releases/download/v2.45.5/prometheus-2.45.5.linux-amd64.tar.gz

            业务是go开发的,所以解压即可用

            启动命令: ./prometheus --config.file=prometheus.yml

            可以配置到操作系统中,自动启动,这里就不做说明。

            访问9090端口上的prometheus

    2.springboot添加actuator,micrometer-registry-prometheus依赖

    注意事项  不同版本的springboot有对应不同版本的micrometer-registry-prometheus

    我这里用的是Spring-Boot-2.2-Release,对应的版本是1.3

    Spring Boot 2.2 Release Notes · spring-projects/spring-boot Wiki · GitHub

    在springboot中导入的依赖如下

    1. io.micrometer
    2. micrometer-registry-prometheus
    3. 1.3.1
    4. io.prometheus
    5. simpleclient_servlet
    6. 0.6.0
    7. io.prometheus
    8. simpleclient
    9. 0.6.0
    10. io.prometheus
    11. simpleclient_common
    12. 0.6.0
    13. io.prometheus
    14. simpleclient_hotspot
    15. 0.6.0

    监控配置

    1. package com.zxx.study.web.config;
    2. import io.micrometer.core.instrument.MeterRegistry;
    3. import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
    4. import org.springframework.context.annotation.Bean;
    5. import org.springframework.beans.factory.annotation.Value;
    6. import org.springframework.context.annotation.Configuration;
    7. /**
    8. * 监控配置
    9. * @author zhouxx
    10. * @Description:
    11. * @date 2024/6/5 1:43
    12. */
    13. @Configuration
    14. public class MicrometerConfig {
    15. // @Value("${spring.application.name}")
    16. // private String applicationName;
    17. @Bean
    18. MeterRegistryCustomizer configurer( @Value("${spring.application.name}") String applicationName) {
    19. return (registry) -> registry.config().commonTags("application", applicationName);
    20. }
    21. }

    配置文件

    1. spring:
    2. application:
    3. name: mydemo
    4. server:
    5. port: 6001
    6. address: 0.0.0.0
    7. #默认立即关闭、graceful优雅关闭(待正在执行的用户完成操作后关闭)
    8. shutdown: graceful
    9. upload:
    10. file-path: C:\\upload\\image
    11. #端口暴漏 management.endpoints.web.exposure.include=prometheus
    12. management:
    13. metrics:
    14. export:
    15. prometheus:
    16. enabled: true
    17. #actuator端口 如果不配置做默认使用上面8080端口
    18. server:
    19. port: 10011
    20. # address: 127.0.0.1
    21. endpoints:
    22. enabled-by-default: true
    23. web:
    24. exposure:
    25. #默认值访问health,info端点 用*可以包含全部端点
    26. include: '*'
    27. #修改访问路径 2.0之前默认是/; 2.0默认是/actuator可以通过这个属性值修改
    28. base-path: /actuator
    29. # cors:
    30. # allowed-origins: http://localhost:8080
    31. # allowed-methods: GET,POST
    32. endpoint:
    33. beans:
    34. enabled: true
    35. shutdown:
    36. enabled: true #打开shutdown端点
    37. health:
    38. show-details: always #获得健康检查中所有指标的详细信息
    39. # 日志记录
    40. logfile:
    41. external-file: ./logs/mydemo/mydemomor.log
    42. prometheus:
    43. enabled: true
    44. # 自定义应用信息,http://localhost:8080/actuator/info
    45. info:
    46. app:
    47. name: mydemo
    48. description: study demo
    49. version: 1.0.0
    50. # # 数据信息从maven获取
    51. #info.build.artifact=@project.artifactId@
    52. #info.build.name=@project.name@
    53. #info.build.description=@project.description@
    54. #info.build.version=@project.version@
    55. logging:
    56. config: classpath:logback-spring.xml
    57. pattern:
    58. console: '%clr(%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n)'
    59. file: '%d{yyyy-MM-dd HH:mm:ss.SSS} >>> [%thread] >>> %-5level >>> %logger{50} >>> %msg%n'
    60. ## level:
    61. ## # trace 打印sql
    62. ## com.zxx.study.web.mapper: trace

    集成页面http://39.99.211.248:10011/actuator/prometheus

    至此springboot中嵌入的prometheus已经完成,接下来只需要在prometheus server中添加这个监控数据拉取配置即可。

    添加配置如下:

    效果  即可在prometheus server的页面上看到“mydemo”的监控

    简陋的监控页面“jvm_memory_used_bytes”

     备注:这里看到的时分秒不准确,在后面的grafana中显示正常

    3.Grafana导入Prometheus数据源,展示监控信息

    下载地址:Grafana | 查询、可视化、警报观测平台

    下载和安装

            在这里,我下载的是windows版,因为服务器上资源不足,就安装在笔记本上做演示。

    查找  dashboards的id,按照提示查找即可,如下

    Grafana dashboards | Grafana Labs

    JVM (Micrometer) | Grafana Labs

     添加Prometheus成功后,效果如下,可以详细查看到“jvm”监控  4701

    毕竟是专业的监控工具,比jvm自带的要全很多,但是这个也有个不足,Prometheus中配置的是每5秒拉取一次监控数据,有一定的延后性。

  • 相关阅读:
    五、函数的介绍
    (二)、构造函数和原型
    HTML使用Element-UI制作管理系统页面(无需脚手架以及创建vue工程)
    闲谈:3AC到底发生了什么?
    利用百度AI接口实现车牌识别功能(三)
    SpringBoot 学习(一)自动装配
    2347. 最好的扑克手牌-双百代码
    DTC(diagnostic trouble code)
    原创: 重构证据定义以消解贝叶斯确证逻辑的内在矛盾
    计算机网络(9) TCP超时重传以及滑动窗口流量控制
  • 原文地址:https://blog.csdn.net/Rookie_CEO/article/details/139434063