日志数据处理方法及系统的制作方法_2

文档序号:9826253阅读:来源:国知局
上的保留时间已经足够满足以实时分析为主要目标的监控计算等场旦
ο
[0032]日志宿主机本身可以提供日志的查询服务。但是,日志宿主机一般是直接向最终用户提供服务的,不能因为日志分析而消耗过多性能。为了尽量不影响日志宿主机的性能,本实施例在日志宿主机上部署客户端代理装置,由客户端代理装置提供日志查询功能,并且尽量将日志查询功能带来的性能消耗局限在必需的网络带宽上,不产生其他性能消耗。也就是说,本实施例中部署于日志宿主机上的客户端代理装置能够准确提供指定时间段内产生的日志数据的查询功能,这样就可以保证当前日志数据处理任务所需的目标日志数据从日志宿主机进入日志数据处理系统时就是齐全的。
[0033]为了实现能够准确提供指定时间段内产生的日志数据的查询功能,客户端代理装置需要为日志宿主机在不同时间产生的日志数据创建用于指示该日志数据在日志文件中的位置的位置索引。这样,客户端代理装置就可以根据位置索引快速找到待查询的日志数据,降低对日志宿主机的性能消耗。
[0034]例如,以对周期型日志数据进行实时处理的应用场景为例,在该应用场景中,日志数据处理任务都是周期性的,这里的周期性是指每次日中数据处理任务都要处理相同时间段内产生的日志数据,例如每个任务周期均需处理一分钟内产生的日志数据以产出这一周期的日志分析结果,这种任务需要查询的是某分钟,例如2014-11-1111:11这一分钟内产生的日志数据。基于此,本实施例设定单位周期,以单位周期内产生的日志数据为最小数据单位进行存储和查询。其中,单位周期可以是I秒、I分钟、2分钟、3分钟、I小时等,具体可以根据用户需求而定。基于此,上述查询请求包括的时间段标识所标识的时间段包括至少一个单位周期。意味着,映射节点一次查询请求可以查询至少一个单位周期内产生的日志数据。
[0035]基于上述,客户端代理装置应该为日志宿主机在每个单位周期内产生的日志数据创建位置索引。
[0036]值得说明的是,位置索引可以用日志数据在日志文件中的起始字节位置和日志数据的字节长度来表示;或者,位置索引也可以用日志数据在日志文件中的起始字节位置和结束字节位置来表示。
[0037]具体的,对于每个单位周期,客户端代理装置对该单位周期的上一个单位周期的尾部数据进行解析,确定该单位周期内产生的日志数据的起始位置,并对该单位周期的尾部数据进行解析,确定该单位周期内产生的日志数据的长度,作为该单位周期内产生的日志数据的位置索引。其中,该单位周期的尾部数据是指在该单位周期即将结束时产生的日志数据。
[0038]简单来说,上述实施方式主要是利用了日志打印的特点,即时间增序打印(意思是不可能出现较晚产生的日志数据打印在较早产生的日志数据之前),在相邻单位周期交替的时刻,客户端代理装置从单位周期内产生的日志数据的末尾读取少量字节进行解析,确定当前单位周期内产生的日志数据的结束点以及下一单位周期内产生的日志数据的起始点。
[0039]例如,对于单位周期T和单位周期T+1,如果对单位周期T内产生的日志数据的末尾进行分析,确定该末尾数据的下一字节是单位周期T+1内产生的日志数据,那说明在这个位置单位周期T内产生的日志数据已经全部结束,而单位周期T+1内产生的日志数据刚刚开始,这个末尾数据就是两个相邻单位周期的交替点。找到交替点之后,客户端代理装置就可以得到单位周期T内产生的日志数据的结束点位置(其中,根据起始点位置和结束点位置可以计算出日志数据的字节长度),以及单位周期T+1产生的日志数据的起始点位置;如此循环反复,就能得到每个单位周期内产生的日志数据的起始点位置和字节长度,即位置索引。
[0040]基于上述,当有日志数据处理任务时,负责执行该日志数据处理任务中的关联预处理子任务的映射节点可以通过向客户端代理装置发送查询请求,并在查询请求中携带日志文件标识和时间段标识,从客户端代理装置获取到该日志数据处理任务所需的日志数据。为便于描述,以当前日志数据处理任务为例,并将当前日志数据处理任务涉及的客户端代理装置称为目标客户端代理装置,将当前日志数据处理任务所需的日志数据称为目标日志数据,若当前日志数据处理任务所需的日志数据来自多台日志宿主机,则来自每台日志宿主机的日志数据可分别称为目标日志数据。当前日志数据处理任务所需的目标日志数据也就是该日志文件标识所标识的日志文件中在该时间段标识所标识的时间段内产生的日志数据。
[0041]对目标客户端代理装置来说,接收映射节点发送的查询请求后,可以根据其中的日志文件标识,确定存储该目标日志数据的日志文件,进而根据时间段标识找到在该时间段标识所标识的时间段内产生的日志数据,并将找到的日志数据作为目标日志数据返回给映射节点。
[0042]例如,基于上述位置索引,当映射节点用周期14:02分作为参数来查询目标客户端代理装置时,目标客户端代理装置可以根据日志数据的位置索引返回不多不少的日志数据。这就解决了映射节点采集日志数据时的齐全度问题。
[0043]值得说明的是,由于客户端代理装置具有保证采集日志数据时的齐全度的能力,所以映射节点可以在任意时刻启动采集日志数据的操作,不用担心启动采集日志数据的操作的时机不合适导致日志数据采集不齐全的问题。
[0044]例如,仍以对周期型日志数据进行实时处理的应用场景为例,映射节点其实可以在14:03:00秒就启动“采集14:02分这一周期产生的日志数据”的任务,因为当映射节点发起查询请求到目标客户端代理装置时,目标客户端代理装置可以根据当前位置索引的构建状况酌情处理:若14:02分这一周期产生的日志数据的位置索引已经产出,那就可以直接检索到相应的日志数据并返回;若还未产出,那就返回查询失败,映射节点的采集任务做失败处理。
[0045]第二点:通过映射节点的处理逻辑保证日志数据预处理阶段数据的齐全度。
[0046]映射节点与目标客户端代理装置相配合,可以保证来自目标客户端代理装置的目标日志数据都是指定时间段内产生的日志数据。但是考虑到一次日志数据处理任务可能同时涉及至少两台日志宿主机产生的日志数据,也就是说映射节点可能需要负责从至少两个客户端代理装置采集日志数据,这对映射节点来说,需要解决至少两个客户端代理装置返回的目标日志数据到达时的齐全度问题。
[0047]在本实施例中,映射节点在向目标客户端代理装置发送查询请求后,接收目标客户端代理装置返回的目标日志数据,之后判断是否接收到当前日志数据处理任务涉及的所有目标客户端代理装置返回的目标日志数据,只有在接收到当前日志数据处理任务涉及的所有目标客户端代理装置返回的目标日志数据的情况下,才对所有接收到的目标日志数据进行解析,并对解析后的目标日志数据进行关联预处理,进而将关联预处理结果发送给归纳节点。
[0048]在一可选实施方式中,日志数据处理系统还包括任务管理节点,负责进行任务编排。任务管理节点会定时驱动任务编排,并将编排好的任务发送到映射节点和归纳节点。这里的任务编排主要涉及日志数据处理任务涉及到多少个目标日志数据(对应于目标客户端代理装置的个数)、多少个关联预处理子任务(对应于映射节点的个数)以及目标日志数据与关联预处理子任务之间的映射关系(也就是目标客户端代理装置与映射节点之间的对应关系,简单来说就是一个映射节点负责几个目标客户端代理装置以及哪几个目标客户端代理装置等)等等。
[0049]对于映射节点来说,可以预先配置该映射节点对应的目标客户端代理装置的标识信息。目标客户端代理装置的标识信息可以是其IP地址,名称等。一种确定映射节点与目标客户端代理装置之间的对应关系的实施方式包括:任务管理节点确定当前日志数据处理任务涉及的日志宿主机的个数和执行当前日志数据处理任务的映射节点的个数;根据日志宿主机的个数和执行当前日志数据处理任务的映射节点的个数,确定每个映射节点分别对应的目标客户端代理装置,并将每个映射节点对应的目标客户端代理装置的标识信息提供给每个映射节点。
[0050]假设当前日志数据处理任务涉及的日志宿主机有N台,即涉及的目标客户端代理装置有N个,日志数据处理系统中负责日志数据关联预处理子任务的映射节点有M个,可以采用预设的分配算法确定每个映射节点对应的目标客户端代理装置。分配算法可以是对目标客户端代理装置进行排序,例如可以根据目标客户端代理装置的IP地址,将IP地址转换为一个长整(long)型数值,将long型数值按递增排序,得到目标客户端代理装置的排序;采用同样的方式对映射节点进行排序;根据预先设定的算法公式,例如m = n/(N/M)得到每个映射节点对应的目标客户端代理装置,在该算法公式中,η表示目标客户端代理装置的序号,m表示映射节点需要对应的目标客户端代理装置的序号,比如有100个目标客户端代理装置,20个映射节点,那第3个目标客户端代理装置应该由第O个映射节点对应,即(3/(100/20) = O),第6个目标客户端代理装置应该由第I个映射节点对应,即¢/(100/20)=I),以此类推,获得每个映射节点对应的目标客户端代理装置。值得说明的是,对于上述算法公式除不尽等情况可以做些微调。
[0051]通过上述方式确定出每个映射节点对应的目标客户端代理装置,这样就可以为每个映射节点配置对应的目标客户端代理装置的标识信息。基于此,当映射节点接收到目标日志数据时,记录返回该目标日志数据的目标客户端代理装置的标识信息,并将记录的返回目标日志数据的目标客户端代理装置的标识信息与预先配置的客户端代理装置的标识信息进行比较;若所记录的返回目标日志数据的目标客户端代理装置的标识信息与预先配置的客户端代理装
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1