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.2
linux系统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.0
linux系统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, 相…...
AI大语言模型会带来了新一波人工智能浪潮?
以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…...
How to view the high-tech zone atmospheric project
How to view the high-tech zone atmospheric project 问题与建议登录界面没有验证码部分页面加载时间过长联动型下拉列表框点击反应迟钝页面缺乏导航没有采用https协议没有完成域名实名认证左侧菜单区不能收缩大屏区域功能图层不能完全隐藏部分页面表单控件没有文案提示其功能…...
sqlalchemy 中的缓存机制解释
SQLAlchemy 的缓存机制主要涉及两个层面:会话(Session)缓存和查询缓存。这两种缓存机制对于提升应用性能和数据一致性都非常重要。下面详细解释这两种缓存机制: 1. 会话(Session)缓存 会话缓存是 SQLAlch…...
网络安全B模块(笔记详解)- 漏洞扫描与利用
漏洞扫描与利用 1.通过Kali对服务器场景server2003以半开放式不进行ping的扫描方式并配合a,要求扫描信息输出格式为xml文件格式,从生成扫描结果获取局域网(例如172.16.101.0/24)中存活靶机,以xml格式向指定文件输出信息(使用工具Nmap,使用必须要使用的参数),并将该操…...
【C语言】指针——从底层原理到应用
C语言指针-从底层原理到花式技巧,用图文和代码帮你讲解透彻 目录 一、前言二、变量与指针的本质 1. 内存地址2. 32位与64位系统3. 变量4. 指针变量5. 操作指针变量 5.1 指针变量自身的值5.2 获取指针变量所指向的数据5.3 以什么样的数据类型来使用/解释指针变量所指…...
想了解步进伺服的朋友可以了解下这个方案
TMC4361A 是一款小型化、高性能的驱动步进电机的运动控制器。实用于很多的斜坡轮廓的应用,特别是速度快、限制过冲的运动场合。用户根据自己的要求实现 S 形或 sixPoint™六点式速度轮廓配置及闭环或开环的操作、动态修改运动参数。TMC4361A 包含 SPI接口、Step/Dir…...
航天航空线束工艺3D虚拟展馆支持多人异地参观漫游
为了满足汽车线束企业员工工作需要,让新老员工了解到更先进、规范的线束工艺设计技术,华锐视点基于VR虚拟仿真、web3d开发和图形图像技术制作了一款汽车线束工艺设计VR虚拟仿真模拟展示系统。 汽车线束工艺设计VR虚拟仿真模拟展示系统共分为pc电脑端和VR…...
JAVA面向对象基础-容器
一、泛型 我们可以在类的声明处增加泛型列表,如:<T,E,V>。 此处,字符可以是任何标识符,一般采用这3个字母。 【示例9-1】泛型类的声明 1 2 3 4 5 6 7 8 9 10 class MyCollection<E> {// E:表示泛型; Object[] o…...
2022年山东省职业院校技能大赛高职组信息安全管理与评估—开发测试服务器解析
任务5:开发测试服务器 目录 任务5:开发测试服务器 解题方法:...
2024年我国网络安全发展形势展望
2023年,我国网络安全政策法规陆续出台,网络安全与数据安全产业发展势头强劲,网络安全形势整体向好。展望2024年,世界各国在网络空间中的竞争将变得愈发激烈,我国网络安全领域的法律法规将不断完善,数据安全…...
阿里巴巴手工活加工平台/seo流量增长策略
写了个简单的代码,得分17/25 。 满分代码: 需要考虑好多的东西 #include <iostream> #include <vector> #include <algorithm> #include <string.h> using namespace std; int n; //有效位数string deal(string s, int&…...
视频添加到wordpress/自己想开个网站怎么弄
讲师简介晁岳攀(鸟窝)百度,资深工程师 多次GopherChina大会讲师,极客时间专栏作者,Go微服务框架 rpcx 作者。演讲内容演讲主题:《Go泛型的实现、陷阱和应用场景》主题摘要:Go泛型2022年2月份就要…...
wordpress鼠标点击/搜索引擎论文3000字
cubic从2.6.37到3.0之间有7个patch,从3.0到3.8(当前最新版本)中无patch。 描述 以下是提交者Stephen Hemminger对这个patch的描述: fix comparison of jiffies Jiffies wraps around therefore the correct way to compare is to use cast to signed val…...
重庆那里做网站外包好/上海疫情最新数据
2019独角兽企业重金招聘Python工程师标准>>> 1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线࿱…...
网站建设方案书范文/郑州网站建设推广有限公司
基于PHP、MySQL实现的web端借还书系统 1.说明 基于PHP、MySQL的web端借还书系统 2.TODO 数据库设计 用户注册页面 用户登陆页面 主页面 借书 还书 个人信息管理 管理员部分 公告 reCAPTCHA验证验证码校验登录 模糊查询 快到期图书提醒 个人历史纪录 通过邮箱找回密码&#x…...
合肥网站建设新闻营销/长沙seo优化排名
前段时间 , 在脉脉上看见某95后阿里P7晒出工资单,是真的给我酸了…… 没办法回去想想 , 还是说狠补一下技术吧。 按照之前的经验来看 , Java 一面基本上都是基础题,同样是 CURD 的话,谁更熟练要谁,比如下面这个Java面试手册&…...