当前位置: 首页 > news >正文

Docker 部署 Prometheus 和 Grafana 监控 Spring Boot 服务

标题一、Spring Boot 服务端配置

  1. 引入依赖:在 Spring Boot 项目的 pom.xml 文件中引入以下依赖:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId>
</dependency>
  1. 配置文件:在 application.properties 或 application.yml 文件中添加以下配置:
management.endpoints.web.exposure.include=prometheus,health
management.metrics.export.prometheus.enabled=true
  1. 启动服务:启动 Spring Boot 服务后,访问 http://<Spring Boot服务IP>:<端口>/actuator/prometheus,若能正常返回监控指标数据,则说明配置成功。

标题二、部署 Prometheus

  1. 下载镜像
docker pull prom/prometheus:latest
  1. 创建配置文件:在本地创建 prometheus.yml 文件,内容如下:
global:scrape_interval: 15sevaluation_interval: 15sscrape_configs:- job_name: 'prometheus'static_configs:- targets: ['localhost:9090']- job_name: 'springboot'metrics_path: '/actuator/prometheus'static_configs:- targets: ['<Spring Boot服务IP>:<端口>']
  1. 启动 Prometheus
docker run -d -p 9090:9090 --name prometheus \-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \prom/prometheus:latest

标题三、部署 Grafana

  1. 下载镜像
docker pull grafana/grafana:latest
  1. 运行 Grafana
docker run -d -p 3000:3000 --name=grafana \grafana/grafana:latest
  1. 访问 Grafana:通过浏览器访问 http://<服务器IP>:3000,默认用户名和密码均为 admin,登录后需修改密码。
  2. 添加数据源
  • 点击左侧菜单栏的 “Connections” 图标。
  • 在数据源列表中找到 “prometheus” 图标或通过搜索框输入 “prometheus” 搜索。
  • 点击 “prometheus” 图标,进入数据源页面。
  • 点击页面右上角蓝色的 “Add new data source” 按钮,添加数据源。
  • 填写 Prometheus server URL(例如,http://<服务器IP>:9090)。
  • 根据需要调整其他数据源设置(例如,认证或请求方法等)。
  • 点击 “Save & Test” 按钮,若弹出 “Data source is working” 则说明配置成功。
  1. 导入监控模板
  • 点击左侧菜单栏的 “+” 号,选择 “Import”。
  • 输入模板 ID(如 10280),点击 “Load” 加载模板。
  • 点击 “Import” 导入模板,即可查看 Spring Boot 服务的监控数据。

标题四、注意事项

  1. 确保 Spring Boot 服务的 IP 地址和端口在 Prometheus 配置文件中正确填写,且服务能够正常访问。
  2. 若使用的是云服务器,需确保相关端口已在云服务器的防火墙和安全组规则中开放。
  3. Prometheus 和 Grafana 的版本可根据实际情况选择,但需保证版本间的兼容性。
http://www.dtcms.com/a/266456.html

相关文章:

  • Java 与 MySQL 性能优化:MySQL全文检索查询优化实践
  • Rust+Blender:打造高性能游戏引擎
  • 宽表设计(Wide Table) 与 子表 + 类型 + 属性表设计(EAV 模型或“属性表”模型)
  • golang 中当 JSON 数据缺少结构体(struct)中定义的某些字段,会有异常吗
  • 【Modbus学习笔记】stm32实现Modbus
  • 类图+案例+代码详解:软件设计模式----单例模式
  • AI智能体革命:从ChatGPT到自主决策的技术演进
  • 143.在 Vue 3 中使用 OpenLayers 调节地图的明亮度、对比度、饱和度
  • 焊接机器人结构设计cad【16张】三维图+设计说明书+绛重
  • (超详细)数据库项目初体验:使用C语言连接数据库完成短地址服务(本地运行版)
  • C++11 forward_list 从基础到精通:原理、实践与性能优化
  • 【C++】list 简介与模拟实现(详解)
  • TM56M152A 十速工业级32位闪存MCU控制器芯片 外设接口+硬件加密引擎
  • 跨平台ZeroMQ:在Rust中使用zmq库的完整指南
  • JDK8升级为JDK21
  • error MSB8041: 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。
  • CSS之布局详解指南
  • 深度学习洪水推演:Python融合多源卫星数据可视化南方暴雨灾情
  • bpftrace统计mmap调用时延
  • 应急响应靶场——web3 ——知攻善防实验室
  • 怎么限制某些IP访问服务器?
  • 版本控制器SVN
  • React Native屏幕适配的艺术:px2dp从像素完美到跨平台优雅布局之详细篇
  • Flink TiDB CDC 环境配置与验证
  • RESTful API 安装使用教程
  • 用Python解锁图像处理之力:从基础到智能应用的深度探索
  • 项目前置知识技术点功能用例:C++11中的bind
  • 浏览器(Chrome /Edge)高效使用 - 内部命令/快捷键/启动参数
  • Excel 如何进行多条件查找或求和?
  • BLDC电机-运动控制---stm32时钟树定时器SYSTICKRTC的学习