基于日志的事件摘要模块设计与实现(2)_毕业论文

毕业论文移动版

毕业论文 > 计算机论文 >

基于日志的事件摘要模块设计与实现(2)


Automatic Computing是指IT系统能够适应不同的商业业务逻辑和硬件环境的一种能力,其中包括计算系统的self-configuring(自动配置)、self-healing(自动修复)、self-optimizing(自动优化)、sekf-protection(自动保护)。在大型的IT系统中,Automatic Computing能够有效地帮助企业公司节约大量花费在管理上的成本。系统日志是记录生产设备运行过程中产生的记录数据,比如常见的Windows Event logs和Linux System Logs,记录了操作系统运行状态中的各种异常事件,错误以及软件设置的更改[1]。只有实现系统日志和事件的挖掘,才能实现Automatic Computing。系统日志和事件的分析目的大概可以分为三类。
1.1.1  系统问题诊断
系统问题诊断也叫problem  determination。它是指判定系统是否发生故障和故障发生的原因。系统故障的发生通常具有互相依赖性和传递性,找出故障的根源叫做故障根源分析(root cause analysis)。在实时运行的生产机上,系统日志是最重要的系统监控和问题诊断数据来源之一。除了操作系统外,常见的其他软件系统,例如Web服务器、数据库、Hadoop系统等,都附带了日志生成模块并产生大量日志数据以供系统管理员分析和监控。对于系统管理员而言,系统出现的各种系统错误和异常都是发生在过去。要解决这个过去发生的问题必然知道发生该问题的前后阶段系统在做什么,才能依次找出问题出现的原因。以Web系统为例,现实中Web系统管理员在解决一个页面无法访问的问题时,他首先是查看Web服务器的运行日志。如果他发现数据库连接失败的错误记录出现在Web服务器上,然后,他将转而寻找数据库系统运行日志。通过数据库的运行日志分析,他发现数据库在之前某个时刻宕机。要知道数据库宕机的原因,他进而继续查询那个宕机时间段之前数据库的SQL日志记录,找到引发宕机的SQL操作。
1.1.2  调试和优化
除了生产机的诊断和监控,在软件开发和测试中,日志分析也是重要的手段之一。例如在多线程程序的调试,要重现一个共享资源访问引发的bug,通常需要重现之前的线程调试过程。然而线程的调试是操作系统根据当时的运行状态决定的,之后是很难重现完全一致的线程调试过程,更不用说传统的“单步跟踪”等方法了。对于大部分的多线程开发,软件开发人员主动嵌入日志,生成代码,然后通过生成的日志来分析和揣测bug出现的原因才是最有效的调试方法。
通过日志记录来跟踪运行程序也被用于各种程序优化软件,比如rofiler。 寻找待优化程序的瓶颈是优化软件的程序目标。为了找出瓶颈,常见的手段是在需要优化的程序代码中嵌入可追溯的日志。然后通过分析经过运行产生的日志,跟踪每次程序运行的执行时间和内存消耗等参数,以便找到瓶颈。
1.1.3  系统安全文护
在系统安全文护方面,日志分析常被用于被动攻击的分析和防御中。通过日志数据的分析,可以断定和寻找攻击源,从而找到有效的抵御措施。比如查看服务器的连接请求日志是鉴别DoS(Denial of Service)攻击的最直接方法。如果发现在某个时间段内出现大量异常的同一IP地址或者客户端的连接请求,那么即可把此类行为归结为DOS攻击。某些软件系统会把除IP地址外其他更详细的连接请求信息记录在日志数据内。通过进一步的日志分析,还可以对此DoS做更深入的剖析,比如找出对方使用的黑客软件或者经过的路由信息,进而找出有效抵御手段。除DoS攻击以外,Linux中用户操作命令和权限切换的记录日志也常用来判定某用户是否企图攻击该系统或试图获取更高的管理权限。 (责任编辑:qin)