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

Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】

Java web应用性能分析之【java进程问题分析概叙】-CSDN博客

Java web应用性能分析之【java进程问题分析工具】-CSDN博客

Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客

Java web应用性能分析之【java进程问题分析定位】-CSDN博客

Java web应用性能分析之【系统监控工具prometheus】-CSDN博客

        由于篇幅限制,前面只是整理了prometheus的工作原理,而Java服务级监控用于对每个应用占用的CPU、内存、线程池的线程数量、restful调用数量和响应时间、JVM状态、GC信息等进行监控,并可将指标信息同步至Prometheus中集中展示和报警。

        springboot,prometheus,Grafana三者关系如下:

        1.监控信息:springboot 添加actuator,micrometer-registry-prometheus依赖,提供当前springboot进程的运行数据信息,以micrometer格式展示出来,http://localhost:8080/actuator/prometheus。还可以在在Spring Boot自定义业务指标,并对关键指标进行监控和告警。

        2.提取监控信息+简陋的展示:prometheus中metrics_path,static_configs添加http://localhost:8080/actuator/prometheus的监控数据源配置,prometheus就会按照一定的时间间隔scrape_interval,scrape_timeout拉取对应springboot进程的运行数据信息,(热更新prometheus配置 curl -X POST http://localhost:9090/-/reload),此时就可以在prometheus的简陋界面查看到springboot的监控信息。

        3.展示监控信息:在Grafana导入,关联Prometheus数据源,即可在Grafana大屏上看到已收集到相关数据,包括系统启动时间、运行时间、tomcat 连接池信息、JVM相关信息等。

1.下载安装prometheus

下载地址:Download | Prometheus

版本选择LTS版:2.45.5      https://github.com/prometheus/prometheus/releases/download/v2.45.5/prometheus-2.45.5.linux-amd64.tar.gz

        业务是go开发的,所以解压即可用

        启动命令: ./prometheus --config.file=prometheus.yml

        可以配置到操作系统中,自动启动,这里就不做说明。

        访问9090端口上的prometheus

2.springboot添加actuator,micrometer-registry-prometheus依赖

注意事项  不同版本的springboot有对应不同版本的micrometer-registry-prometheus

我这里用的是Spring-Boot-2.2-Release,对应的版本是1.3

Spring Boot 2.2 Release Notes · spring-projects/spring-boot Wiki · GitHub

在springboot中导入的依赖如下

       <!--prometheus监控 --><!-- Spring Boot Actuator for Prometheus -->
<!--            <dependency>-->
<!--                <groupId>org.springframework.boot</groupId>-->
<!--                <artifactId>spring-boot-starter-actuator</artifactId>-->
<!--            </dependency>--><!-- Spring Boot Prometheus Exporter https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.2-Release-Notes  https://mvnrepository.com/artifact/io.micrometer/micrometer-registry-prometheus/1.3.20 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><version>1.3.1</version></dependency><dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_servlet</artifactId><version>0.6.0</version></dependency><dependency><groupId>io.prometheus</groupId><artifactId>simpleclient</artifactId><version>0.6.0</version></dependency><dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_common</artifactId><version>0.6.0</version></dependency><dependency><groupId>io.prometheus</groupId><artifactId>simpleclient_hotspot</artifactId><version>0.6.0</version></dependency>

监控配置

package com.zxx.study.web.config;import io.micrometer.core.instrument.MeterRegistry;
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;/*** 监控配置* @author zhouxx* @Description:* @date 2024/6/5  1:43*/
@Configuration
public class MicrometerConfig {//    @Value("${spring.application.name}")
//    private String applicationName;@BeanMeterRegistryCustomizer<MeterRegistry> configurer( @Value("${spring.application.name}") String applicationName) {return (registry) -> registry.config().commonTags("application", applicationName);}
}

配置文件

