SpringBoot+Prometheus+Grafana搭建应用监控系统
1.应用监控系统介绍
SpringBoot的应用监控方案比较多,SpringBoot+Prometheus+Grafana是比较常用的一种解决方案,主要的监控数据的处理逻辑如下:

- SpringBoot 的 actuator 提供了应用监控端点,可以对外暴露监控数据信息。
- Prometheus 是监控系统,可以从 Springboot 采集监控数据,以时序数据的形式存储,并对外提供了监控数据查询服务。
- Grafana 是专业的 UI 仪表盘系统,支持非常多的数据源,自然也支持Prometheus,可以对接Prometheus,从其中获取数据,使用仪表盘展示出来。
springboot 2.X 中引入了 micrometer,它可以更方便的对接各种监控系统,包括 Prometheus。
2.软件版本说明
- jdk >= 1.8.0
- springboot == 2.7.11
- prometheus == 2.45.2
- grafana == 10.1.0
3. 准备SpringBoot项目
创建一个Springboot项目, SpringBoot版本选择2.7.11, 项目的pom.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.beyond</groupId><artifactId>beyond-monitor-admin</artifactId><packaging>jar</packaging><name>beyond-monitor-admin</name><description>Demo project for Spring Boot</description><properties><springboot.version>2.7.11</springboot.version><prometheus.version>1.9.10</prometheus.version></properties><dependencies><!-- SpringWeb模块 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 对外暴露监控端点 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- 集成prometheus定时爬取web服务监控端点数据 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><version>${prometheus.version}</version></dependency></dependencies><!-- 依赖声明 --><dependencyManagement><dependencies><!-- SpringBoot的依赖配置--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency></dependencies> </dependencyManagement><build><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><fork>true</fork> <!-- 如果没有该配置,devtools不会生效 --></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>
配置文件application.yml文件配置如下:
server:port: 19090
spring:application:name: beyond-monitor-adminprofiles:active: devlogging:config: classpath:logback-plus.xml--- # Actuator 监控端点的配置项
management:endpoints:enabled-by-default: true #暴露所有端点信息web:exposure:# 这里可以指定暴露端点的范围,示例: health,info,env,prometheus,metrics,httptrace,threaddump,heapdump,springmetricsinclude: '*'endpoint:health:show-details: ALWAYSlogfile:external-file: ./logs/beyond-monitor-admin.log
启动程序,访问http://localhost:19090/actuator/prometheus就可以看到服务暴露的那些监控指标了。

OK, 这样我们的web项目配置暴露监控指标就配置好了, 下面我们继续进行Prometheus和Grafana的安装。
4.应用安装
4.1.Prometheus下载安装
本文下载的是linux版本的最新稳定版本prometheus-2.45.2.linux-amd64.tar.gz。
下载地址:https://prometheus.io/download/
下载prometheus-2.45.2linux系统64位的安装压缩包,上传到服务器。

将上传的安装压缩包解压缩到指定的安装目录下

重命名应用名称为prometheus-2.45.2, 个人习惯, 可以跳过。


通过以上步骤,prometheus-2.45.2就安装好了。
4.2.Grafana下载安装
本文下载的是linux版本的最新稳定版本grafana-10.1.0.linux-amd64.tar.gz。
下载地址:https://grafana.com/grafana/download

下载grafana-10.1.0linux系统64位的安装压缩包,上传到服务器。
将上传的安装压缩包解压缩到指定的安装目录下

通过以上步骤,grafana-10.1.0就安装好了。
5.Prometheus配置启动
因为我们需要使用Prometheus从Springboot应用暴露的监控指标中进行数据采集,所以需要再Prometheus的配置文件prometheus.yml文件中配置数据采集的目标信息。

vim prometheus.yml
# my global config
global:scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.# scrape_timeout is set to the global default (10s).# Alertmanager configuration
alerting:alertmanagers:- static_configs:- targets:# - alertmanager:9093# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:# - "first_rules.yml"# - "second_rules.yml"# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:# The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]# 配置应用监控服务的相关信息, prometheus会从配置的应用服务暴露的监控端点获取监控数据,如果有多个应用可以配置多个job- job_name: 'beyond-monitor-admin' scrape_interval: 5s # 刮取的时间间隔scrape_timeout: 5s metrics_path: /actuator/prometheusscheme: http#basic_auth: #认证信息(如果上线生产环境,admin项目最好配置安全认证, 这里配置认证账号和密码)# username: admin# password: admin static_configs:- targets: ["10.10.3.169:19090"] #此处填写 Spring Boot 应用的 IP + 端口号
更多配置信息请查看官方文档prometheus配置。
现在可以启动Prometheus了,启动命令如下:
./prometheus --config.file=prometheus.yml
如下图:说明启动成功

