基于Web服务器的文件实时监控与数据采集的方法研究
2018-07-12黄同成张思阳段顼
黄同成 张思阳 段顼
摘要:随着物联网技术的飞速发展,物联网产品设备越来越丰富,物联网数据量呈爆炸式增长趋势,迫切需要开发一种高效、快速的文件实时监控系统。针对Web服务器中文件实时监控信息的采集,将用户、进程和权限访问控制相结合,获取指定监控路径中所有文件的信息,监控和扫描路径中的文件进行分析、扫描,同时利用缓存模块进行缓存,记录服务器宕机期间的文件信息,再将监控操作信息进行日志记录,实现日志事件生成和写入,开通线程与驱动之间的通信,将监控信息及时提交至服务器上,并提供接口与其他平台对接,从而实现服务器平台间文件实时监控信息数据的采集。便于用户实时监控文件信息,提高文件数据信息的时效性和完整性。
关键词:文件实时监控;数据采集;系统调用
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)14-0037-02
Abstract: With the rapid development of Internet of things, IOT products are more and more abundant, and the amount of data in Internet of things is increasing. It is urgent to develop an efficient and fast file real-time monitoring system. The file Web server in real-time monitoring information collection, user access control, the process and the combination of access to all files in the specified path information in the monitoring, analysis, scanning monitoring and scanning path of the file, the cache cache module, server downtime during the recording file information, and then monitor the operation information log log event generation and write, open communication between threads and driving, monitoring information will be promptly submitted to the server, and provides the docking interface with other platforms, so as to realize the real-time monitoring data acquisition platform file server. It is convenient for users to monitor the file information in real time and improve the timeliness and completeness of the file data information.
Keywords: file real-time monitoring;data collection;system call
1背景
當前互联网中已存在很多文件监控产品,主要应用于客户端与服务端的文件监控,这些产品对文件的监控主要采用文件检索比对的方式,通过客户端对本地文件目录进行一次全面扫描,将扫描到的所有文件变化信息传输至服务端进行验证,确定文件的更新信息,比如新建、修改或删除等,如果该文件是更新的,则将文件同步到服务端,这种方法效率低,且缺乏准确度[1]。而且现有常用的同步方法的缺陷在于不能实现终端和服务端的双向同步。显然,文件实时同步的主要问题是对文件操作的监控、及时上传和备份。
由于传统的文件监控软件的各类缺陷以及迫切需要解决的物联网设备数据传输实时性问题,此时就需要一个文件实时监控系统来完成这项工作。本文件实时监控与数据采集的设计方法可以对指定监控的目录和文件新建、修改、重命名和删除等操作进行日志记录,实时保存文件发生变更的路径、系统时间、操作类型等信息,能够实时、高效地对文件进行实时监控[2]。
本设计方法主要是基于Web服务器运行,针对服务器中的文件动态数据信息进行实时监控,具体模块的实施统一采用Java语音进行编写,满足不同平台的需求,具备良好的扩展性。选择MySQL数据库作为数据信息存储容器,通过网络协议数据接口,实现服务器与数据库的数据交互。同时该系统提供扩展数据接口,方便后续数据更新处理。
2设计思想
针对该系统方法,通过分析现有的软、硬件环境,分析各种可能产生文件操作的系统调用。针对文件变化所产生的系统调用,捕获相关操作信息,过滤有效文件变化信息,进行预警和缓存处理操作等。对于Web服务器中的各类文件系统(尤其是本地文件系统)来说,每个文件的操作,如文件的打开、关闭、读写等操作都无一例外的需要最终通过文件的系统调用来实现,而最终的系统调用则是要通过底层代码来实现[3],而该方法使用的实时监控思想最主要的就是在系统特定位置处设置一个“门”,通过“门”来获取所需实时监控的文件操作信息,同时过滤文件操作信息,再将监控信息进行日志记录,数据库同步存储信息,提供离线缓存,并设置外部扩展接口,便于后期对该系统方法进行扩展。方法设计思想流程如图1所示。
3功能模块设计
通过对该监控系统功能模块进行分析和研究,结合方法设计思想流程将该方法的实际操作分为以下五个模块:
(1)分析并查找有关的系统操作
按照本监控系统方法的设计思想,首先,应该要对不同Web服务器系统中的常规系统调用做一个全面地分析,找出有哪部分系统调用可以对所需监控的数据文件造成影响。经过对常见的操作的过程以及操作系统的工作原理的深入分析,我们认为进行以下的系统操作可以对文件的完整性造成不同程度的影响[4]:文件的修改(FILE_MODIFIED)、重命名(FILE_RENAMED)、删除文件(FILE_DELETED)、创建文件(FILE_CREATED)。
(2)添加实时监控模块
确定了部分系统操作会对所需监控的数据文件造成影响之后,通过查找和匹配确认关键性的系统调用,搭建实时监控模块,利用操作系统的监听能力产生事件,通过事件驱动,无目录扫描,系统层直接产生文件变化信息,然后反调进行“热加载”,通过JNI技术,让代码可以实时监控指定文件夹内文件的变动信息[5],支持平台包括Linux、Windows、MacOS等。
(3)设置监控文件过滤模块
文件夹中的文件种类繁多,不同用户对文件的需求不同,为了使有效信息得到实时、准确的反馈[6],设置监控文件过滤模块,可以对指定监控路径进行设置,以及所需监控的文件类型进行确认,此类操作可以灵活在程序外部进行更改,降低程序各模块之间的耦合度。
(4)监控实时记录模块
将获取到的文件变化信息(主要包括文件的类型,文件的路径,发生变化的时间),根据用户不同的应用领域,可以同步增加对应的文件变化信息,将不同平台之间的系统调用进行过滤,再将产生的文件变化信息依次存入到相应的日志文件当中,同步存储进数据库链表中。
(5)离线缓存模块
离线缓存模块用于程序宕机后文件仍在发生变化,该模块将对这些文件的操作信息进行缓存,当程序重新启动时,首先遍历离线缓存中文件操作信息,若存在离线缓存,则提交该离线缓存信息;若不存在,则监控程序便可正常运行,直接监控指定目录。
4具体实现
该系统方法可以预先设定监控某类型文件,对每个文件可以采用各种监控参数配置,遍历离线缓存模块之后,再将实时监控模块启动,通过日志缓存器将实时文件操作进行缓存操作,对日志缓存器中的数据操作信息进行数据库存储更新,直至缓存中数据操作信息同步更新完毕,所有模块全部并发执行。以文件修改操作为例进行方法具体实现,其具体流程图如图2所示。
(1)通过文件实时监控模块,过滤不同类型的文件操作,代码如下所示。
Stringpath=fileReqUrl;
intmask=JNotify.FILE_CREATED|JNotify.FILE_DELETED
|JNotify.FILE_MODIFIED|JNotify.FILE_RENAMED;
booleanwatchSubtree=true;
JNotify.addWatch(path,mask,watchSubtree,newJNotifyListener(){…。
(2)當发现被监控文件产生修改操作时,触发监听事件fileModified(intwd,StringrootPath,Stringname){…}。
(3)fileModified(intwd,StringrootPath,Stringname)函数进行修改操作处理,调用Log()函数记录操作日志;调用盒子函数discovery.discoveryFile(newPath);从propertiesUtils函数获取配制过滤文件信息,满足条件的文件修改时执行变动逻辑;利用FileUtils函数遍历监控文件夹;使用discoveryFile(Stringfilepathname)函数离线缓存数据信息,检查至上次关闭到本次启动期间的文件变动,并按变动逻辑执行;连接数据库线程进行同步存储。此外,提供外接数据接口函数publicinterfaceFileDiscoveryInterface{…},方便后续功能扩展使用。
(4)系统初始化,设置文件实时监控的目录,过滤条件,系统时间以及获取所需监控的文件操作信息。程序界面如图3所示。
5 结语
本文提供一种基于Web服务器的文件实时监控与数据采集的方法,在不同的系统操作环境下经过严格的测试与使用,有效避免了监控时全部文件进行差量比对所造成的资源耗费,提高了文件监控的效率,并将操作信息同步更新利用日志缓存进行日志输出,为文件的同步更新调用提供支持;利用数据库进行动态信息存储,保证操作信息的准确性和时效性。然而,在文件监控的研究上,仍然存在许多的不足之处,需要不断地研究和开发,通过对该文件监控模块进行扩展,将其应用到物联网环境中,研发出一套功能完善的“实时监控预警平台”,具有深远的研究推广前景。
参考文献:
[1] 胡宏银,姚峰,何成万.一种基于文件过滤驱动的Windows文件安全保护方案[J]. 计算机应用, 2009(1).
[2] 张之勇,郑方伟,佘堃,周明天. Windows NT文件系统实时监控的实现[J]. 计算机应用,2007(S1).
[3] 陈姚节,卢建华.基于手机短信远程控制系统的研究与设计[J].微计算机信息, 2010 (33).
[4] 顾巧云,李安欣.基于Windows的文件完整性检测系统的设计和实现[J]. 计算机工程,2004(S1).
[5] File system minifilter drivers. http://msdn.microsoft.com/en-us/library/ff540402(v=VS.85).aspx . 2010
[6] AnOptimalStrategyforComputing File Copies. K A S Abdel—Ghaffar,A ElAbbadi[J]. IEEE Trans.On Parallel and Distributed System,1994.