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

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项目配置暴露监控指标就配置好了, 下面我们继续进行PrometheusGrafana的安装。

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的应用监控方案比较多&#xff0c;SpringBootPrometheusGrafana是比较常用的一种解决方案&#xff0c;主要的监控数据的处理逻辑如下&#xff1a; SpringBoot 的 actuator 提供了应用监控端点&#xff0c;可以对外暴露监控数据信息。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操作语言。 操作表的数据结构&#xf…...

写字母(文件)

请编写函数&#xff0c;将大写字母写入文件中。 函数原型 void WriteLetter(FILE *f, int n);说明&#xff1a;参数 f 为文件指针&#xff0c;n 为字母数目(1 ≤ n ≤ 26)。函数将前 n 个大写英文字母写入 f 所指示的文件中。 裁判程序 #include <stdio.h> #include &…...

基于Jackson自定义json数据的对象转换器

1、问题说明 后端数据表定义的id主键是Long类型&#xff0c;一共有20多位。 前端在接收到后端返回的json数据时&#xff0c;Long类型会默认当做数值类型进行处理。但前端处理20多位的数值会造成精度丢失&#xff0c;于是导致前端查询数据出现问题。 测试前端Long类型的代码 …...

【Java】缓存击穿解决方案

文章目录 什么是SingleFlight&#xff1f;优化缺点优化策略 什么是SingleFlight&#xff1f; SingleFlight是go语言中sync包中的一个东西。它用于确保在并发环境下某个操作&#xff08;例如&#xff0c;函数调用&#xff09;即使被多个goroutine同时请求&#xff0c;也只会被执…...

【HarmonyOS】掌握 Stage 模型的核心概念与应用

从今天开始&#xff0c;博主将开设一门新的专栏用来讲解市面上比较热门的技术 “鸿蒙开发”&#xff0c;对于刚接触这项技术的小伙伴在学习鸿蒙开发之前&#xff0c;有必要先了解一下鸿蒙&#xff0c;从你的角度来讲&#xff0c;你认为什么是鸿蒙呢&#xff1f;它出现的意义又是…...

2024年甘肃省职业院校技能大赛 “信息安全管理与评估”赛项样题卷①

2024年甘肃省职业院校技能大赛 高职学生组电子与信息大类信息安全管理与评估赛项样题 第一阶段&#xff1a;第二阶段&#xff1a;模块二 网络安全事件响应、数字取证调查、应用程序安全第二阶段 网络安全事件响应第一部分 网络安全事件响应第二部分 数字取证调查第三部分 应用程…...

我的AI之旅开始了

知道重要&#xff0c;但是就是不动。 今天告诉自己&#xff0c;必须开始学习了。 用这篇博文作为1月份AI学习之旅的起跑点吧。 从此&#xff0c;无惧AI&#xff0c;无惧编程。 AI之路就在脚下。 AI&#xff0c;在我理解&#xff0c;就是让机器变得更加智能&#…...

Day25 235二叉搜索树的公共祖先 701二叉搜索树插入 450二叉搜索树删除

235 二叉搜索树的最近公共祖先 如果利用普通二叉树的方法&#xff0c;就是利用后序遍历回溯从低向上搜索&#xff0c;遇到左子树有p&#xff0c;右子树有q&#xff0c;那么当前结点就是最近公共祖先。本题是二叉搜索树&#xff0c;所以说是有序的&#xff0c;一定能够简化上面…...

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 七种事务传播性介绍

作者&#xff1a;vivo 互联网服务器团队 - Zhou Shaobin 本文主要介绍了Spring事务传播性的相关知识。 Spring中定义了7种事务传播性&#xff1a; PROPAGATION_REQUIRED PROPAGATION_SUPPORTS PROPAGATION_MANDATORY PROPAGATION_REQUIRES_NEW PROPAGATION_NOT_SUPPORTED…...

Count the Colors ZOJ - 1610

题目链接 题意&#xff1a; 给定n个区间[ l, r ]和颜色c, 每次给[l, r]涂上c这个颜色. 后面的涂色会覆盖之前的涂色. 最后要求输出区间[0, 8000]中每种颜色及其出现的次数, 如果该颜色没有出现过则不输出. 思路&#xff1a;典型的线段树区间染色问题&#xff0c;一般这种题…...

MATLAB点云处理总目录

一、点云滤波 原始点云包含过多噪点和冗余点&#xff0c;滤波和采样往往是点云预处理的必要步骤 1.滤波 重复点去除 NAN或INF无效点去除 自定义半径滤波 2.采样 基于空间格网的点云抽稀 随机下采样 均匀体素下采样 非均匀体素下采样 二、邻近搜索 如何组织点云快速获取当前…...

C语言逗号表达式如何计算

在 C 语言中&#xff0c;逗号表达式是一种特殊的表达式形式&#xff0c;它由逗号分隔的多个表达式组成。 逗号表达式的计算过程如下&#xff1a;1、从左到右依次计算每个表达式的值。2、最终返回的值是最右边表达式的值。3、逗号表达式的求值过程是顺序执行的&#xff0c;不会…...

Ubuntu 本地部署 ChatGPT-Next-Web

Ubuntu 本地部署 ChatGPT-Next-Web 文章目录 Ubuntu 本地部署 ChatGPT-Next-Web ChatGPT-Next-Web 项目地址&#xff1a;https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web 本文主要演示如何在 Ubuntu 本地&#xff08;默认是端口 3000&#xff09;部署 ChatGPT-Next-Web&am…...

小程序商城搭建:快速入门指南

随着移动互联网的普及&#xff0c;小程序商城逐渐成为了商家们进行线上销售的重要渠道。如果你也想搭建一个小程序商城&#xff0c;那么本文将为你介绍如何使用乔拓云这一第三方小程序搭建平台来轻松搭建自己的小程序商城。 一、选择合适的第三方小程序搭建平台 在选择第三方小…...

c# windows10大小端试

测试代码&#xff1a; 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, 相…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来&#xff0c;实在找不到&#xff0c;希望有大佬教一下我。 还有就会议时间&#xff0c;我感觉不是图片时间&#xff0c;因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

Caliper 配置文件解析:config.yaml

Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...