SpringBoot自主监控,获取服务信息、JVM、CPU、内存、磁盘、堆、线程、GC等

您所在的位置:网站首页 查看电脑cpu内存硬盘大小等 SpringBoot自主监控,获取服务信息、JVM、CPU、内存、磁盘、堆、线程、GC等

SpringBoot自主监控,获取服务信息、JVM、CPU、内存、磁盘、堆、线程、GC等

2024-07-17 11:23| 来源: 网络整理| 查看: 265

1. 简介

  在日常开发中一些关键的业务服务,期望在高并发状态下可以正常工作,或在异常情况时可以记录当时的性能信息,所以就需要进行监控。常见的监控例如:Prometheus可以实现这个需求,如果需要更加简单方便的自主监控能力,可以引入本博客中的方案。

2. 相关博客

  Promtail+Loki+Grafana搭建轻量级日志管理平台SpringBoot 2.x + Prometheus + Grafana 实现应用监控

3. 示例代码

创建项目修改pom.xml 4.0.0 com.c3stones spring-boot-monitor-demo 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 2.7.8 cn.hutool hutool-core 5.8.12 com.alibaba.fastjson2 fastjson2 2.0.24 org.projectlombok lombok true org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin 配置定时巡检预警阈值   在resources下新建配置文件application.yml。 # 预警配置 monitor: warn: enabled: true cpu: stage1: 85 stage2: 95 memory: stage1: 85 stage2: 95 disk: stage1: 85 stage2: 95 创建预警配置 import lombok.Getter; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; /** * 预警配置 * * @author CL */ @Getter @Component public class WarnConfig { /** * 预警开关 */ @Value("${monitor.warn.enabled:true}") private Boolean enabled; /** * CPU - 阶段1 */ @Value("${monitor.warn.cpu.stage1:85}") private Double cpuStage1; /** * CPU - 阶段2 */ @Value("${monitor.warn.cpu.stage2:95}") private Double cpuStage2; /** * 内存 - 阶段1 */ @Value("${monitor.warn.memory.stage1:85}") private Double memoryStage1; /** * 内存 - 阶段2 */ @Value("${monitor.warn.memory.stage2:95}") private Double memoryStage2; /** * 磁盘 - 阶段1 */ @Value("${monitor.warn.disk.stage1:85}") private Double diskStage1; /** * 磁盘 - 阶段2 */ @Value("${monitor.warn.disk.stage2:95}") private Double diskStage2; } 创建预警状态枚举 import cn.hutool.core.util.NumberUtil; import lombok.AllArgsConstructor; import lombok.Getter; import java.util.Objects; /** * 预警状态枚举类 * * @author CL */ @Getter @AllArgsConstructor public enum WarnSateEnum { /** * 正常 */ GREEN(1), /** * 警告 */ YELLOW(2), /** * 紧急 */ RED(3), ; private final int value; /** * 根据值获取枚举 * * @param value 值 * @return {@link WarnSateEnum} */ public static WarnSateEnum findByValue(Integer value) { if (Objects.nonNull(value)) { for (WarnSateEnum warnState : values()) { if (NumberUtil.equals(warnState.getValue(), value)) { return warnState; } } } return GREEN; } /** * 获取高优先级 * * @param warnSateEnum 预警状态 * @return */ public WarnSateEnum max(WarnSateEnum warnSateEnum) { if (Objects.nonNull(warnSateEnum)) { return findByValue(Math.max(this.value, warnSateEnum.value)); } return this; } } 创建字节转文本工具类 /** * 字节转换工具类 * * @author CL */ public class ByteUtil { private static final int UNIT = 1024; /** * 格式化字节大小 * * @param byteSize 字节大小 * @return {@link String} */ public static String formatByteSize(long byteSize) { if (byteSize


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3