存储卫星数据的固态硬盘监控系统设计与实现

(整期优先)网络出版时间:2023-05-24
/ 3

存储卫星数据的固态硬盘监控系统设计与实现

刘厚智

(广州气象卫星地面站,广东省广州 510640)

摘  要:随着风云三号03批系列的气象卫星发射并投入业务运行,新的进机系统的开发与风云三号01、02批次完全不同,接收极轨卫星图像数据量和接收速率比前两个批次的卫星也提升到一个量级,新的高性能计算机把机械硬盘提升到更优秀的固态硬盘,但是固态硬盘有一个缺点,频繁读写数据会寿命减少,且会有数据丢失无法找回的情况,需要整机寄修,为了保证业务运行稳定性,对固态硬盘的监控必不可少。实现一个低成本、预估固态硬盘剩余寿命、并可以对固态硬盘的存储、读写速率、动环坏块数等全方面的监控系统是非常有意义的。按照实际需求设计一个优化计算机固态硬盘的存储监控系统,通过读取配置文件获取每个监控项的采集间隔和相应数据源,完成数据采集任务,并对数据整合。分析出异常数据,并将信息发给管理者。

关键词:存储系统;固态硬盘监控;Telegraf;Python

0 引言

接收风云三号气象卫星新一代地面接收设备自正式运行以来,业务系统对存储系统的轨道数据量、并发请求、读写速度要求越来越高,存储系统为每一台进机配置为专业高性能类型计算机。基于风云

三号01批存储系统工控机采用传统磁盘读写数据方式,磁盘I/O一直是很大的瓶颈,机械磁盘寻道时间长,并发I/O性能差,在2017年11月15日FY3D发射成功后,地面站的风云三号第二代接收设备正式运行,存储系统计算机从这批设备开始针对瓶颈把机械硬盘提升到更优秀的固态硬盘,而2021年最新上线的一批计算机设备比02批也采用更先进的存储技术。

由于最新一代进机设备对存储效率要求不断提高,设计地面接收系统的计算机工程师将重点从传统的机械硬盘解决方案转移到更优秀的固态硬盘解决方案[1],SSD(固态硬盘)是HHD(机械硬盘)的替代品,存储后台每天要处理几百G的轨道数据,随着接收卫星数量的增加,数据成倍增长,对于数据处理和读写速度要求越来越高,但是固态硬盘有一个缺点,如果在硬盘上频繁读写数据,寿命相对减少,而且会有数据丢失无法找回的情况[2],需要整机寄修约一个月时间,为了保证业务运行稳定性,对固态硬盘的监控必不可少。实现一个低成本、预估固态硬盘剩余寿命、并可以对固态硬盘的存储、读写速率、动环坏块数等全方面的监控系统是非常有意义的。

1 项目设计目标

  1.确定固态硬盘监控项,提取关键有效的监控项,固态硬盘性能的参数[3],分析得出监控项包括并不限于以下几个:温度,动态坏块数,剩余寿命百分比,读写带宽,读写延迟等。

  2.系统采集监控项方面,能够做到被监控主机定时稳定发送数据,数据同步增加到数据库中存储,完成取数据的任务。

  3.系统分析数据判定SSD盘目前状态,系统能够显示该主机下SSD盘的数量以及每块盘目前健康状态,帮助用户做决策,将各个监控项当前值与阈值做比较,设计报警条件,及时报警[4]

  4.报警信息能够有效通知给管理员:采用邮件、短信多种报警方式、快速通知到相关责任人。

2 监控系统需求分析

2.1系统功能性需求

固态硬盘监控系统具体功能可分为数据采集功能,用户管理功能,监控信息管理功能,主机管理功能,处理告警功能,日志检索功能,留言功能,告警功能,合并告警功能;并对部分功能给出用例图,以下以开发人员和管理人员视角图示监控系统功能。

图1 监控系统的功能

2.1.1数据采集功能系统功能方面主要是为了实现系统的管理和设备的注册等需求。数据采集应包含主机信息、SSD盘信息、SSD盘监控项信息[4]。主机信息包括主机IP、主机名称、用户名、密码、端口等参数,SSD盘信息包括SSD盘厂商、SSD盘名字等,SSD盘监控项信息包括SSD盘识别信息、设备状态、访问模式、主控温度、颗粒温度、板卡温度、写放大系数、剩余保留空间、动环坏块、SEU标志、连接速率、闪存健康情况、剩余寿命以及一些速率等信息,通过采集这些监控项信息,综合分析SSD盘的健康情况以及估算SSD盘的寿命情况。

2.1.2用户管理功能 用户管理功能:提供用户登录、注册、编辑、查看个人信息基本功能,用户进行登录后,除了提供基本的用户功能后,系统还跟角色的不同展现不同的页面。

