智能化局域网数据采集方法
技术领域
本发明涉及一种数据采集方法,尤其是涉及智能化局域网数据采集方法。
背景技术
现有数据采集技术3种方式:
(1)在Linux环境下使用rsync命令将数据采集单元的数据同步到中心数据汇总单元,即rsync数据同步法,Rsync(remote synchronize)是一款实现远程同步功能的免费软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。rsync是用“rsync算法”提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过SSH方式来传输文件,rsync包括如下的一些特性:能更新整个目录和树和文件系统;有选择性的保持符号链接、硬链接、文件属性、权限、设备以及时间等;对于安装来说,无任何特殊权限要求;对于多个文件来说,内部流水线减少文件等待的延时;能用rsh、ssh或直接端口做为传输端口;支持匿名rsync同步文件,是理想的镜像工具;
(2)在每台数据采集单元安装FTP服务端程序,在中心数据汇总单元安装FTP客户端程序,中心数据汇总单元(FTP客户端)把脚本上传到数据采集单元(FTP服务端),中心数据汇总单元(FTP客户端)从各个数据采集单元(FTP服务端)下载数据,即FTP传输法,FTP客户端实现要建立两个通道,其实是两个调用了connect函数的连接:一个控制命令通道,专门用来传输一些字符串命令信息;一个数据传输通道,用来传输数据。控制命令通道一定是由客户端向服务器的连接(默认的端口是21,也可以指定端口,这要看服务器的设置),连接的过程完成了FTP的登录。数据通道则不一定,具体哪个连哪个,与PASV命令有关。FTP断点续传的原理可分为断点下载和断点上传。所述断点下载:向服务器发送“REST+本地文件长度”命令,告诉服务器,客户端要断点下载了,这时服务器还不知道客户端要下载哪个文件;要实现FTP的断点续传,FTP服务器必须支持REST指令,这条指令在FTP协议文本RFC959中就已经定义了,不过它不是FTP服务器必须支持的指令。一般在下载前使用REST 100命令进行实验,如果服务器正常执行了这条命令,说明该服务器支持FTP断点续传。REST后面跟的数表示下载文件的起始位置,而REST 0表示从文件最开始处下载。REST命令本身并不执行下载功能,你仍需要使用RETR命令执行下载工作;向服务器发送“RETR+文件名”命令,通知服务器要下载的文件名,这时服务器开始定位文件指针读文件并发送数据;客户端定位本地文件指针(文件末尾);两端的准备工作都做完了以后,客户端创建socket,以被动或非被动方式建立数据通道,循环调用recv接收数据并追加入本地文件。所述断点上传:获取服务器上和本地要上传文件的同名文件大小;向服务器发送“APPE+文件名”,通知服务器,接下来从数据通道发送给你的数据要附加到这个文件末尾;定位本地文件指针(和FTP上文件大小相同的位置);从文件指针处读数据并发送。
(3)以Flume为代表的分布式数据收集框架,利用Hadoop的MapReduce技术和HDFS分布式存储方案,提供了海量数据的收集方案,即Hadoop分布式数据收集框架:Flume架构由三层组成,分别为agent,collector和storage。其中,agent和collector均由两部分组成:source和sink,source是数据来源,sink是数据去向,如图1所示,其中agent:数据采集代理端;collector:数据汇总端;master:全局管理者;HDFS:分布式文件系统;agent tier:数据采集代理端层;collector tier数据汇总端层;storage tier:存储层。所述Agent层,agent是将数据源的数据发送给collector,Flume自带了很多直接可用的数据源(source),如:text(“filename”):将文件filename作为数据源,按行发送;tail(“filename”):探测filename新产生的数据,按行发送出去;fsyslogTcp(5140):监听TCP的5140端口,并且接收到的数据发送出去;同时提供了很多sink,如:console[("format")]:直接将将数据显示在桌面上;text(“txtfile”):将数据写到文件txtfile中;dfs(“dfsfile”):将数据写到HDFS上的dfsfile文件中;syslogTcp(“host”,port):将数据通过TCP传递给host节点;所述collector层,collector是将多个agent的数据汇总后,加载到storage中。它的source和sink与agent类似,如图2collector层运作示例示意图,agent(host)监听TCP的5140端口接收到的数据,并发送给collector,由collector将数据加载到HDFS上;
所述的Storage层,storage是存储系统,可以是一个普通file,也可以是HDFS,HIVE,HBase等,Hadoop Distributed File System,简称HDFS,是一个分布式文件系统;HIVE是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,HBase是一个分布式的、面向列的开源数据库。但实际上上述现有数据采集技术方案存在以下问题及不足:
rsync数据同步法:1)使用rsync同步数据时,需要扫描所有文件后进行比对,然后差量传输。如果文件数量较多而且文件较大,定期扫描所有文件将很耗时也很耗系统资源。在按照表1、表2软硬件配置要求搭建的环境下,中心数据汇总单元以10秒间隔扫描4台数据采集单元中100个不同路径下的大小为1M的实时更新文本文件为例,占用中心数据汇总单元50%的CPU资源和500M的内存资源,占用数据采集单元50%的CPU资源和100M的内存资源。相比之下,本发明占用中心数据汇总单元10%的CPU资源和20M的内存资源,占用数据采集单元10%的CPU资源和10M的内存资源;2)rsync只能实现定时更新,无论数据采集单元有无定义文件的更新,rsync都会按着定时任务去检查文件是否有更新,当数据文件较大时会使服务器性能下降,具体数据参考上例。
FTP传输法:1)从FTP服务器上检索一个文件,具体包含下面12道繁复的交换握手步骤:客户端建立到FTP服务器端控制端口的TCP Socket链接,并等待TCP握手完成;客户端等待服务器端发送回执;客户端向服务器端发送用户名并等待响应;客户端向服务器端发送密码并等待响应;客户端向服务器端发送SYST命令并等待响应;客户端向服务器端发送TYPE I命令并等待响应;如果用户需要在服务器端切换目录,客户端仍然发送命令并等待响应;主动模式下,客户端需要发送PORT命令到服务器端,然后等待响应(被动模式与主动模式相反);建立数据传输链接(需要经过三次握手,建立一条TCP Socket连接);通过链接传输数据;客户端等待服务器端从控制连接发送2xx指令,以确保数据传输成功;客户端发送QUIT命令,并等待服务器响应;FTP传输法效率很低,80%的掉线率都是由此造成;
2)FTP密码安全策略不完善:文件传输协议(FTP)并没有对密码安全做出规定,在FTP客户端和服务器端,数据以明文的形式传输,任何对通讯路径上的路由具有控制能力的人,都可以通过嗅探获取密码和数据。虽然可以使用SSL封装FTP,但FTP是通过建立多次链接进行数据传输的,即便是保护了密码安全,也很难保护数据传输的安全性。
3)ftp丢包率较高:ftp在局域网中的平均丢包率在3%左右,基于TCP/IP协议,网络一旦出现丢包,对数据传输将产生致命的影响,传输速度将程指数性质的下降。因为TCP协议栈在进行重新传输时效率非常低下,如果一个数据包丢失,协议栈可能需要传输整个拥塞窗口。此外,它们还将在出现网络拥塞时呈指数回退(即减少拥塞窗口并增加重新传输定时器),这种行为在数据包丢失时受到TCP的监测,测试数据如图6。
Hadoop分布式数据收集框架:Flume客户端只支持java运行环境JDK1.6,安装包大小接近2G,很占空间,安装配置过程复杂,不适于小规模快速批量部署,只要有下述任何一步错误都无法成功安装Flume,具体安装步骤如下:Java1.6安装,包括设置java环境变量,CDH3安装,包括下载cdh3-repository-1.0-1.noarch.rpm,安装createrepo,下载CDH3将其放在/home/res/CDH3,创建CDH3源库,下载packagekit-media.repo,安装CDH3引入RPM-GPG-KEY-cloudera,安装hadoop-0.20包,安装包含脚本的hadoop-0.20-<daemon>包,CDH3 Component Tarball Downloads组件下载;flume安装(tatballs安装法),包括下载解压flume-distribution-0.9.4,设置flume环境变量等。对一台计算机完成以上过程需要大约1小时。
发明内容
1.发明要解决的技术问题
针对传统数据采集方法中存在的以下问题:(1)数据采集程序部署复杂耗时,安装包从几十M到几个G,部署时间超过1小时;(2)采集程序运行时占用大量系统资源,50%以上的CPU资源和50%以上的内存资源;(3)数据传输低效不安全,报文交互步骤超过10道,5%以上的丢包率,密码明文传输;(4)数据采集单元不可被中心数据汇总单元集中管理或无法进行高效管理,一旦数据采集单元出现故障只能人工重启或调试,而且往往需要借助复杂的分布式算法,例如Hadoop的ZooKeeper;本发明提供智能化局域网数据采集方法,通过建立中心数据汇总单元与数据采集单元的SSH传输通道,完成以中心数据汇总单元为主导的动态轮询各数据采集单元的数据收集过程,可实现:
·数据采集程序部署简单快速,中心数据收集程序不超过1M,采集脚本大约4Kb,全部部署过程不超过30分钟;
·对数据采集单元性能的影响最低,只占用中心数据汇总单元10%的CPU资源和20M的内存资源,只占用数据采集单元10%的CPU资源和10M的内存资源;
·数据传输高效安全,只需7道报文交互步骤,局域网内丢包率几乎为0,数据传输采用密文的方式;
·中心数据汇总单元对数据采集单元的集中化管理,中心数据汇总单元可监控预测数据采集单元的故障,并自动对其进行智能化优化调试。
2.技术方案
一种局域网内智能数据采集方法,其步骤为:
步骤一:环境准备
一台中心数据汇总单元,至少一台以上数据采集单元,所述中心数据汇总单元运行数据收集程序与数据采集单元建立SSH连接并可以在数据采集单元上远程执行方法命令,利用XML文件存储各个数据采集单元的IP、机器名、数据采集路径,按照动态轮询优化算法从各个数据采集单元汇总数据,所述收集程序根据脚本模板文件和XML文件中的采集信息动态生成采集脚本;
所述数据采集单元,通过运行采集脚本对定义文件的更新数据进行采集并把更新数据发送到中心数据汇总单元,同时接受中心数据汇总单元发送过来的方法命令,所述定义文件就是在中心数据汇总单元上运行的收集程序中定义好的数据采集单元中的指定采集文件。
所述步骤1中的方法命令为发送脚本、删除脚本、执行脚本、停止脚本和执行Shell命令。
表1:中心数据汇总单元软硬件配置构成
表2:数据采集单元硬件配置构成
中心数据汇总单元功能:
1)运行数据收集程序与数据采集单元建立SSH连接并可以在数据采集单元上远程执行各种方法命令:发送脚本、删除脚本、执行脚本、停止脚本和执行Shell命令;
2)利用XML文件存储各个数据采集单元的IP、机器名、数据采集路径;
3)收集程序可以根据脚本模板文件和XML文件中的采集信息动态生成采集脚本;
4)收集程序可以获得各个数据采集单元的运行状况并实施有效管理;
5)按照动态轮询优化算法从各个数据采集单元汇总数据。
数据采集单元功能:
A.通过运行采集脚本对定义文件的更新数据进行采集并把更新数据发送到中心数据汇总单元;
B.接受中心数据汇总单元发送过来的各种方法命令:发送脚本、删除脚本、执行脚本、停止脚本和执行Shell命令;
步骤二:采集流程
环境搭建好之后如图3所示,中心数据汇总单元会按人为设定的间隔和顺序轮询所有数据采集单元;
中心数据汇总单元第一次和数据采集单元建立连接时,会自动把采集脚本发送到数据采集单元并执行采集脚本,保证所有数据采集单元都正常运行着采集脚本:
(1)当中心数据汇总单元轮询到某个数据采集单元时,先发送一个确认文件(OK.txt)到数据采集单元的“数据传送临时文件夹”中;
(2)从中心数据汇总单元发送到数据采集单元的采集脚本一方面会通过定时比较定义文件中现在的行数与上一次记录的行数的差值来监控采集脚本中规定的采集路径下的定义文件是否有更新,如果有更新数据就把更新数据送到“数据传送临时文件夹”;另一方面会通过文件检索命令定时检测“数据传送临时文件夹”中是否有中心数据汇总单元发送来的OK.txt文件,一旦检测到则进行下一步;
(3)数据采集单元会判断“数据传送临时文件夹”中的更新数据是否达到了可以传送的量,如果超过就传送更新数据到中心数据汇总单元的“数据收集临时文件夹”中,传送完后自动删除,否则发送拒绝文件(NO.txt)到中心数据汇总单元的“数据收集临时文件夹”中;
(4)中心数据汇总单元的收集程序一方面会通过文件检索方法定时检测“数据收集临时文件夹”中的临时文件,若临时文件存在则把临时文件中的数据备份到历史数据文件中,然后自动删除临时文件;另一方面会通过文件检索方法定时检测“数据收集临时文件夹”中是否有数据采集单元发送来的拒绝文件NO.txt,若检测到则轮询下一台数据采集单元;
步骤三:动态轮询优化算法
以上轮询模式平等地对待所有数据采集单元,按照固定的顺序轮询,而没有考虑到在一个时间段内有的数据采集单元采集的数据比较多有的数据采集单元采集的数据比较少,为了提高轮询的效率同时保证一定的数据采集实时性,我们就会自然想到在相同的时间段内增加对采集数据比较多的数据采集单元的轮询次数,减少对采集数据比较少的数据采集单元的轮询次数,算法流程如下:
设有m台数据采集单元
(a)统计一次轮询遍历后各数据采集单元的传输量pi(i=1,…,m);
(b)对各数据采集单元的传输量pi进行标准化,先计算出总的压缩份额5m和所有数据采集单元的总传输量将各个数据采集单元的传输量按照的比
例进行压缩,得到各数据采集单元非整数化的压缩份额n'i,再使用Q值算法将各数据采集单元非整数化的压缩份额n'i整数化为ni;
(c)计算所有数据采集单元压缩份额ni的最小公倍数N,并算出各数据采集单元的轮询次数
(d)根据计算出的各数据采集单元的轮询次数ki,利用均散算法来设计下一个轮询周期的轮询队列。
(e)回到(1)统计上一次轮询遍历后各数据采集单元的传输量pi;
Q值算法:压缩的目的是为了公平合理地将各个数据采集单元的传输量压缩成一定范围内的整数,但是在对各个数据采集单元的传输量进行压缩后,去掉各自整数部分会出现小数部分,这些小数部分加起来的和为一个整数,关键问题就在于这个剩余整数份额该如何分配给各个数据采集单元,一次Q值算法可以合理分配1个压缩份额,多次重复使用Q值算法就能合理分配完所有剩下的压缩份额,具体算法如下:
首先讨论A,B两个数据采集单元公平分配压缩份额的情况,设两个数据采集单元的传输量分别为p1和p2,分配的压缩份额分别为n1和n2,则两方的压缩倍数分别为p1/n1和p2/n2。显然仅当p1/n1=p2/n2时,压缩分配才是公平合理的,但是通常p1/n1≠p2/n2,并且pi/ni(i=1,2)数值较大的一方吃亏。
建立数量指标来衡量不公平的程度:
对A的相对不公平度
对B的相对不公平度
建立了衡量不公平的程度的数量指标rA,rB后,指定压缩份额分配的原则就是使它们尽可能小。
确定分配方案:
利用相对不公平度rA和rB来讨论1份压缩份额分配给A还是B;
不失一般性可设p1/n1>p2/n2,即对A不公平,当分配1份压缩份额时,关于pi/ni(i=1,2)的不等式可能有以下3种情况:
1.p1/(n1+1)>p2/n2,这说明即使A方增加1个压缩份额,仍然对A不公平,所以这1个份额应该分给A。
2.p1/(n1+1)<p2/n2,说明当A增加1个压缩份额时将变为对B不公平,参照(2)式计算出此时对B的相对不公平度为
3.p1/n1>p2/(n2+1),即当B增加1个压缩份额时将变为对A不公平,参照(1)式计算出此时对A的相对不公平度为
因为公平分配压缩份额的原则是使得不公平度尽可能小,所以如果
rB(n1+1,n2)<rA(n1,n2+1) (5)
则最后这1份压缩份额应分配给A;反之则分配给B,根据(3),(4)两式,(5)式等价于
还不难证明,上述第一种情况的p1/(n1+1)>p2/n2,也会导致(6)式。于是可以得出结论:当(6)式成立时最后1份压缩份额应分配给A,反之则分配给B;或者,若记则这1份压缩份额应分配给Q值较大的一方。
上述方法可以推广到有m个数据采集单元的情况,设第i个数据采集单元的传输量为pi,已分配ni个压缩份额,i=1,2,…,m,计算
这1份压缩份额分配给Q值最大的一方。
均散算法:均散算法的目的是根据各数据采集单元的轮询次数,生成一个相对均匀分散的轮询队列,即让同一个数据采集单元间隔相对固定的时间被轮询访问,具体流程如下:
设各数据采集单元的初始轮询次数为ki(i=1,2,…,m)
a)选择具有最大轮询次数kmax的数据采集单元加入轮询队列,若有多个数据采集单元具有相同最大轮询次数kmax,则随机选择1个加入队列,做出选择后将此数据采集单元的剩余轮询次数kmax减1变为kmax-1;
b)在除去a)中选择的数据采集单元的剩下的数据采集单元中选择具有最大剩余轮询次数k′max的数据采集单元,若有多个数据采集单元具有相同最大剩余轮询次数k′max,则选择1个最长时间没被轮询访问的数据采集单元加入队列,若还有多个数据采集单元具有相同的没被轮询访问最长时间,则随机选择1个加入队列,做出选择后将此数据采集单元的剩余轮询次数k′max减1变为k′max-1;
c)继续重复b)过程,直到所有数据采集单元的剩余轮询次数ki'减为0为止。
3.有益效果
本发明相对于现有技术,具有以下有益效果:
(1)程序部署简单快速相比之下,本发明支持java程序运行环境JDK1.4/1.5/1.6,且安装配置简单快速,只需在中心数据汇总单元部署一个中心数据收集程序大小不到1M的jar包,配置好SSH参数与数据采集单元建立连接,然后把大小约4Kb的采集脚本传送到数据采集单元并执行脚本就可以了,对局域网内所有计算机完成以上部署不超过30分钟。
(2)降低对计算机系统资源的占用,节能低碳
对计算机硬件配置要求低,如表1表2,将对计算机正常业务性能造成的影响降至最低,只占用中心数据汇总单元10%的CPU资源和20M的内存资源,只占用数据采集单元10%的CPU资源和10M的内存资源;
(3)数据传输高效安全
使用SSH传输协议,只需7道报文交互步骤就可完成数据传输,7道报文交互步骤即连接建立,版本协商,算法协商,密钥交换,用户认证,服务请求,数据传输和连接关闭,高效稳定,掉线率几乎为0;采用的SSH传输稳定可靠,局域网内丢包率几乎为0,数据传输采用密文的方式;
中心数据汇总单元控制采集节奏,实时跟踪各数据采集单元的任务压力并以此优化轮询次序,均匀分配数据采集单元任务,实现负载均衡;
依次轮询各个数据采集单元,保证同一时间中心数据汇总单元只和一台数据采集单元通信,从而有效避免网络拥堵造成的丢包,减少重传率,保证稳定的传输速率;
(4)灵活的集中化管理
可实现中心数据汇总单元对数据采集单元的集中化管理,中心数据汇总单元可通过SSH通道监控预测数据采集单元的故障,并通过执行Shell命令自动对其进行智能化优化调试,同时中心数据汇总单元可以根据需要灵活方便地改变数据采集单元的采集策略,只要重新修改采集脚本模板生成新的采集脚本,然后远程停止运行旧采集脚本并重新传输运行新脚本就可以了;
(5)本发明的中心数据汇总单元会根据上一次轮询周期中数据采集单元更新数据的大小来动态调整采集频率,从而可以把数据采集效率提高20%,同时减少30%的系统资源消耗;
(6)采用的SSH传输协议具有以下优点:数据传输采用密文的方式,保证信息交互的机密性;用户的认证信息以密文的方式传输,可以有效地防止用户信息被窃听;除了传统的密码认证,SSH服务器还可以采用多种方式对用户进行认证(如安全性级别更高的公钥认证),提高了用户认证的强度;客户端和服务器端之间通信使用的加解密密钥,都是通过密钥交互过程动态生成的,可以防止对加解密密钥的暴力猜测,安全性级别比手工配置密钥的方式高;为客户端提供了认证服务器的功能,可以防止“伪服务器欺骗”。
在软硬件环境下传统数据收集方法与本发明的比较试验结果如下:
表3:传统数据收集方法与本发明的对比试验结果
附图说明
图1为Flume架构示意图;
上述附图,其中agent:数据数据采集单元、collector:数据汇总端、master:全局管理者、HDFS:分布式文件系统、agent tier:数据数据采集单元层、collector tier:数据汇总端层、storage tier:存储层。
图2为collector层运作示例图;
图3为智能化局域网数据采集架构示意图;
图4为一次轮询遍历后各数据采集单元传输量统计示意图;
图5为本发明采集流程图;
图6为HTTP/FTP有效吞吐率与丢包率的对应关系,①HTTP超文本传送协议有效吞吐率与丢包率的对应关系,②FTP有效吞吐率与丢包率的对应关系。
具体实施方式
实施例1
步骤一:环境准备
一台中心数据汇总单元,四台数据采集单元
中心数据汇总单元软硬件配置要求
基本信息
IP地址 |
10.167.157.247 |
系统用户名Username |
Administrator |
系统登录密码Password |
1234user |
操作系统OS |
Windows XP SP3 |
中心数据汇总单元的收集程序用Java语言实现,Java程序的优点是具有优秀的跨平台性,一次编译后生成的class文件可以在装有java虚拟机JVM的任何操作系统平台的计算机上运行,另外由于JVM自带优秀的多线程机制,因此可以通过并发编程来提升系统效率。
(1)利用XML文件存储各个数据采集单元的IP、机器名、数据采集路径,例如:
(2)Java收集程序中引入开源jar包velocity-1.7.jar可以根据VM脚本模板文件和XML文件中的采集信息动态生成Shell采集脚本;
(3)Java收集程序中引入开源jar包ganymed-ssh2-build210.jar用来与数据采集单元建立SSH连接并在数据采集单元上远程执行各种方法命令:发送脚本、删除脚本、执行脚本、停止脚本或执行Shell命令;
建立连接,生成脚本:
RunScript rs=new
RunScript("st","10.167.157.180","Admin1234",path,"/opt");
传送脚本:
rs.transportScript();
执行脚本:
rs.runScript();
(4)java收集程序通过调用远程方法命令获得各个数据采集单元的运行状况并实施有效管理:
·若数据采集单元死机,则调用重启命令;
·若数据采集单元出现系统性能瓶颈,则调试相关系统参数;
·若数据采集单元网络受限,则调试相关网络参数;
·若数据采集单元脚本出现问题,则停止运行当前脚本,重传新脚本并执行;
(5)按照动态轮询优化算法从各个数据采集单元汇总数据,实现负载均衡。以下为Java源码:
中心数据汇总单元源码1(Hosts.java)
记录数据采集单元信息
中心数据汇总单元源码2(Script.java)
进行脚本相关的操作
中心数据汇总单元源码3(Collect.java)
备份收集到的数据文件
数据采集单元
软硬件配置要求
基本信息:
通过运行采集脚本对定义文件的更新数据进行采集并把更新数据发送到中心数据汇总单元:(1)如果数据采集单元是Linux系统,那么采集脚本为Shell脚本,同时需要安装配置SSH;(2)如果数据采集单元是Windows系统,那么就需要安装Cygwin+OpenSSH来模拟Linux环境运行Shell脚本和Shell命令,同时需要安装配置SSH;(3)如果对安全要求较高的话,可以在中心数据汇总单元和所有数据采集单元之间配好密钥对,实现免密码安全访问;
SSH的安装和配置:
安装SSH yum install ssh
启动SSH service sshd start
设置开机运行 chkconfig sshd on
修改SSH相关配置文件:
[rootst-perfo2~]#vi/etc/ssh/sshd_config ←用vi打开SSH的配置文件#Protocol 2,1←找到此行将行头“#”删除,再将行末的“,1”删除,只允许SSH2方式的连接
Protocol 2←修改后变为此状态,仅使用SSH2
#ServerKeyBits 768←找到这一行,将行首的“#”去掉,并将768改为1024
ServerKeyBits 1024←修改后变为此状态,将ServerKey强度改为1024比特#PermitRootLogin yes ←找到这一行,将行首的“#”去掉,并将yes改为noPermitRootLogin no ←修改后变为此状态,不允许用root进行登录
#系统登录密码Authentication yes ←找到这一行,将行头的“#”删除,将yes改为no
系统登录密码Authentication no←修改后变为此状态,不允许密码方式的登录#PermitEmpty系统登录密码s no ←找到此行将行头的“#”删除,不允许空密码登录
PermitEmpty系统登录密码s no ←修改后变为此状态,禁止空密码进行登录然后保存并退出。
访问权限设置:
因为我们只想让SSH服务为管理系统提供方便,所以在不通过外网远程管理系统的情况下,只允许内网客户端通过SSH登录到服务器,以最大限度减少不安全因素。设置方法如下:
[root st-perfo2~]#vi/etc/hosts.deny ←修改屏蔽规则,在文尾添加相应行
#
#hosts.deny This file describes the names of the hosts which are
#*not* allowed to use the local INET services,as decided
#by the ‘/usr/sbin/tcpd’server.
#
#The portmap line is redundant,but it is left to remind you that
#the new secure portmap uses hosts.deny and hosts.allow.In particular
#you should know that NFS uses portmap!
sshd∶ALL ←添加这一行,屏蔽来自所有的SSH连接请求
[roots st-perfo2~]#vi/etc/hosts.allow ←修改允许规则,在文尾添加相应行
#
#hosts.allow This file describes the names of the hosts which are
#allowed to use the local INET services,as decided
#by the ‘/usr/sbin/tcpd’server.
#
sshd∶192.168.0.←添加这一行,只允许来自内网的SSH连接请求
重启动SSH
在修改完SSH的配置文件后,需要重新启动SSH服务才能使新的设置生效。
[rootst-perfo2~]#/etc/rc.d/init.d/sshd restart ←重新启动SSH服务器
Stopping sshd: [OK]
Starting sshd: [OK]←SSH服务器重新启动成功
以下是采集脚本生成模板:
采集脚本生成模板(model.vm)
步骤二:采集流程
如图3所示:共4台数据采集单元和1台中心数据汇总单元;
中心数据汇总单元运行着数据收集程序,依次轮询各个数据采集单元,一旦与数据采集单元建立连接就发送确认文件OK.txt并等待接受数据文件;
数据采集单元运行着脚本程序采集数据,收到中心数据汇总单元的确认文件OK.txt后传送数据。
开始采集:
环境搭建好之后如图3所示,中心数据汇总单元会按人为设定的间隔和顺序轮询数据采集单元;
完整采集流程如图5所示,中心数据汇总单元第一次和数据采集单元建立连接时,会自动把shell脚本发送到数据采集单元并执行脚本,保证所有数据采集单元都正常运行着shell采集脚本:
(1)当中心数据汇总单元轮询到某个数据采集单元时,先发送一个确认文件(OK.txt文件)到数据采集单元的“数据传送临时文件夹”中;
(2)shell采集脚本一方面会通过定时比较定义文件中现在的行数与上一次记录的行数的差值来监控采集脚本中规定的采集路径下的定义文件是否有更新,如果有更新数据就把更新数据送到“数据传送临时文件夹”另一方面会通过if(-f filename)命令定时检测“数据传送临时文件夹”中是否有中心数据汇总单元发送来的OK.txt文件,一旦检测到则进行下一步;
(3)数据采集单元会判断“数据传送临时文件夹”中的更新数据是否达到了可以传送的量(需要人为设定,例如更新数据超过10行才能传输),如果超过就传送更新数据到中心数据汇总单元的“数据收集临时文件夹”中,传送完后自动删除,否则发送拒绝文件(NO.txt)到中心数据汇总单元的“数据收集临时文件夹”中;
(4)中心数据汇总单元java收集程序一方面会通过file.isexist()方法定时检测“数据收集临时文件夹”中的临时文件,若临时文件存在则把临时文件中的数据备份到历史数据文件中,然后自动删除临时文件;另一方面会通过file.isexist()方法定时检测“数据收集临时文件夹”中是否有数据采集单元发送来的拒绝文件NO.txt,若检测到则轮询下一台数据采集单元;
步骤三:动态轮询优化算法
如图4所示:
【第一步】
统计一次轮询遍历后各数据采集单元的传输量pi(i=1,2,3,4),如下表4
数据采集单元 |
一次轮询遍历后的传输量pi(Kb) |
1 |
100 |
2 |
70 |
3 |
50 |
4 |
20 |
表4:一次轮询遍历后各数据采集单元传输量统计
【第二步】
总压缩份额为5m即5×4=20,而所以将各个数据采集单元的传输量按照20∶240的比例进行压缩,得到非整数化压缩份额n′i(i=1,2,3,4)如下表5:
数据采集单元 |
压缩份额n'i |
1 |
8.33 |
2 |
5.83 |
3 |
4.17 |
表5:各数据采集单元非整数化压缩份额n′i
用总共20份压缩份额减去以上压缩份额的整数部分8+5+4+1=18,还剩2个压缩份额,
使用2次Q值算法将各数据采集单元非整数化压缩份额整数化;
第一次使用Q值算法,分配1个压缩份额
利用(7)式计算出各数据采集单元的Q值1如下表6:
数据采集单元 |
Q值1 |
1 |
138.89 |
2 |
163.33 |
3 |
125 |
4 |
200 |
表6:数据采集单元Q值1
所以应将1份压缩份额分配给数据采集单元4,于是得到各数据采集单元整数化压缩份额ni(i=1,2,3,4),如下表7:
数据采集单元 |
压缩份额ni |
1 |
8 |
2 |
5 |
3 |
4 |
4 |
2 |
表7:数据采集单元Q值1时各数据采集单元整数化压缩份额ni
第二次使用Q值算法,分配最后1份压缩份额
利用(7)式计算出各数据采集单元的Q值2如下表8:
数据采集单元 |
Q值2 |
1 |
138.89 |
2 |
163.33 |
3 |
125 |
4 |
66.67 |
表8:数据采集单元Q值2
所以应将最后1份压缩份额分配给数据采集单元2,于是得到最终各数据采集单元整数化压缩份额ni,如下表9:
数据采集单元 |
压缩份额ni |
1 |
8 |
2 |
6 |
3 |
4 |
4 |
2 |
表9:数据采集单元Q值2时各数据采集单元整数化压缩份额ni
【第三步】
计算出所有数据采集单元压缩份额的最小公倍数为24,并算出各数据采集单元的轮询次数ki(i=1,2,3,4),如下表10:
数据采集单元 |
轮询次数ki |
1 |
3 |
2 |
4 |
3 |
6 |
4 |
12 |
表10:在最小公倍数为24时算出各数据采集单元轮询次数ki
【第四步】
根据计算出的各数据采集单元的轮询次数,利用均散算法来设计下一个轮询周期的轮询队列
根据均散算法步骤a),从表10看出数据采集单元4的轮询次数最大,所以把4第一个加入轮询队列,修改表10如下表11,其中ki'(i=1,2,3,4)为剩余轮询次数:
数据采集单元 |
剩余轮询次数ki' |
1 |
3 |
2 |
4 |
3 |
6 |
表11
轮询队列:4
根据均散算法步骤b),在表11数据采集单元1、2、3中3的轮询次数最大,所以将3加入队列,修改表11如下表12:
数据采集单元 |
剩余轮询次数ki' |
1 |
3 |
2 |
4 |
3 |
5 |
4 |
11 |
表12
轮询队列:4-3
根据均散算法步骤c),在表12数据采集单元1、2、4中4的轮询次数最大,所以将4加入队列,修改表12如下表13:
数据采集单元 |
剩余轮询次数ki' |
1 |
3 |
2 |
4 |
3 |
5 |
4 |
10 |
表13
轮询队列:4-3-4
依次类推,最终得到的轮询队列如下
4-3-4-3-4-2-4-3-4-1-4-3-4-2-4-1-4-3-4-2-4-1-3-2-4
【第五步】
回到【第一步】,统计上一次轮询遍历后各数据采集单元的传输量pi(i=1,2,3,4)。