服务器监控系统

前言

最近需要开发一个监控项目,主要用于监控服务器的各项硬件指标,以及应用的状态(只需要确认应用是否存活),到了这个阶段也希望自己能静下心来总结一下。

需求

服务器监控

服务器监控目前只需要监控起CPU、DISK和RAM的使用情况,本可以java编程解决,
但是考虑到程序的扩展(后续可能新增指标),所以使用了java+shell的方式,
即shell脚本获取指标、打印,java控制shell脚本的执行,并获取返回值。在经
由java后台解析入库。

应用监控

应用监控在此处就比较简单,只考虑应用的存活情况即可。那么考虑到通过端口的
状态来确认应用的状态(在部分情况下端口状态并不能反映应用本身的状态,但此
处暂不考虑)。

管理员维护

由于涉及到预警告知的概念,那便引入了管理员的概念,与服务器绑定,做通知用。

设计

系统架构

采用 单独jar + 管理平台的方式
1、单独jar: 运行于服务器上,用于根据管理平台下发的端口判断应用状态、定
	期执行Shell脚本、解析返回值、推送结果至管理平台。
2、管理平台: 用于服务器、应用等的维护,针对服务器应用集端口的下发,接收
	状态报文,解析入纵表库。并提供数据组装、展示的功能。

设计重点

端口下发

1、由于应用监控的徐奥,要对每个服务器下发对于的应用端口集合,集合主要维护
	在管理平台;
2、管理平台初始化时全量下发,每个服务器下发对应端口集,该过程需要在数据
	源实例化之后、项目启动前。
3、管理平台在对服务器新增、修改应用数据后,只针对该服务器重新下发端口集以
	及时更新。

服务器监控指标可配置

1、服务器监控指标需可配置,即可实现对A服务器只监控CPU,而对B服务器可监控
	CPU、DISK、RAM和新增其他指标,并且不同服务器指标的阈值也可配置。
2、Shell脚本编辑扩展,送至单独jar的数据集时一致的,而监控平台拿到的数据
	集也是一致的,但针对各个服务器监控指标集,需做筛选。

Shell执行及数据解析

1、理论上,新增指标只需更改Shell脚本即可实现。
2、Shell脚本的执行,由单独Jar的定时任务控制。

数据推送及接收

1、数据经单独Jar推送至监控平台,考虑并发,先将接收的数据入队列,另起线程
	对队列做处理,保证线程安全。

解析入库

1、仅需注意数据表使用纵表即可(为搭配参数可扩展设计)

历史数据备份

1、根据监控频率的不同和监控参数数量的差异,数据量不可控,所以需要做备份处
	理。
2、新数据正常入数据表,定时任务控制每个周期的第一天凌晨(例如:每个月的一
	号凌晨00:00:00)执行数据库操作。
3、主要操作为更改数据表名为历史表(带上日期),并新建数据表作为数据存储用,
	这样设计省去了数据迁移的消耗。

总结

需求至此基本满足,实现了服务器和应用的监控,此外,结合VUE+ECharts还能实现数据展示和图表展示,使结果更为直观。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章