2.2.3监控信息展示功能 监控信息管理功能,允许用户查看监控信息,包括分组概况、每个监控项变化趋势,方便用户追踪,能够查看监控项,点击查看数据按钮,通过搜索框搜索IP,然后指定SSD盘,点击相应的监控项,该监控数据按图展示。支持刷新,点击刷新按钮,整个页面数据重载。支持配置监控项,允许用户自定义配置告警策略,包括告警条件、最大告警次数、告警方式、升级告警方式、生效时间。配置相关操作主要有:增加告警策略,对告警策略进行修改,删除告警策略。

2.2.4处理告警功能处理告警功能,允许用户查看所有的告警信息,问题解决后,可以更改告警信息状态,并记录备注信息。查看异常方式有两种:一是通过点击查看异常按钮,列表根据时间倒排显示所有分组的报警信息,列表项包括分组名、告警次数、监控指标、监控策略、告警接收人、告警时间,二是根据树形结构,点击某一个分组、某一个主机、某一个SSD盘的异常数,查看制订的异常信息。根据时间倒序或者正序查看数据,支持模糊查询,支持异常处理,点击处理异常按钮,出现异常处理记录页面,该页面显示所属分组、处理状态,处理历史信息。

当用户点击处理告警按钮后,系统应出现处理告警页,该页应有分组名,主机名。告警状态变更按钮以及处理历史记录展示。

2.2系统非功能需求

   SSD监控系统作为一个集中监控SSD固态盘的系统,除了功能方面的需求,还需要具有以下非功能性的需求:

1)可靠性:监控系统作管理人员经常使用的管理系统,需要有优良的可靠性,一旦监控系统出现故障,漏掉重要的报警信息,会造成严重的损失,因此,SSD盘监控平台的QPS大于60,系统99.5%的请求,平均处理时间不能超过5秒。

2)实时性:监控系统要保证数据的实时性,监控系统就是管理人员的眼睛,时刻更新数据,一旦发生异常,就要及时通知相关人员、一面造成损失。

3)兼容性:系统可使用IE11.0、360、Chrome浏览器访问。

3 系统整体结构设计

本系统分为四层,自下而上依次是被监控设备层、存储层、业务处理层、展示层,系统框架结构[5]如图所示:

图2 系统整体设计

通过向主机安装一个telegraf插件,telegraf是一个插件驱动的服务器代理,用于从数据库、系统收集和发送指标和事件,用Go编写,可编译成一个没有外部依赖关系的二进制文件,简单配置后,该插件就可以自动收集SSD盘监控数据,这些数据直接存储在Mysql数据库中,同时Mysql数据库存储结构化数据,比如主机信息,用户信息等,InnoDB负责数据查询,业务处理层负责实现整个系统各个功能的逻辑实现,通过算法和流程控制,将数据转换成用户所需要的数据,展示层负责展示系统的各类信息并响应用户的请求。

4系统实现主要技术

4.1数据库的使用以及搜索

MySQL是一个关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据

放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,是管理内容最好的选择[6]

InnoDB,现为MySQL的默认存储引擎。InnoDB 给MySQL提供了具有事务(transaction)、回滚(rollback)和崩溃修复能力(crash recovery capabilities)、多版本并发控制(multi-versioned concurrency control)的事务安全(transaction-safe (ACID compliant))型表。

在SQL查询中,你可以自由地将InnoDB类型的表与其它MySQL的表的类型混合起来,甚至在同一个查询中也可以混合。这些特性均提高了多用户并发操作的性能表现。在InnoDB表中不需要扩大锁定(lock escalation),因为 InnoDB 的行级锁定(row level locks)适宜非常小的空间。InnoDB也是 MySQL 上第一个提供外键约束(FOREIGN KEY constraints)的表引擎。

在技术上,InnoDB是一套放在 MySQL后台的完整数据库系统,InnoDB在主内存中建立其专用的缓冲池用于高速缓冲数据和索引。InnoDB把数据和索引存放在表空间里,可能包含多个文件,这与其它的不一样,举例来说,在MyISAM中,表被存放在单独的文件中。InnoDB表的大小只受限于操作系统的文件大小,可也可以每个表使用各自独立的表空间,只需要启用选项innodb_file_per_table。

4.2数据采集模块的设计

监控数据采集模块包括监控数据获取,监控数据格式化,监控数据持久化三个功能点,引入telegraf插件,该插件支持多种格式的数据源,并且易于拓展。数据采集流程设计为:

(1)python采集程序读取存储监控项值的文件[7],或者执行shell命令获得预定的监控项的值。