spring:application:name: mydemo
server:port: 6001address: 0.0.0.0#默认立即关闭、graceful优雅关闭(待正在执行的用户完成操作后关闭)shutdown: graceful
upload:file-path: C:\\upload\\image#端口暴漏 management.endpoints.web.exposure.include=prometheus
management:metrics:export:prometheus:enabled: true#actuator端口 如果不配置做默认使用上面8080端口server:port: 10011
#    address: 127.0.0.1endpoints:enabled-by-default: trueweb:exposure:#默认值访问health,info端点  用*可以包含全部端点include: '*'#修改访问路径 2.0之前默认是/; 2.0默认是/actuator可以通过这个属性值修改base-path: /actuator
#      cors:
#        allowed-origins: http://localhost:8080
#        allowed-methods: GET,POSTendpoint:beans:enabled: trueshutdown:enabled: true #打开shutdown端点health:show-details: always #获得健康检查中所有指标的详细信息# 日志记录logfile:external-file: ./logs/mydemo/mydemomor.logprometheus:enabled: true# 自定义应用信息,http://localhost:8080/actuator/info
info:app:name: mydemodescription: study demoversion: 1.0.0
#  # 数据信息从maven获取
#info.build.artifact=@project.artifactId@
#info.build.name=@project.name@
#info.build.description=@project.description@
#info.build.version=@project.version@
logging:config: classpath:logback-spring.xmlpattern:console: '%clr(%d{yyyy-MM-dd} [%thread] %-5level %logger{50} - %msg%n)'file: '%d{yyyy-MM-dd HH:mm:ss.SSS} >>> [%thread] >>> %-5level >>> %logger{50} >>> %msg%n'
##  level:
##    # trace 打印sql
##    com.zxx.study.web.mapper: trace

集成页面http://39.99.211.248:10011/actuator/prometheus

至此springboot中嵌入的prometheus已经完成,接下来只需要在prometheus server中添加这个监控数据拉取配置即可。

添加配置如下:

效果  即可在prometheus server的页面上看到“mydemo”的监控

简陋的监控页面“jvm_memory_used_bytes”

 备注:这里看到的时分秒不准确,在后面的grafana中显示正常

3.Grafana导入Prometheus数据源,展示监控信息

下载地址:Grafana | 查询、可视化、警报观测平台

下载和安装

        在这里,我下载的是windows版,因为服务器上资源不足,就安装在笔记本上做演示。

查找  dashboards的id,按照提示查找即可,如下

Grafana dashboards | Grafana Labs

JVM (Micrometer) | Grafana Labs

 添加Prometheus成功后,效果如下,可以详细查看到“jvm”监控  4701

毕竟是专业的监控工具,比jvm自带的要全很多,但是这个也有个不足,Prometheus中配置的是每5秒拉取一次监控数据,有一定的延后性。

相关文章:

Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】

Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客 Java web应用性能分析之【java进程问题分析定位】-CSDN博客 Java web应用性能分析之【…...

JavaEE——声明式事务管理案例:实现用户登录

一、案例要求 本案例要求在控制台输入用户名密码&#xff0c;如果用户账号密码正确则显示用户所属班级&#xff0c;如果登录失败则显示登录失败。实现用户登录项目运行成功后控制台效果如下所示。 欢迎来到学生管理系统 请输入用户名&#xff1a; zhangsan 请输入zhangsan的密…...

解决用Three.js实现嘴型和语音同步时只能播放部分部位的问题 Three.js同时渲染播放多个组件变形动画的方法

前言 参考这篇文章ThreeJSChatGPT 实现前端3D数字人AI互动&#xff0c;前面搭后端、训练模型组内小伙伴都没有什么问题&#xff0c;到前端的时候&#xff0c;脸部就出问题了。看我是怎么解决的。 好文章啊&#xff0c;可惜百度前几个都找不到&#xff0c;o(╥﹏╥)o 问题情况 …...

阅读笔记:明朝那些事儿太监弄乱的王朝

阅读豆评高分作品《明朝那些事儿太监弄乱的王朝》第三部&#xff0c;截止到今天告一段落了&#xff0c;前两部皇帝&#xff0c;太子相对比较少&#xff0c;了解故事的主线&#xff0c;分支不算多&#xff0c;记忆起来还能应付过来&#xff0c;第三部皇帝&#xff0c;太子更换的…...

算法第六天:力扣第977题有序数组的平方

一、977.有序数组的平方的链接与题目描述 977. 有序数组的平方的链接如下所示&#xff1a;https://leetcode.cn/problems/squares-of-a-sorted-array/description/https://leetcode.cn/problems/squares-of-a-sorted-array/description/ 给你一个按 非递减顺序 排序的整数数组…...

设计模式学习(二)工厂模式——工厂方法模式

设计模式学习&#xff08;二&#xff09;工厂模式——工厂方法模式 前言工厂方法模式简介示例优点缺点使用场景 前言 前一篇文章介绍了简单工厂模式&#xff0c;提到了简单工厂模式的缺点&#xff08;违反开闭原则&#xff0c;扩展困难&#xff09;&#xff0c;本文要介绍的工…...

TCP与UDP案例

udp不会做拆分整合什么的 多大就是多大...

Adaboost集成学习 | Matlab实现基于CNN-LSTM-Adaboost集成学习时间序列预测(股票价格预测)