访问http://10.10.3.14:9090/targets,将IPt替换成你的Prometheus服务所在那台机器的IP,查看Spring Boot采集状态是否正常,如下图,说明Prometheus对接你的web应用成功,可以成功采集到监控信息。

6.Grafana配置启动
6.1.启动Grafana服务

# 进入到grafana的安装目录下的bin目录
cd /home/software/grafana-10.1.0/bin
# 启动grafana-server服务
nohup ./grafana-server &
当然你也可以直接将grafana-server配置到系统环境变量, 方便随时启动不用切换路径到grafana的安装目录下的bin目录,这个可以自行操作。
通过浏览器访问grafana服务,http://10.10.3.14:3000, 默认的登录账号密码是
账号:
admin
密码:admin

使用默认账号密码登录成功过之后,系统要求立即修改密码,如下图:

修改密码保存之后就进入系统首页了

6.2.配置Grafana可视化图表
6.2.1.配置数据源
在配置Grafana可视化图表之前需要先配置数据源, Grafana支持很多种数据源对接,这里我们配置
Prometheus数据源。


点击添加数据源

选择Prometheus数据源

配置Prometheus的应用访问URL地址信息


如下图:说明数据源配置正常可访问, 如果失败, 大概率就是以下几种情况导致的:
- Prometheus服务未正常启动
- Prometheus服务url信息配置填写错误
- 两个服务安装在不同的服务器,主机之间的网络不通
- 两个服务安装在不同的服务器,防火墙服务启动,服务无法通信
一般错误就是这几种情况,一一排查基本就能解决。

之后再数据源列表就可以看到我们配置的Prometheus数据源

6.2.2.配置可视化监控面板
对于这块儿, 我是真不擅长, 但是Grafana有一个网站上提供了免费的可视化模板可以下载, 访问地址是:https://grafana.com/grafana/dashboards/

这里我们搜索Spring,

找一个你喜欢的模板, 点击Download JSON


然后再Grafana上点击Dashboards菜单。如下图:

选择从外部导入

上传可视化面板的JSON文件并导入


载入可视化面板模板如下:

保存可视化面板

可视化面板入口一

可视化面板入口二

