当前位置: 首页 > 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格式…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...