监控数据
监控数据的分类
监控数据分为三大类:
- StaticMonitoringData:静态信息,采集后一般不会变化(CPU 型号、系统版本、GPU 型号等)
- DynamicMonitoringData:动态信息,随系统实时变化(CPU 使用率、内存、磁盘、网络等)
- DynamicMonitoringSummaryData:动态摘要信息,将动态数据的关键指标扁平化存储(非 JSON),便于高效查询与聚合
动态监控数据摘要和全量动态监控数据的储存
对于轻度用户而言,所需要获取的信息是服务器 CPU/内存/硬盘/网络等的基本数值信息。
而有的用户需要更加详细的数据来满足运维和监控需求,比如每个磁盘的占用比和 IO,每个网络设备的状态等。
对于前者,NodeGet 提供了 动态监控数据摘要,对于后者则提供了 全量动态监控数据,这两个数据储存在不同的数据库表里。
动态监控数据摘要 的储存结构比较固定,因此采用多列宽表来储存不同的监控信息,即使储存较长时间的数据也不会占用过多磁盘空间。
而 全量动态监控数据 则不同,因为不同设备的磁盘分布和网络设备分布各有不同,很难扁平化为固定的表结构,因此其采用了 JSON 数据储存。
具体来说,全量动态监控数据 在 SQLite / PostgreSQL 上都使用了 JSONB 作为数据储存,PostgreSQL 的 JSONB 储存效率要比 SQLite 好一些,数据压缩效能较高。虽然如此,利用 SQL 数据库储存 JSON 仍然是一种性价比较低的操作,储存效率远低于 动态监控数据摘要 ,仅适合储存短期内的数据以供实时分析。
为了能权衡磁盘占用与信息全面程度的关系,允许用户通过 Agent 的配置文件和 Kv 里的特殊变量来决定以下内容:
动态监控数据摘要和全量动态监控数据的数据上报频率可以分别通过 Agent 配置调整动态监控数据摘要和全量动态监控数据的最大储存时长可以通过 特殊 Kv 变量 来配置- 可以在 Agent 节点设置功能里面轻松地设定各个监控(及 Task 数据)的储存时效
与储存有关的定时任务
当你开启了任意一条 clean_up_database 的定期任务后,NodeGet 会定期检查 Kv 里的特殊变量并清理过期的数据。
为了使用方便,在添加主控时,控制面板会自动设置一个定期清理任务。
这部分即将被重构,暂时请不要过度依赖
