JVM线上监控环境搭建Grafana+Prometheus+Micrometer

架构图

一: SpringBoot自带监控Actuator

SpringBoot自带监控功能Actuator,可以帮助实现对程序内部运行情况监控,比如监控内存状况、CPU、Bean加载情况、配置属性、日志信息、线程情况等。

使用步骤:

  1. 导入依赖坐标
XML 复制代码
   <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-actuator</artifactId>
   </dependency>
  1. 访问监控地址: http://127.0.0.1:8086/actuator

监控应用endpoint:

路径 描述 默认开启
/beans 显示容器的全部的Bean,以及它们的关系 Y
/env 获取全部环境属性 Y
/env/{name} 根据名称获取特定的环境属性值 Y
/health 显示健康检查信息 Y
/info 显示设置好的应用信息 Y
/mappings 显示所有的@RequestMapping信息 Y
/metrics 显示应用的度量信息 Y
/scheduledtasks 显示任务调度信息 Y
/httptrace 显示Http Trace信息 Y
/caches 显示应用中的缓存 Y
/conditions 显示配置条件的匹配情况 Y
/configprops 显示@ConfigurationProperties的信息 Y
/loggers 显示并更新日志配置 Y
/shutdown 关闭应用程序 N
/threaddump 执行ThreadDump Y
/headdump 返回HeadDump文件,格式为HPROF Y
/prometheus 返回可供Prometheus抓取的信息 Y

配置:

java 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*" #用于选择公开所有接口
  endpoint:
    health:
      show-details: ALWAYS #显示所有健康状态
    shutdown:
      enabled: true  #启用接口关闭 Spring Boot

二: Micrometer

Spring Boot 2.0以上,使用了micrometer作为底层的度量工具,micrometer是监控度量的门面,它能支持按照各种格式来暴露数据,其中就有Prometheus。

我们引入一个依赖来暴露Prometheus数据:

XML 复制代码
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

这个依赖的作用就是会开启一个endpoint,输出兼容Prometheus exporter的结果,方便Prometheus来采集。修改SpringBoot配置:

java 复制代码
management:
  endpoints:
    web:
      exposure:
        include: "*" #用于选择公开所有接口
  endpoint:
    health:
      show-details: ALWAYS #显示所有健康状态
    shutdown:
      enabled: true  #启用接口关闭 Spring Boot
  metrics:
    tags:
      application: ${spring.application.name} #暴露的数据中添加应用名称

然后启动应用, 访问http://127.0.0.1:8086/actuator/prometheus 应该会得到如下结果:

这就是Prometheus exporter的格式,可以看到里面暴露了很详细的JVM指标。接下来,配置Prometheus抓取监控数据。

**三:**安装node_exporter

  1. 下载 node_exporter
java 复制代码
wget -c https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-amd64.tar.gz

2) 解压

java 复制代码
tar zxvf node_exporter-0.18.1.linux-amd64.tar.gz 

3) 启动

java 复制代码
nohup ./node_exporter > node.log 2>&1 &

4) 校验是否启动成功

访问接口是否成功

java 复制代码
http://192.168.18.205:9100/metrics

四: 安装 Prometheus

1) 下载 Prometheus

java 复制代码
wget -c https://github.com/prometheus/prometheus/releases/download/v2.15.1/prometheus-2.15.1.linux-amd64.tar.gz

2) 解压

java 复制代码
tar zxvf prometheus-2.15.1.linux-amd64.tar.gz

3) 配置 Prometheus

java 复制代码
 # sms-demo 应用程序配置
- job_name: 'sms-demo'
   metrics_path: '/actuator/prometheus'
   static_configs:
   - targets: ['192.168.18.205:8086']
 # node-exporter 配置
 - job_name: 'sms-Linux'
   static_configs:
   - targets: ['192.168.18.205:9100']

4) 运行

java 复制代码
nohup ./prometheus > prometheus.log 2>&1 &

4) 校验是否启动成功

测试Prometheus是否安装配置成功

java 复制代码
http://192.168.18.205:9090/targets

五: 安装 Grafana

1)下载Grafana镜像:

java 复制代码
docker pull grafana/grafana

2)启动Grafana容器:

启动Grafana容器,将3000端口映射出来

java 复制代码
docker run -d --name grafana -p 3000:3000 grafana/grafana

3)验证部署成功

网页端访问http://192.168.18.205:3000/验证部署成功

默认账户密码:admin\admin

4) Prometheus整合Grafana

增加数据源Data sources

点击 Add data source

选择Prometheus进行配置,点击 Select

配置Prometheus链接, 并点击Save & test 保存

5) 导入模版

点击Import

输入 模版ID 进行加载

JVM监控模版: dashboad-ID:12856

Linux系统监控模版:

  • Node Exporter for Prometheus Dashboard EN 20201010

    • dashboard-ID: 11074
  • Node Exporter Dashboard

    • dashboard-ID: 16098

配置上述模版, JVM模版 是用来监控我们应用JVM的详情信息, 而Linux系统模版是用来监控我们的服务器.

完整效果如下图:

相关推荐
学到头秃的suhian2 小时前
JVM-类加载机制
java·jvm
NEFU AB-IN8 小时前
Prompt Gen Desktop 管理和迭代你的 Prompt!
java·jvm·prompt
唐古乌梁海13 小时前
【Java】JVM 内存区域划分
java·开发语言·jvm
众俗14 小时前
JVM整理
jvm
echoyu.14 小时前
java源代码、字节码、jvm、jit、aot的关系
java·开发语言·jvm·八股
代码栈上的思考1 天前
JVM中内存管理的策略
java·jvm
路由侠内网穿透.1 天前
外网访问可视化工具 Grafana (Linux版本)
linux·运维·服务器·grafana·远程工作
麦兜*1 天前
Spring Boot 应用 Docker 监控:Prometheus + Grafana 全方位监控
spring boot·后端·spring cloud·docker·prometheus
thginWalker1 天前
深入浅出 Java 虚拟机之进阶部分
jvm
沐浴露z1 天前
【JVM】详解 线程与协程
java·jvm