此项目是迭代产生的,本人精力水平有限一共更新了五篇,期间有任何疑问欢迎大家评论或者私我。这一篇文章讲了基本的实现,后面的文章增加了数据库、hdfs、redis、nginx、页面布局。写过的文章我也会持续更新,让文章更细,代码功能更加丰富,此项目满足了用spring boot框架最基本的增删改查功能,并将这些数据进行可视化展现,如果正好有此需求的人,那么这篇文章一定不容错过。

话不多说,先来最终效果!!!

img

程序流程图

img

集群部署架构图

img

项目技术栈

img

负载均衡实现效果

img

目的

计算Linux虚拟机指标包括内存使用率,cpu使用率,实时网速。获取hdfs的健康信息,包括配置容量,现有容量,DFS余量,非DFS使用量。并进行可视化展示

涉及技

【必用】spring boot + Echarts + thymeleaf+【选用】Redis+Vue+Bootstrap

怎么去看

这个项目就是将平时数据库去到的数据去做可视化展现,至于加redis,登录页,导航页都是花里胡哨的,所以只想学核心基本的看1-3,想深入美观的看4-5。我这个每个模块都是可以拆分的,取你所需就可以了。只要其中有涉及到你想看的,那就值得一看。

收获什么

加深对spring boot的理解,学会如何Echarts官方案例变为自己的并加以应用,学会前后端联动,熟悉控制器与异步传输的使用,简单进行Linux和shell文件的了解。以及对缓存基本的应用,麻雀虽小,相信能收获颇多。

本篇实现思路

利用Java去读取Linux中的文件,读出其中的信息,并将获得的字符串加以计算,通过控制层传给前端,利用前端进行展示。

源码地址

visual-display-linux

本篇实现效果

img

实现步骤

  1. Java利用ssh连接Linux
  2. 数据准备
  3. 提供一个可视化模板
  4. 进行前后端联动,异步将数据传输到页面上

1、Java利用ssh连接Linux

img

2、数据准备

(1)CPU使用率获取

command:top -b -n 1 | head -3

img

第三行为cpu状态: 依次对应: us:user 用户空间占用cpu的百分比 sy:system 内核空间占用cpu的百分比 ni:niced 改变过优先级的进程占用cpu的百分比 id:空闲cpu百分比 wa:IO wait IO等待占用cpu的百分比 hi:Hardware IRQ 硬中断 占用cpu的百分比 si:software 软中断 占用cpu的百分比 st:被hypervisor偷去的时间

计算方式:100-cpu空闲百分比

img

(2)内存使用率获取

commandcat /proc/meminfo

img

红框代表含义:总内存,空闲内存

计算方式:(总内存-空闲内存)/总内存

img

(3)实时网速获取

command:cat /proc/net/dev(记录了不同网络接口(interface)上的各种包的记录)

最左边的表示接口的名字,Receive表示收包(下载量),Transmit表示发送包(上传量)

img

需要一个脚本文件(获取实时网速和实时上传率,我只做了第一个,可以自己扩展一下)

简单介绍以下脚本含义:sed将:替换为空格全局匹配, awk读第二个,grep 按什么匹配,echo代表输出什么,剩下的有点语言底子的都应该可以看懂,我也就不说了。

img

计算方式:根据前后一秒网络下载量所产生的差值作为数据

img

3、可视化模板

我们需要一个可视化前端模板,我找了一个官方案例,效果如下

https://echarts.apache.org/examples/zh/editor.html?c=gauge-car-dark

img

4、进行前后端数据交互

前端部分

img

后端部分

img

结语

对学习了spring boot或者Echarts想要一个练手项目的时候,那么这个项目就适合你。我为什么没有直接利用Java去实现本机(windows)一些性能指标的监控呢,比如下图。因为Java并不能直接获取本机的一些数据,应该是操作系统层面的权限问题吧,这些都是我踩过的坑,我也只获取到了jvm层面,代码就不附了,感兴趣的网上或者私我都可以。

计算机性能指标展现2