使用prometheus+grafana监控springboot项目jvm情况 环境准备:
JDK 8+GrafanaPrometheus1、配置pomActuator:
Spring Boot Actuator可以帮助你监控和管理Spring Boot应用,比如健康检查、审计、统计和HTTP追踪等。所有的这些特性可以通过JMX或者HTTP endpoints来获得。Micrometer:
Micrometer提供了与供应商无关的接口,包括 timers(计时器), gauges(量规), counters(计数器), distribution summaries(分布式摘要), long task timers(长任务定时器)。它具有维度数据模型,当与维度监视系统结合使用时,可以高效地访问特定的命名度量,并能够跨维度深入研究。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>2.17.1</version> </dependency> <dependency> <groupId>io.github.mweirauch</groupId> <artifactId>micrometer-jvm-extras</artifactId> <version>0.1.2</version> </dependency>如图:
2、配置yml#prometheus配置 management.metrics.export.prometheus.enabled=true management.metrics.export.prometheus.step=1ms management.metrics.export.prometheus.descriptions=true management.endpoint.prometheus.enabled=true management.endpoints.web.exposure.include=health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetrics上传jar到服务器运行
3、添加job修改prometheus.yml,添加job添加下面代码,其中xxx替换为项目启动路径。 然后再启动prometheus,访问http://118.190.217.164:9090/,查看targets启动是否正常如下图
- job_name: 'actuator-demo' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. metrics_path: '/xxx/xxx/prometheus' static_configs: - targets: ['118.190.217.164:9999']例如:
- job_name: 'actuator-demo' metrics_path: '/root/minedata' static_configs: - targets: ['118.190.217.164:9999']4、 启动服务小编对java不是很熟悉,这里仅仅只是展示 如何监控,具体逻辑没有写。示意效果。 (授人以鱼不如授人以渔)
5、 拓展我们其实可以使用,JMX exporter,提供JMX中和JVM相关的metrics。 地址: https://github.com/prometheus/jmx_exporter 以下实践 参考原文: https://chanjarster.github.io/post/prom-grafana-jvm/
具体步骤如下利用JMX exporter,在Java进程内启动一个小型的Http server配置Prometheus抓取那个Http server提供的metrics。配置Grafana连接Prometheus,配置Dashboard。实践1、创建目录mkdir java-jvm cd java-jvm2、拉取JMX_Exportergit clone https://github.com/prometheus/jmx_exporter.git3、新建文件 simple-config.yml# 这个文件大致意思是 取metric类型 的 GAUGE(瞬时值) --- lowercaseOutputLabelNames: true lowercaseOutputName: true whitelistObjectNames: ["java.lang:type=OperatingSystem"] rules: - pattern: 'java.lang<type=OperatingSystem><>((?!process_cpu_time)w+):' name: os_$1 type: GAUGE attrNameSnakeCase: true4、启动几个线程运行以下命令启动3个Tomcat,记得把<path-to-java-jvm>替换成正确的路径。 端口自定义,由于服务器端口组每次需要设置,小编的在8000/10000 自己根据自己改即可。以下操作可以在`本地docker环境`中运行 - P
第一个 是 JMX exporter提供的metrics8001 | 8002 | 8003第二个是 Tomcat 端口 docker run -d --name tomcat-1 -v <path-to-java-jvm>: /root/java-jvm/jmx_exporter -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" -p 8001:8001 -p 8081:8081 tomcat:8.5-alpine docker run -d --name tomcat-2 -v <path-to-java-jvm>:/root/java-jvm/jmx_exporter -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" -p 8002:8002 -p 8082:8082 tomcat:8.5-alpine docker run -d --name tomcat-3 -v <path-to-java-jvm>:/root/java-jvm/jmx_exporter -e CATALINA_OPTS="-Xms64m -Xmx128m -javaagent:/jmx-exporter/jmx_prometheus_javaagent-0.3.1.jar=6060:/jmx-exporter/simple-config.yml" -p 8003:8003 -p 8083:8083 tomcat:8.5-alpine5、配置Prometheus在之前新建目录java-jvm-demo,新建一个文件prom-jmx.yml,内容如下:
scrape_configs: - job_name: 'java' scrape_interval: 30s static_configs: - targets: - '<host-ip>:8001' - '<host-ip>:8002' - '<host-ip>:8003'6、docker启动docker run -d --name=prometheus -p 9090:9090 -v <path-to-prom-jvm-demo>:/prometheus-config prom/prometheus --config.file=/prometheus-config/prom-jmx.yml7、访问9090看效果8、配置Grafana启动
docker run -d --name=grafana -p 3000:3000 grafana/grafana登录
访问http://localhost:3000,使用admin/admin登录。 (可以本地docker 实践一下)
添加Prometheus数据源
这里不懂得 可以看我之前的文章。
Name:随便取Type:PrometheusURL:http://:9090其余不要设置,点击Save & Test,应该会返回成功结果导入制作好的 Dashboard
---来自腾讯云社区的---A2Data
微信扫一扫打赏
支付宝扫一扫打赏