通过以上操作, 我们的SpringBoot+Prometheus+Grafana搭建应用监控系统就搭建起来了。
好了,本篇文章到此结束,如果安装搭建过程中遇到问题,欢迎留言讨论哈,最后如果文章对你有帮助,请点赞关注,送你一朵小红花,谢谢~~~。
相关文章:
SpringBoot+Prometheus+Grafana搭建应用监控系统
1.应用监控系统介绍 SpringBoot的应用监控方案比较多,SpringBootPrometheusGrafana是比较常用的一种解决方案,主要的监控数据的处理逻辑如下: SpringBoot 的 actuator 提供了应用监控端点,可以对外暴露监控数据信息。Prometheu…...
QT c++和qml交互实例
文章目录 一、demo效果图二、c和qml交互的基本方式1、qml 调用 C 类对象2、C 类对象调用 qml3、qml 给 C 发送信号4、C 给 qml 发送信号 三、关键代码1、工程结构图2、c代码MainWindow.cppMainQuickView.cppStudentInfoView.cppStudentInfoModel.cpp 3、qml代码main.qmlMainQui…...
mysql基础-数据操作之增删改
目录 1.新增数据 1.1单条数据新增 1.2多条数据新增 1.3查询数据新增 2.更新 2.1单值更新 2.2多值更新 2.3批量更新 2.3.1 批量-单条件更新 2.3.2批量-多条件更新 2.4 插入或更新 2.5 联表更新 3.删除 本次分享一下数据库的DML操作语言。 操作表的数据结构…...
写字母(文件)
请编写函数,将大写字母写入文件中。 函数原型 void WriteLetter(FILE *f, int n);说明:参数 f 为文件指针,n 为字母数目(1 ≤ n ≤ 26)。函数将前 n 个大写英文字母写入 f 所指示的文件中。 裁判程序 #include <stdio.h> #include &…...
基于Jackson自定义json数据的对象转换器
1、问题说明 后端数据表定义的id主键是Long类型,一共有20多位。 前端在接收到后端返回的json数据时,Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失,于是导致前端查询数据出现问题。 测试前端Long类型的代码 …...
【Java】缓存击穿解决方案
文章目录 什么是SingleFlight?优化缺点优化策略 什么是SingleFlight? SingleFlight是go语言中sync包中的一个东西。它用于确保在并发环境下某个操作(例如,函数调用)即使被多个goroutine同时请求,也只会被执…...
【HarmonyOS】掌握 Stage 模型的核心概念与应用
从今天开始,博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”,对于刚接触这项技术的小伙伴在学习鸿蒙开发之前,有必要先了解一下鸿蒙,从你的角度来讲,你认为什么是鸿蒙呢?它出现的意义又是…...
2024年甘肃省职业院校技能大赛 “信息安全管理与评估”赛项样题卷①
2024年甘肃省职业院校技能大赛 高职学生组电子与信息大类信息安全管理与评估赛项样题 第一阶段:第二阶段:模块二 网络安全事件响应、数字取证调查、应用程序安全第二阶段 网络安全事件响应第一部分 网络安全事件响应第二部分 数字取证调查第三部分 应用程…...
我的AI之旅开始了
知道重要,但是就是不动。 今天告诉自己,必须开始学习了。 用这篇博文作为1月份AI学习之旅的起跑点吧。 从此,无惧AI,无惧编程。 AI之路就在脚下。 AI,在我理解,就是让机器变得更加智能&#…...
Day25 235二叉搜索树的公共祖先 701二叉搜索树插入 450二叉搜索树删除
235 二叉搜索树的最近公共祖先 如果利用普通二叉树的方法,就是利用后序遍历回溯从低向上搜索,遇到左子树有p,右子树有q,那么当前结点就是最近公共祖先。本题是二叉搜索树,所以说是有序的,一定能够简化上面…...
android系列-init 挂载文件系统
1.init 挂载文件系统 //android10\system\core\init\main.cppint main(int argc, char** argv) {return FirstStageMain(argc, argv); } //android10\system\core\init\first_stage_init.cppint FirstStageMain(int argc, char** argv) {CHECKCALL(mount("tmpfs",…...
Spring 七种事务传播性介绍
作者:vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识。 Spring中定义了7种事务传播性: PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED…...
Count the Colors ZOJ - 1610
题目链接 题意: 给定n个区间[ l, r ]和颜色c, 每次给[l, r]涂上c这个颜色. 后面的涂色会覆盖之前的涂色. 最后要求输出区间[0, 8000]中每种颜色及其出现的次数, 如果该颜色没有出现过则不输出. 思路:典型的线段树区间染色问题,一般这种题…...
MATLAB点云处理总目录
一、点云滤波 原始点云包含过多噪点和冗余点,滤波和采样往往是点云预处理的必要步骤 1.滤波 重复点去除 NAN或INF无效点去除 自定义半径滤波 2.采样 基于空间格网的点云抽稀 随机下采样 均匀体素下采样 非均匀体素下采样 二、邻近搜索 如何组织点云快速获取当前…...
C语言逗号表达式如何计算
在 C 语言中,逗号表达式是一种特殊的表达式形式,它由逗号分隔的多个表达式组成。 逗号表达式的计算过程如下:1、从左到右依次计算每个表达式的值。2、最终返回的值是最右边表达式的值。3、逗号表达式的求值过程是顺序执行的,不会…...
Ubuntu 本地部署 ChatGPT-Next-Web
Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址:https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地(默认是端口 3000)部署 ChatGPT-Next-Web&am…...
小程序商城搭建:快速入门指南
随着移动互联网的普及,小程序商城逐渐成为了商家们进行线上销售的重要渠道。如果你也想搭建一个小程序商城,那么本文将为你介绍如何使用乔拓云这一第三方小程序搭建平台来轻松搭建自己的小程序商城。 一、选择合适的第三方小程序搭建平台 在选择第三方小…...
c# windows10大小端试
测试代码: unsafe public void ceshi() {byte[] by BitConverter.GetBytes(0x12345678);Debug.WriteLine(" byte[0] 0x" by[0].ToString("x2"));Debug.WriteLine(" byte[1] 0x" by[1].ToString("x2"));Debug.WriteLi…...
【算法专题】动态规划之斐波那契数列模型
动态规划1.0 动态规划 - - - 斐波那契数列模型1. 第 N 个泰波那契数2. 三步问题3. 使用最小花费爬楼梯4. 解码方法 动态规划 - - - 斐波那契数列模型 1. 第 N 个泰波那契数 题目链接 -> Leetcode -1137. 第 N 个泰波那契数 Leetcode -1137. 第 N 个泰波那契数 题目&…...
K2P路由器刷OpenWrt官方最新版本固件OpenWrt 23.05.2方法 其他型号的智能路由器OpenWrt固件刷入方法也基本上适用
最近路由器在开机时总出问题,于是就那他来开刀,直接刷一个OpenWrt官方最新版本的固件, 刷其他第三方的固件总是觉得不安全, 而且很多第三方固件都带了些小工具,始终会有安全隐患, 而且占用内存空间太多,本来这个东西就没有多少内存,于是就干脆刷一个官方的原始固件(才6.3M, 相…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...
DAY 26 函数专题1
函数定义与参数知识点回顾:1. 函数的定义2. 变量作用域:局部变量和全局变量3. 函数的参数类型:位置参数、默认参数、不定参数4. 传递参数的手段:关键词参数5 题目1:计算圆的面积 任务: 编写一…...
DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
工厂方法模式和抽象工厂方法模式的battle
1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...