(2)监控项信息预处理:对获取到的数据进行格式化处理;去掉空格符,换行符,切分数据等操作。

(3)对监控项值编码:由于SSD监控项值有字符串类型,有数字类型,由于Mysql数据库存储格式的需要,将监控项值为字符串类型的用0/1代替。

(4)配置telegraf,定时执行python采集程序,使之按照既定的格式存储到Mysql数据库中,其中,inputs.exe输入插件支持用户自定义数据源,该输入插件的参数包括commands域,告诉telegraf如何采集数据,源数据获取方式;Name_override域:告诉telegraf数据传输格式:在 Innodb里,使用的是primary key形态,其leaf node里存放的是数据,而且不仅存放了索引键的数据,还存放了其他字段的数据。

{[inputs.disk]}

  interval=”10m”

  ignore_fs=[“tmpfs”,”devtmpfs”]

{[inputs.diskio]}

  interval;=”60s”

{[inputs.exe]}

  commands=[“python access_monitor.py”]

  name_override=”access_mode_availl”

  primary key=[“access_mode_value”]

该数据采集模块完成数据的获取,数据的处理和数据的存储过程,经过该模块的处理后,系统完成了对监控项值的原始获取,并把合适的格式存储在Mysql数据库中。

4.3告警模块的设计

告警模块主要实现了对固态硬盘的集中监控,为维护人员提供方便、快捷的集中监控管理平台,包含了异常判断、发送告警、告警跟踪子模块,共同构成了SSD盘监控系统的告警功能,根据告警模块各个步骤的流程,实现告警模块的类设计

4.3.1异常判断 实践中,设置监控阈值是最常见的告警策略,通过对比实时采集数据与阈值,判断当前数据点是否为异常点,由于定时任务,偶发的集中读写等情况的存在,单个数据点超过阈值后很快恢复正常的情况并不罕见,单点异常往往并不意味着需要生成告警事件,监控平台在配置监控时支持多点判断,用户可以设置连续N点异常或历史M点中有N点异常时触发告警,减少数据抖动造成的告警误判。

图3 告警模块设计流程

4.3.2发送告警 发送告警子模块采用邮件发送来实现。具体来说,将告警级别、服务器IP、分组名称、分组路径、监控指标、异常描述、异常判断、告警次数、告警时间发送给相关责任人。运用python标准库的smtplib模块发送告警邮件,Flash-Mail模块封装了smtplib。Flash-Mail运用简单邮件传输协议连接主机,Flash-Mail默认使用本地465号端口发送邮件[8],无需验证发送过程,轻量级的代码以及配置文件,使得程序整体结构简单并易于维护。由于监控时并发量较大,故采用异步方式发送邮件,运用python语言中multiprocess模块,实现多进程的告警邮件发送,增加报警的实时性。

图4 发送告警模块流程

5 系统测试

系统经过功能性测试以及非功能性测试了3个月,对固态硬盘监控系统满足设计需求,能进行简单的运行,系统逻辑结构简单明了,告警内容无误,本系统已经具备需求提到的功能,实现了对固态硬盘的整体监控,并能及时发送告警,节省了人力成本,并且对计算机其它运行的程序包括进机软件没有出现不兼容的情况。

6 结论与展望

针对最新一代存储气象卫星数据的高性能计算机,固态硬盘监控系统的实现解决了新一批设备众多SSD盘所带来的监管困难和SSD盘监控漏洞的问题,监控系统可以对固态硬盘进行实行实时监控,发现异常能够及时通知管理人员,可以对固态硬盘进行集中管理,迅速找出故障点,为管理人员提供便利。自主设计的监控系统在存储系统已经运行了一段时间,为极轨卫星接收业务运行稳定提供了强有力的保护。

参考文献

[1] 连和,2014(14),监控硬盘和普通硬盘的区别[J].中国公共安全.

[2] 张卒,2006(10) 明明白白看硬连和盘[J].电脑迷.

[3] 陶亮,2017.固态硬盘写入/擦除次数与读写速度的优化设计[M].哈尔滨工业大学.4-6

[4] 吕霞,2017年11期,基于大数据的统一监控系统研究[J].计算机产品与流通.

[5] 付志雄、张雪芳,2018.基于MVC模式的监控系统分析与设计[J].机电产品开发与创新.33-35

[6] 王沛,2018.基于Flask框架的创新创业平台系统的设计与实现[M].山东大学.23-29

[7] 叶锋,2015.Python最新Web编程框架研究[J].电脑编程技巧及维护.27-35

[8] 胡佳军,2018.气象业务服务器监控系统设计与实现[J],江西科学

作者简介:刘厚智(1980.12)男,汉族,广东广州人,研究生,工程师,从事:计算机应用,卫星接收工作。