目录 效果一览基本介绍模型设计程序设计参考资料 效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于CNN-LSTM-Adaboost集成学习时间序列预测&#xff08;股票价格预测&#xff09; 模型设计 融合Adaboost的CNN-LSTM模型的时间序列预测&#xff0c;下面是一个基本的框架。 …...

你焦虑了吗

前段时间&#xff0c;无意间在图书馆看到一本书《认知觉醒》&#xff0c;书中提到了焦虑的相关话题&#xff0c;从焦虑的根源&#xff0c;焦虑的形式&#xff0c;如何破解焦虑给了我点启示&#xff0c;分享给一下。 引语&#xff1a; 焦虑肯定是你的老朋友了&#xff0c;它总像…...

一键分析Bulk转录组数据

我们前面介绍了经典的转录组分析流程&#xff1a;Hisat2 Stringtie&#xff0c;可以帮助用户快速获得基因的表达量矩阵。 云上生信&#xff0c;未来已来 | 转录组标准分析流程重磅上线&#xff01; RNA STAR 也是一款非常流行的转录组数据分析工具。它不仅可以将测序 Reads 比…...

Django DetailView视图

Django的DetailView是一个用于显示单个对象详情的视图。下面是一个使用DetailView来显示单个书籍详情的例子。 1&#xff0c;添加视图 Test/app3/views.py from django.shortcuts import render# Create your views here. from django.views.generic import ListView from .m…...

openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写

文章目录 openGauss学习笔记-300 openGauss AI特性-AI4DB数据库自治运维-DBMind的AI子功能-SQL Rewriter SQL语句改写300.1 概述300.2 使用指导300.2.1 前提条件300.2.2 使用方法示例300.3 获取帮助300.4 命令参考300.5 常见问题处理openGauss学习笔记-300 openGauss AI特性-AI…...

typescript-泛型

typescript-泛型 泛型程序设计是一种编程风格或编程范式&#xff0c;允许在程序中定义形式类型参数&#xff0c;然后再泛型实例化时候使用实际类型参数来替代形式类型参数&#xff0c;通过泛型&#xff0c;可以定义通用的数据结构或类型&#xff0c;这种数据结构或类型仅仅再它…...

应急响应 | 基本技能 | 01-系统排查

系统排查 目录 系统基本信息 Windows系统Linux系统 用户信息 Windows系统 1、命令行方式2、图形界面方法3、注册表方法4、wmic方法 Linux系统 查看所有用户信息分析超级权限账户查看可登录的用户查看用户错误的登录信息查看所有用户最后的登录信息查看用户最近登录信息查看当…...

用c语言实现通讯录

目录 静态简易通讯录 代码&#xff1a; 功能模块展示&#xff1a; 设计思路&#xff1a; 动态简易通讯录&#xff08;本质顺序表&#xff09; 代码&#xff1a; 扩容模块展示&#xff1a; 设计思路&#xff1a; 文件版本通讯录 代码&#xff1a; 文件模块展示&#x…...

AI大模型技术揭秘-参数,Token,上下文和温度

深入理解 AI 大模型:参数、Token、上下文窗口、上下文长度和温度 人工智能技术的飞速发展使AI大模型大放异彩,其中涉及的“参数”、“Token”、“上下文窗口”、“上下文长度”及“温度”等专业术语备受瞩目。这些术语背后究竟蕴含何意?它们如何影响AI大模型的性能?一起揭开…...

攻防世界-fakebook题目__详解

1.打开题目先用dirsearch工具扫描一波&#xff0c;扫出来了robots.php目录&#xff0c;然后访问robots.txt 目录&#xff0c;发现了有一个备份文件 &#xff0c;访问备份文件&#xff0c;下载内容 文件的大致内容如下 里面有一个curl_exec这个函数容易造成ssrf攻击的漏洞 我…...

Ubuntu 18.04下普通用户的一次提权过程

Ubuntu 18.04下普通用户的一次提权过程 一.背景介绍:二.主要调试过程:三.相关命令:1.设置BMC密码,获取BMC IP2.找一台ubuntu搭建TFTP服务,用来替换grub.cfg文件3.从调试服务器的/boot/grub/grub.cfg中提取出recovery mode的配置,简化并生成新的配置文件grub.cfg,放在tftp服务的…...

接口和抽象类:如何使用普通类模拟接口和抽象类

目录 1.引言 2.抽象类和接口的定义与区别 3.抽象类和接口存在的意义 4.模拟实现抽象类和接口 5.抽象类和接口的应用场景 1.引言 在面向对象编程中&#xff0c;抽象类和接口是两个经常被提及的语法概念&#xff0c;也是面向对象编程的四大特性&#xff0c;以及很多设计模式…...

