当前位置:首页 > 技术 > 正文内容

基于Spring Boot与Thymeleaf的服务器实时监控系统设计与实现

访客 技术 2026年6月7日 1

绪论

随着信息化建设的不断深入,服务器作为核心基础设施,其运行状态直接影响业务连续性。为保障服务稳定性,构建一套高效、直观的实时监控平台成为必要手段。本系统采用Spring Boot作为后端框架,结合HTML与Thymeleaf模板引擎,实现对服务器CPU使用率、内存占用、磁盘I/O及网络流量等关键指标的动态采集与可视化展示,提升运维效率和故障响应能力。

关键技术选型

Spring Boot框架

Spring Boot通过自动配置机制简化了传统Spring应用的搭建流程,内嵌Tomcat容器支持快速部署。其模块化结构便于集成各类中间件,显著提升了开发效率。在本项目中,利用其RESTful API支持能力,构建轻量级数据接口,供前端定时拉取监控数据。

Thymeleaf模板引擎

Thymeleaf是一种现代化服务端Java模板引擎,能够在浏览器中直接预览静态页面效果,有利于前后端协作开发。它支持自然模板(Natural Templates),即HTML文件既可由浏览器直接打开查看布局,也可经由Spring MVC渲染后输出动态内容。该特性使得界面调试更加便捷,尤其适用于需要频繁调整UI的数据展示类系统。

数据采集与处理

系统通过调用操作系统提供的原生命令(如topdfnetstat)或JMX接口获取底层资源信息,并借助Scheduled Task实现周期性任务执行。采集到的原始数据经格式化处理后存储于内存缓存中,避免频繁读写数据库带来的性能损耗,确保高频率刷新场景下的响应速度。

系统架构设计

整体采用B/S模式,前端基于标准HTML5 + CSS3 + JavaScript构建响应式界面,后端以Spring Boot提供控制器层逻辑处理。系统分为三个主要模块:

  • 数据采集模块: 定时执行系统命令并解析输出结果;
  • 业务逻辑模块: 封装数据转换、异常判断与阈值告警规则;
  • 视图展示模块: 使用Thymeleaf渲染实时图表与状态面板。

数据库设计

虽然核心监控数据不依赖持久化存储,但为支持历史趋势分析功能,仍设计轻量级MySQL表结构用于保存每日快照数据。主要包含以下两张表:

字段名类型说明
idBIGINT AUTO_INCREMENT主键
record_timeDATETIME记录时间
cpu_usageDECIMAL(5,2)CPU使用百分比
memory_usageDECIMAL(5,2)内存使用率
disk_usageDECIMAL(5,2)磁盘占用率
network_inDECIMAL(10,2)入网速率(KB/s)
network_outDECIMAL(10,2)出网速率(KB/s)

核心功能实现

定时任务配置

@Configuration
@EnableScheduling
public class SchedulerConfig {
    private static final Logger log = LoggerFactory.getLogger(SchedulerConfig.class);

    @Autowired
    private MonitorService monitorService;

    @Scheduled(fixedRate = 5000) // 每5秒执行一次
    public void collectSystemMetrics() {
        try {
            SystemMetrics metrics = monitorService.fetchCurrentMetrics();
            CacheManager.put("latest_metrics", metrics);
            log.info("已更新最新监控数据: {}", metrics);
        } catch (Exception e) {
            log.error("采集系统指标失败", e);
        }
    }
}

控制器层数据暴露

@Controller
public class DashboardController {

    @GetMapping("/dashboard")
    public String showDashboard(Model model) {
        SystemMetrics latest = CacheManager.get("latest_metrics");
        if (latest != null) {
            model.addAttribute("metrics", latest);
        }
        return "dashboard"; // 对应 templates/dashboard.html
    }

    @ResponseBody
    @GetMapping("/api/metrics/current")
    public ResponseEntity<SystemMetrics> getCurrentMetrics() {
        SystemMetrics data = CacheManager.get("latest_metrics");
        return data != null ? ResponseEntity.ok(data) :
               ResponseEntity.noContent().build();
    }
}

前端页面渲染(Thymeleaf片段)

<div class="metric-card">
  <h4>CPU 使用率</h4>
  <p th:text="${${metrics.cpuUsage}} + '%'"/>
  <div class="progress-bar">
    <div class="bar-fill"
         th:style="|width: ${metrics.cpuUsage}%; background-color: 
                   ${metrics.cpuUsage > 80 ? 'red' : 'green'}|">
    </div>
  </div>
</div>

上述代码展示了如何利用Thymeleaf表达式将后端传递的SystemMetrics对象中的CPU使用率动态插入HTML,并根据数值大小改变进度条颜色,实现基础的视觉预警功能。

系统测试与验证

测试阶段重点验证以下方面:

  • 数据采集准确性:对比系统命令输出与程序解析结果是否一致;
  • 接口响应性能:模拟多用户并发访问,确保平均响应时间低于300ms;
  • 页面刷新流畅度:前端每10秒轮询一次API,确认无卡顿现象;
  • 跨平台兼容性:在CentOS、Ubuntu等主流Linux发行版上成功运行。

测试结果表明,系统能够稳定运行,各项指标符合设计预期,具备实际部署价值。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。