qinfengge

qinfengge

醉后不知天在水,满船清梦压星河
github

spring boot 监控 JVM

在中,大程序中,随着用户体量的增加,监控的重要性就越来越高。一套清晰,明了的监控可以极大的帮助开发和运维人员发现程序的问题或不足。

对于 spring boot 程序而言,我们可以使用下面的工具来进行系统级别的监控

  • grafana 是一个跨平台的开源的度量分析和可视化工具
  • prometheus 是 SoundCloud 开源监控警告解决方案,存储的是时序数据
  • spring boot actuator 可以监控和度量 spring boot 应用程序

程序配置#

首先需要添加依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

<!--将actuator监控的指标转为prometheus格式-->
<dependency>
    <groupId>io.micrometer</groupId>
    <artifactId>micrometer-registry-prometheus</artifactId>
    <version>1.7.1</version>
</dependency>

在配置文件声明开放监控指标

management:
  endpoints:
    web:
        # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
        # 生产环境不建议放开所有 根据项目需求放开即可
      exposure:
        include: "*"

最好启动程序进行验证,访问 http://localhost:8080/actuator/prometheus 查看监控信息

image

安装 Prometheus + Grafana#

以 Ubuntu 为例,先安装 docker-compose

apt install docker-compose

创建 prometheus.yml 配置文件

scrape_configs:
  # 任务名称
  - job_name: 'actuator-springboot'
  # 监控路径
    metrics_path: '/actuator/prometheus'
    static_configs:
    # 目标路径
    # 如果使用wsl或服务器请填写IP
      - targets: ['localhost:8080']

编写 docker-compose.yaml

version: '3'
services:
  grafana:
    container_name: grafana
    image: grafana/grafana-oss:10.0.0-ubuntu
    environment:
      - TZ=Asia/Shanghai
    ports:
      - 3000:3000
    volumes:
      - ./grafanaplugin:/var/lib/grafana/plugins/grafanaplugin
    privileged: true
    restart: always
  prom:
    image: quay.io/prometheus/prometheus:latest
    volumes:
      - ./monitor/prometheus.yml:/etc/prometheus/prometheus.yml
    command: "--config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus"
    ports:
     - "23333:9090"
    depends_on:
     - exporter
  exporter:
    image: prom/node-exporter:latest
    ports:
     - "19100:9100"

需要注意的是:
prometheus.yml 配置文件应放在 docker-compose.yaml 文件同级的 monitor 文件夹下

image

grafana 的镜像使用的是最新的 10.0 版本,底层用的是 Ubuntu,你也可以在官方的下载页面进行自定义,推荐使用最新版,包含了部分已汉化的中文

一切就绪后使用 docker-compose up -d 命令启动这些容器

验证 prometheus 采集#

浏览器里打开 http://localhost:23333, 通过菜单,将页面切换到 Targets, 在 targets 里能看到我们的监控任务

image

image

配置 Grafana#

访问 http://localhost:3000 进入 Grafana 的管理面板,默认账号密码为 admin/admin
我们已经采集到监控数据了,但还需要在 Grafana 监控面板中显示
你也可以选用中文语言,在侧边栏选择 Home --> Administration --> Default preferences

image

添加数据源#

在 Data sources (数据源) 中点击添加新数据源,选择第一个 prometheus

image

填写 prometheus 的地址
image

最下方选择请求方法为 GET

image

添加监控样式#

数据源配置好后,还需要为其设置个监控面板。Grafana 支持根据 ID 直接从市场导入样式
https://grafana.com/grafana/dashboards/4701
选择仪表板 --> 新建 --> 导入

image

输入 4701 然后 Load 即可

image

完成之后你就可以看到详细的监控信息了

image

监控指标解释#

可以看这篇文章

  • 配置 Grafana 监控报警

Spring Boot Actuator+Prometheus + Grafana 监控 JVM 数据
Prometheus 监控 Java 服务,通过 Grafana 工具将 JVM 参数可视化,样式 4701 参数解读

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。