【文档智能】实践:基于Yolo三行代码极简的训练一个版式分析模型

一、数据集 本文以开源的CDLA数据集做为实验&#xff0c;CDLA是一个中文文档版面分析数据集&#xff0c;面向中文文献类&#xff08;论文&#xff09;场景。包含以下10个label&#xff1a; 数据集下载地址&#xff1a;https://github.com/buptlihang/CDLA 数据集是labelme格式…...

5V/7.4V/12V三个升压档位!智能门锁供电选它

在智能门锁硬件设计与实操过程中&#xff0c;常见的痛点是锂电池的常见电压&#xff08;3.7V、3.2V&#xff09;与门锁电机的工作电压需求&#xff08;5V、7.4V、甚至12V&#xff09;不匹配&#xff0c;电压不足直接导致电机无法正常驱动&#xff0c;进而影响门锁开关功能的实现…...

LangChain集成MCP协议:构建模块化AI应用的新范式

1. 项目概述&#xff1a;当LangChain遇见MCP&#xff0c;构建下一代AI应用的新范式如果你最近在捣鼓LangChain&#xff0c;想给AI应用加点“料”&#xff0c;比如让它能实时查询数据库、调用外部API&#xff0c;甚至控制智能家居&#xff0c;那你大概率会遇到一个核心痛点&…...

Godot开发者必备:awesome-godot资源库高效使用指南

1. 项目概述&#xff1a;一个开源游戏引擎的“宝藏库” 如果你正在使用或考虑使用 Godot 引擎进行游戏开发&#xff0c;那么你很可能已经听说过 awesome-godot 这个项目。它不是一个可以直接运行的软件&#xff0c;也不是一个插件&#xff0c;而是一个由社区共同维护的、结构…...

边缘AI与TinyML在医疗影像筛查中的实战:从模型轻量化到临床部署

1. 项目概述&#xff1a;当AI成为医生的“仿生眼”在医疗诊断领域&#xff0c;尤其是癌症早期筛查中&#xff0c;人类医生的经验与肉眼观察长期是金标准。然而&#xff0c;这个标准背后隐藏着巨大的不确定性&#xff1a;研究显示&#xff0c;即便是标准的放射影像学检查&#x…...

智能产品系统架构分析 - 智能办公系统架构分层

方向&#xff1a;方案分析、架构设计、模块分解 智能产品系统架构分析&#xff1a;智能办公系统架构分层。 对智能办公系统进行架构分层分析&#xff0c;给出实例、UML建模、项目结构等。 “智能产品系统架构分析&#xff1a;智能办公系统架构分层”。 包含设备控制、预约管…...

处理电商分类难题:我是如何用XGBoost为Otto数据集做多类别预测的

电商商品分类实战&#xff1a;XGBoost在Otto数据集上的高阶应用 当面对海量商品需要精准分类时&#xff0c;传统人工规则往往力不从心。Otto Group Product Classification Challenge正是这样一个典型场景——需要将数十万商品准确划分到93个类别中。本文将分享如何用XGBoost构…...

DDR3内存训练(Training)完全解析:从原理到代码,深入浅出

DDR3内存训练(Training)完全解析:从原理到代码,深入浅出 目录 一、为什么需要内存训练? 二、DDR3训练的核心原理 三、训练流程详解:一场精密的三步仪式 四、代码实战:从初始化到训练完成...

贝叶斯深度学习不确定性估计:集成学习与MC-Dropout实战对比

1. 项目概述&#xff1a;为什么我们需要量化深度学习的不确定性&#xff1f;在自动驾驶汽车识别前方障碍物、医疗AI系统诊断病灶、或者机器人进行精细操作时&#xff0c;一个错误的预测可能导致灾难性的后果。传统的深度神经网络&#xff08;DNN&#xff09;在这些任务上表现出…...

基于LLM与RAG的法律AI工具:从架构解析到工程实践

1. 项目概述&#xff1a;一个法律文本智能生成与分析的AI工具最近在和一些做法律科技的朋友聊天时&#xff0c;他们反复提到一个痛点&#xff1a;处理海量的、格式固定的法律文书&#xff0c;比如起诉状、合同、律师函&#xff0c;既耗时又容易在细节上出错。人工起草一份严谨的…...

Windows安装安卓APK的终极指南:APK Installer免费工具完整教程

Windows安装安卓APK的终极指南&#xff1a;APK Installer免费工具完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows电脑无法直接运行安卓应用而烦…...