论文部分内容阅读
摘要:数据的采集是起点而非终点,如何对采集到的数据进一步加工处理,并且能够帮助我们改善工作和生活才是最终目标,数据改变人们的决策方式,数据改善人类自身和环境。现在的任何平台不是无谓的宣传和夸大而是让数据说话。
关键词:架构;设计;采集系统;安全;可扩展
一、引言
随着大数据商业化运营的发展,迫切需要实现数据的自动化的采集、管理等,所以设计一套可以实现对用户等大数据的实时采集、监控系统,可以有效提高管理的效率。所以本文以大数据时代的用电数据采集系统为例来介绍,它集先进性、精确性和实时性于一体,完全可以满足用户的不同需求。
二、系统的功能与特点
(一)开放性
设计时采用基于国际标准的系统平台和商用数据库,能支持与相关的数据通信和数据库访问,向这些系统提供计量(计费)数据。分层开放式跨平台跨数据库设计,可以按照电力系统关口表和大用户分别管理,采集的电量数据和负控数据直接传输到历史数据库,通过对于所有计量点和监控点的相关数据定义、管理,与采集数据建立相应的对应关系,实现数据转存、计算、处理,并提供数据访问服务。
数据库管理模块可采用面向电网的定义方式,使其具备对电网结构以及电网相关设备的表述能力,保证重要关口表数据的准确性。数据库可采用双服务器集群机制,保证数据高可用性。
(二)灵活性
该系统可支持多种规约和通信手段,以支持多种电能表的接入,适应网络技术的发展;可支持多种数据采集方式,接收不同来源的数据,以支持电力市场运营结算所需的大量的、复杂的数据采集和处理要求。
(三)方便性
支持客戶服务器,具有友好的用户界面,方便的可编程,可维护性能。用户可分级对时段、处理方式、运算输出等数据参数进行定义,并能方便的查询、处理、分析和结算。所提供的操作系统,窗口环境、高级语言、作图软件和计算机数据通信软件应符合国际标准或工业标准。用户界面是国际流行的WINDOWS风格,具有汉字显示和打印功能,使用户操作简便快捷。
(四)可扩展性
系统采用模块化设计方式,充分考虑了不同用户的不同需求,或者同一用户今后规模及功能扩展的需要。随变用户规模和系统的扩大、采集点的增多,通过增加系统厂站数目和采集点数目就可完成,不影响系统的可靠性和稳定性。
系统具备硬、软件的扩充功能,支持系统结构的扩展和功能的升级,系统所提供的支持软件能支持用户进一步开发应用软件,以期实现原系统的增值。
(五)安全性
系统具备完善的安全保密措施和用户权限管理功能,拥有自己的用户体系,只有系统管理员才可增加和删除用户、分配用户权限,使用客户端或浏览器登陆的用户必须正确输入用户名和相应的密码才能正确进入系统。系统确保作到严格防止非法入侵和严禁对原始数据的修改,计算数据的修改必须在规定的权限范围内进行,并作上永久标志。
(六)同步性
系统以标准GPS时钟为基准,并实现网络对时功能,以保证各个采集点/计量点基于相同时间基准完成对电能量的计量及电能量数据带时标的存储。
三、采集系统的设计
根据需求灵活组成系统,有较大的选择余地。以最简单的模式来介绍系统的搭建。在这里仅选用一台计算机来实现所有的功能。监控数据是标准的时间序列数据,传统的监控系统中,一条监控数据一般是由监控指标、时间戳和值组成,比如有10台服务器的内存使用率需要监控,一个时间周期内映射到系统中可能就是10条mem.userd.percent 时间值这种格式的数据,然后分别和对应的主机关联。
这样做的缺点是,如果某一时刻想统计某个产品线、业务系统、集群、数据中心的某些监控指标的使用情况,可能就不太好实现。所以需要在传统的数据结构基础上增加一个字段,用来存储自定义的数据标签。为此,调研当前主流的时序数据库,如RRDtool、Graphite、InfluxDB、openTSDB等,其中RRDtool和Graphite 只能支能持时间维度和值维度,Cacti和Zabbix就是基于RRDtool来绘图展示的。而InfluxDB和openTSDB都能满足需求:其中InfluxDB版本比较低,而且每次更新变动都比较大;而openTSDB则在企业中有大量的成功案例。所以在数据结构的定义上,可以借鉴openTSDB的数据结构,每条数据由metric、timestamp、value、tags组成,用tags键值对来标识不同的属性。
四、三种数据类型
既然有了上面的数据结构的定义,当然就会有数据类型,不同的数据可能代表的意义都不一样,OWL中采用了RRDtool中比较常用的三种数据类型,分别为GAUGE、COUNTER、DRIVER。
GAUGE类型是一个计量器,可以理解最终存储的数据就是采集到的数据,比如服务器上的磁盘使用率,内存使用率,cpu使用率,硬件的温度,风扇的转速,业务系统中的访问时间等等,这种数据会随时间的变化而变化,并且没有什么规律可言。
COUNTER类型是一个计数器,该类型一般用于记录连续增长的记录,例如操作系统中的网卡流量,磁盘的io,交换机接口的流量,业务的吞吐量等等,COUNTER类型会假设计数器的值永远不会减小,除非达到数据类型的最大值产生溢出,OWL客户端会存储最近一次的值和上一次的值,每次上报的过程中会取每秒的速率发送到repeater,当计数器溢出,agent会自动对数据进行补值,否则可能会因为溢出产生一个巨大的错误值导致错误告警。
DRIVER类型用于表示单位时间内的数据变化,简单来说就是用来表示当前值和上一次值之间的差值,在监控领域中的实际应用场景可能不是很多。agent每次采集都会判断数据类型,并应用对应的运算规则。基于该系统,可以在上层构建报警系统,统计分析系统,报表系统等等。其中,报警服务在上个版本中是基于Python 的Celery去实现的,由于依赖众多模块,安装部署复杂,在开源过程中大部分反馈的问题都是在该模块的部署上。因此,在该版本中使用go语言对重构了报警服务,分为控制器和报警逻辑处理模块:其中控制器负责报警策略生成和报警结果处理;逻辑处理模块负责从控制器获取策略并去OpenTSDB读取数据进行对比,产生的结果返回给控制器处理。
五、结语
监控系统是整个IT架构中的重中之重,小到故障排查、问题定位,大到业务预测、运营管理,都离不开监控系统,可以说一个稳定、健康的IT架构中必然会有一个可信赖的监控系统,而一个监控系统的基石则是一个稳定而健壮的数据采集系统。
关键词:架构;设计;采集系统;安全;可扩展
一、引言
随着大数据商业化运营的发展,迫切需要实现数据的自动化的采集、管理等,所以设计一套可以实现对用户等大数据的实时采集、监控系统,可以有效提高管理的效率。所以本文以大数据时代的用电数据采集系统为例来介绍,它集先进性、精确性和实时性于一体,完全可以满足用户的不同需求。
二、系统的功能与特点
(一)开放性
设计时采用基于国际标准的系统平台和商用数据库,能支持与相关的数据通信和数据库访问,向这些系统提供计量(计费)数据。分层开放式跨平台跨数据库设计,可以按照电力系统关口表和大用户分别管理,采集的电量数据和负控数据直接传输到历史数据库,通过对于所有计量点和监控点的相关数据定义、管理,与采集数据建立相应的对应关系,实现数据转存、计算、处理,并提供数据访问服务。
数据库管理模块可采用面向电网的定义方式,使其具备对电网结构以及电网相关设备的表述能力,保证重要关口表数据的准确性。数据库可采用双服务器集群机制,保证数据高可用性。
(二)灵活性
该系统可支持多种规约和通信手段,以支持多种电能表的接入,适应网络技术的发展;可支持多种数据采集方式,接收不同来源的数据,以支持电力市场运营结算所需的大量的、复杂的数据采集和处理要求。
(三)方便性
支持客戶服务器,具有友好的用户界面,方便的可编程,可维护性能。用户可分级对时段、处理方式、运算输出等数据参数进行定义,并能方便的查询、处理、分析和结算。所提供的操作系统,窗口环境、高级语言、作图软件和计算机数据通信软件应符合国际标准或工业标准。用户界面是国际流行的WINDOWS风格,具有汉字显示和打印功能,使用户操作简便快捷。
(四)可扩展性
系统采用模块化设计方式,充分考虑了不同用户的不同需求,或者同一用户今后规模及功能扩展的需要。随变用户规模和系统的扩大、采集点的增多,通过增加系统厂站数目和采集点数目就可完成,不影响系统的可靠性和稳定性。
系统具备硬、软件的扩充功能,支持系统结构的扩展和功能的升级,系统所提供的支持软件能支持用户进一步开发应用软件,以期实现原系统的增值。
(五)安全性
系统具备完善的安全保密措施和用户权限管理功能,拥有自己的用户体系,只有系统管理员才可增加和删除用户、分配用户权限,使用客户端或浏览器登陆的用户必须正确输入用户名和相应的密码才能正确进入系统。系统确保作到严格防止非法入侵和严禁对原始数据的修改,计算数据的修改必须在规定的权限范围内进行,并作上永久标志。
(六)同步性
系统以标准GPS时钟为基准,并实现网络对时功能,以保证各个采集点/计量点基于相同时间基准完成对电能量的计量及电能量数据带时标的存储。
三、采集系统的设计
根据需求灵活组成系统,有较大的选择余地。以最简单的模式来介绍系统的搭建。在这里仅选用一台计算机来实现所有的功能。监控数据是标准的时间序列数据,传统的监控系统中,一条监控数据一般是由监控指标、时间戳和值组成,比如有10台服务器的内存使用率需要监控,一个时间周期内映射到系统中可能就是10条mem.userd.percent 时间值这种格式的数据,然后分别和对应的主机关联。
这样做的缺点是,如果某一时刻想统计某个产品线、业务系统、集群、数据中心的某些监控指标的使用情况,可能就不太好实现。所以需要在传统的数据结构基础上增加一个字段,用来存储自定义的数据标签。为此,调研当前主流的时序数据库,如RRDtool、Graphite、InfluxDB、openTSDB等,其中RRDtool和Graphite 只能支能持时间维度和值维度,Cacti和Zabbix就是基于RRDtool来绘图展示的。而InfluxDB和openTSDB都能满足需求:其中InfluxDB版本比较低,而且每次更新变动都比较大;而openTSDB则在企业中有大量的成功案例。所以在数据结构的定义上,可以借鉴openTSDB的数据结构,每条数据由metric、timestamp、value、tags组成,用tags键值对来标识不同的属性。
四、三种数据类型
既然有了上面的数据结构的定义,当然就会有数据类型,不同的数据可能代表的意义都不一样,OWL中采用了RRDtool中比较常用的三种数据类型,分别为GAUGE、COUNTER、DRIVER。
GAUGE类型是一个计量器,可以理解最终存储的数据就是采集到的数据,比如服务器上的磁盘使用率,内存使用率,cpu使用率,硬件的温度,风扇的转速,业务系统中的访问时间等等,这种数据会随时间的变化而变化,并且没有什么规律可言。
COUNTER类型是一个计数器,该类型一般用于记录连续增长的记录,例如操作系统中的网卡流量,磁盘的io,交换机接口的流量,业务的吞吐量等等,COUNTER类型会假设计数器的值永远不会减小,除非达到数据类型的最大值产生溢出,OWL客户端会存储最近一次的值和上一次的值,每次上报的过程中会取每秒的速率发送到repeater,当计数器溢出,agent会自动对数据进行补值,否则可能会因为溢出产生一个巨大的错误值导致错误告警。
DRIVER类型用于表示单位时间内的数据变化,简单来说就是用来表示当前值和上一次值之间的差值,在监控领域中的实际应用场景可能不是很多。agent每次采集都会判断数据类型,并应用对应的运算规则。基于该系统,可以在上层构建报警系统,统计分析系统,报表系统等等。其中,报警服务在上个版本中是基于Python 的Celery去实现的,由于依赖众多模块,安装部署复杂,在开源过程中大部分反馈的问题都是在该模块的部署上。因此,在该版本中使用go语言对重构了报警服务,分为控制器和报警逻辑处理模块:其中控制器负责报警策略生成和报警结果处理;逻辑处理模块负责从控制器获取策略并去OpenTSDB读取数据进行对比,产生的结果返回给控制器处理。
五、结语
监控系统是整个IT架构中的重中之重,小到故障排查、问题定位,大到业务预测、运营管理,都离不开监控系统,可以说一个稳定、健康的IT架构中必然会有一个可信赖的监控系统,而一个监控系统的基石则是一个稳定而健壮的数据采集系统。