Skip to content

监控数据

监控数据的分类

监控数据分为三大类:

  • 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 里的特殊变量并清理过期的数据。 为了使用方便,在添加主控时,控制面板会自动设置一个定期清理任务。