第3章系统日志数据采集 本章学习目标 了解系统日志数据概念、分类、采集方法等基础知识; 了解Flume、Scibe日志数据采集系统; 熟练掌握EventLog Analyzer、Log Parser日志采集系统。 日常工作中,机器每天会生成大量日志文件,日志文件一般由数据源系统生成,用于记录数据源执行的各种操作活动,如网络监控的流量管理、计算机登录退出信息以及访问Web服务器行为等。在大数据时代,能够从日志文件中得到众多有价值的数据。通过收集这些日志文件,然后进行数据分析,可以从公司业务平台的日志文件中挖掘潜在的价值信息,为公司的决策和后台服务器平台的性能评估提供可靠的信息保障。系统日志采集系统所做的就是采集不同类型的日志文件,并支持离线和在线的实时查找、分析、筛查,找出有用的资源。 目前,越来越多的企业建立日志采集系统来保存大量的日志数据,并通过对这些数据进行分析来获取商业或社会价值。流行的工具包括Cloudera/Apache的Flume、Facebook的Scrible、Manage Engine的EventLog Analyzer和微软的Log Parser。 3.1系统日志数据采集概述 通用日志采集系统由采集、存储分析和结果应用三部分组成。日志采集主要负责提供多种方式、方法进行采集日志; 日志存储分析主要实现日志统一存储和定制的场景分析; 结果应用实现将日志分析结果提供服务接口或者默认的管理功能,供各种应用功能使用。 3.1.1系统日志分类 系统日志记录系统中的硬件、软件、系统问题等信息,以及根据不同命令执行的各种操作活动。根据系统日志记录的内容,系统日志一般分为三类: 用户行为日志、业务变更日志和系统运行日志。 1. 用户行为日志 记录系统用户使用系统时的一系列操作信息,登录/退出的时间、访问的页面、使用的不同应用程序等。 2. 业务变更日志 该日志主要根据需要,用于特定业务场景。它记录了用户在某一时刻使用某一功能对某一业务(对象、数据)进行了何种操作,例如,何时从A变为B等信息。 3. 系统运行日志 该日志用于记录系统运行时,服务器资源、网络和基础中间件的实时运行状态,定期从不同设备采集信息进行记录。 以上这些种类的日志数据,记录了用户方方面面的行为,包括各种交易、社交、应用程序习惯、搜索等信息。通过对这些数据的收集,制定规则进行分析,对结果进行筛选,可以获得拥有各种商业价值和社会价值的资料。 3.1.2日志分析应用场景 日志收集和分析是由需求驱动的。日志采集根据某一场景提出的需要,进行指定内容的采集,并对采集到的日志有针对性制定规则,使用专业软件手段进行分析。分析后的结果常见的应用场景包括如下几种。 1. 完善和提升系统 应用程序通过分析用户行为,调查哪些功能最受欢迎,对用户信息进行分析,得出某区域、某类用户为何种客户群,这有利于针对指定用户进行功能提升,有利于完善应用程序功能,从而提高用户体验。 2. 内容推荐 根据用户平时的阅读内容,收集相关日志并进行分析,通过完善算法,自动向用户推荐其感兴趣的内容,提高用户黏性。 3. 系统审计 对于企业(商业)公司为用户提供的系统,收集日常操作日志和业务变更日志有利于备查,也可以提供相关的安全审计功能。 4. 自动化操作和维护 场景化服务架构的系统或平台,在运维上需要很高的投入。自动化部署和运维,可以从很大程度上减轻运维的工作量。针对系统运行环境日志进行自动采集和分析,根据预定规则可以实现服务器资源的预警和动态分配,有利于快速定位和排除故障。 现在使用的系统多种多样,不同的系统有不同的运行环境,采集的日志类型大不相同,相应分析日志的需求也有较大差别。因此日志内容和采集方式具有多样性,有必要设计一个日志采集系统,满足日志采集的需要,并在应用功能中支持便捷反向捕获分析结果。 微课视频 3.1.3系统日志收集方法 收集系统日志有三种方式。 1. Web API模式 日志数据以基于HTTP的RESTful模式采集,并发送到消息队列,主要用于提供移动端、微信公众号和少量日志采集,可与.NET分布式系统上的“API网关”结合使用。 2. 服务代理模式 根据日志组件和消息队列客户端驱动程序,将其封装为日志服务代理,提供方便统一的使用界面。支持日志在本地和在线实时发送消息,其中日志发送到本地可以结合第三种方式完成日志采集的功能。 3. LC客户端模式 实现客户端批量抓取日志数据,并将其发送到LC服务器。LC客户端基于TCP与LC服务器通信,基于NIO框架构建,可以支持高并发处理。随后,LC服务器将日志数据写入文件。 3.2Flume数据采集 Flume最初是Cloudera公司提供的一个用于收集、聚合和传输海量日志的高可用、可靠、分布式的工具。Flume支持在日志系统中定制各种数据发送规则,用来采集数据。同时,Flume提供了简单处理数据并将其写入各种存储格式(可定制)的方法。 3.2.1Flume效益 目前Flume分为两个版本: ①Flume0.9x版本,统称为FlumeOG(原代); ②Flume1.x版本,统称为FlumeNG(下一代)。由于早期的FlumeOG存在设计不合理、代码臃肿、扩展困难等问题,在Flume被接纳进Apache后,开发人员对Cloudera Flume的代码进行了重构,对Flume的功能进行了补充和加强,并将其更名为Apache Flume,于是就有了FlumeNG和FlumeOG两个完全不同的版本。在实际开发中,大多使用FlumeNG的流行版本进行Flume开发,本节主要对FlumeNG进行介绍。 利用Flume采集系统日志数据具有以下优点。 1. 集中存储 Flume可以将应用程序生成的数据,存储在任何集中式存储器中,如HDFS、HBase。 2. 高稳定性 当数据采集的速度超过需要写入的数据时,也就是当采集的信息满足峰值时,采集的信息非常大,甚至超过了系统写入数据的能力,此时Flume会在数据生产者和数据接收者之间进行调整,以确保其能够提供介于两者之间的稳定数据。 3. 传输和接收的一致性 Flume的采集流水线是基于事务的,因此保证了数据传输和接收的一致性。 4. 整体性能高 Flume具有可靠性、容错性、可扩展性、可管理性和可定制性。 3.2.2Flume整体结构 Flume是一个分布式日志数据采集系统,它从各种服务器上采集数据并发送到指定的地方,如HDFS、HBase等,其总体结构见图31。 图31Flume总体结构 从图31可以看出,一个基于Flume的日志采集系统由三部分组成: 数据生成器、Flume核心部分和集中存储器。其中,数据生成器(如Facebook、Twitter等)生成的数据,由运行在Flume服务器上的单个代理收集,然后数据收集器从每个代理收集数据,并将收集到的数据存储在HDFS或HBase中。 在数据传输的整个过程中,事件在流动。事件是Flume内数据传输的最基本单位。它由一个可选的报头和一个加载数据的字节数组(数据集从数据源接入点传入并传输到发射机)组成。 Flume系统首先对事件进行封装,然后使用Agent对其进行解析,并根据规则将其传输到HBase或HDFS中。 3.2.3Flume的核心部件Agent Flume的核心是Agent。Flume将Agent作为最小的独立运行单元,一个Agent就是一个Java虚拟机(JVM)。Agent是一个完整的数据采集工具,包括三个核心组件,即数据源(源)、数据通道(通道)和数据槽(宿)。通过这些组件,“事件”(event)可以从一个地方流到另一个地方。各组件的具体功能见图32。 图32Flume核心Agent组件 1. 数据源(source) 数据源是数据采集端,负责数据捕获后的特殊格式化,将数据封装成事件,再将事件推送到数据通道。Flume支持的数据源有: (1) Avro源。Avro(数据序列化系统)源负责监控Avro端口,接收来自外部Avro客户端流的事件数据,与另一个Flume Agent上的Avro sink配对时,可以创建一个层次集合拓扑,使用Avro源可以实现多级流、扇出流、扇入流等效果。 (2) 假脱机目录源。Spooling(假脱机)目录源允许监视指定磁盘上的文件目录提取数据,它会查看文件指定目录中新添加的文件,并读出文件中的数据。 (3) Taildir source。Taildir(尾巴)source用于观察指定的文件,可以实时地监视每个文件中添加的新行。如果文件正在写入新行,这个收集器将重新收集它们以等待写入完成。 (4) HTTP源。HTTP源可以通过HTTP POST和GET请求接收事件数据,GET通常只用于测试,HTTP请求会由HTTP源处理程序的handler(处理器)可插拔插件接口实现到Flume events中,这个处理程序接收HttpServletRequest并返回Flume events列表。 2. 数据通道(channel) 数据通道是连接数据源和数据时隙的组件,可以看作是数据的缓冲区(数据队列)。它可以将事件临时存储在内存中,或者将其持久化到本地磁盘,直到数据槽完成对事件的处理。Flume支撑的数据通道有: 1) 内存通道(memory channel) 内存通道将事件存储在可配置最大尺寸的内存队列中,非常适合需要较高吞吐量的流量,但代理失败时会丢失部分数据。 2) 文件通道(file channel) 文件通道是Flume的一个持久通道,它将所有事件写入磁盘文件,因此,不会因丢失进程或机器关闭,造成数据丢失。File通过在一个事务中提交多个事件来提高吞吐量,这样只要提交事务,就不会丢失数据。 3. 数据槽(sink) 数据槽取出数据通道中的数据,存储到文件系统和数据库,或者提交到远程服务器。sink类似一个集结的递进中心,它需要根据后续需求进行配置,从而最终选择是将数据直接进行集中式存储(例如,直接存储到HDFS中),还是继续作为其他Agent的source进行传输。Flume支持的sink有如下几种。 1) HDFS sink HDFS sink将event写入Hadoop分布式文件系统(HDFS),它目前支持创建文本和序列文件,以及两种类型的压缩文件。HDFS sink可以基于经过的时间或数据大小或event数量来周期性地滚动文件(关闭当前文件并创建新文件),同时,它还通过属性(如event发生的时间戳或机器) 来对数据进行分桶或分区。HDFS目录路径可能包含将由HDFS接收器替换的格式化转义序列,以生成用于存储event的目录/文件名,使用HDFS sink时需要安装Hadoop,以便Flume可以使用Hadoop jar与HDFS集群进行通信。 2) Logger sink Loggersink用于记录INFO级别event,通常用于调试。Logger sink接收器的不同之处是它不需要在“记录原始数据”部分中说明额外的配置。 3) Avro sink Avrosink形成了Flume分层收集支持的一半,发送到此接收器的Flume event将转换为Avro event并发送到配置的主机名/端口对上,event将从配置的channel中批量获取配置的批处理大小。 3.2.4Flume运行机构 Flume采用了分层架构,见图33,分别为Agent, Collector和Storage。其中,Agent和Collector主要由source和sink两部分组成。 图33Flume层次结构 1. Agent Agent的作用是将数据源的数据发送给Collector。Flume自带了很多直接可用的数据源Source。 2. Collector Collector的作用是将多个Agent的数据汇总后,加载到Storage中。它的Source和Sink与Agent类似。 3. Storage Storage是存储系统,可以是一个普通的File,也可以是HDFS、Hive、HBase、分布式存储器等。 4. Master Master负责管理、协调Agent和Collector的配置信息,是Flume集群的控制器。 为保证Flume的可靠性,Flume在source和channel之间采用Interceptors拦截器用来更改或者检查Flume的events数据。在多channel情况下,Flume可以采用默认管道选择器(每一个管道传递的都是相同的events)或者多路复用通道选择器(依据每一个event的头部header的地址选择管道)实现channel的选择。为了保证负载均衡,采用sink线程用于激活被选择的sinks群中特定的sink。 3.3Scribe数据采集 Scribe是Facebook所发布的一个开源日志收集系统,已经得到了广泛的应用。Scribe基于使用非阻塞C++服务器的thrift服务的实现。它可以收集各种日志源的数据,并存储在集中存储系统(可以是NFS或分布式文件系统等)上,进行统一的统计、分析和处理。为日志的“分布式采集、统一处理”提供了一种可扩展、高度容错的方案。当集中存储系统的网络或服务器出现故障时,Scribe会将日志转储到本地或另一台机器上。当集中存储系统恢复时,Scribe会将转储的日志重新传输到集中存储系统。 Scribe主要用于以下两种场景: 一是它与生成日志文件的应用系统集成在一起。Scribe提供了几乎所有开发语言的开发包,可以很好地与各种应用系统集成。二是应用系统本地生成日志文件。Scribe使用一个独立的客户端程序(独立的客户端也可以用各种语言开发)来生成应用系统的本地日志文件。 3.3.1Scribe的功能 〖*2〗1.支持多种存储类型 Scribe支持多种存储类型,并且是可扩展的。 2. 日志自动分段功能 Scribe可以自动按大小和时间拆分文件。 3. 灵活的客户 (1) 支持多种通用语言。 (2) 可与应用系统集成,作为独立客户端使用。 4. 支持日志分类 Facebook有数百个博客类别。 5. 其他职能 (1) 连接池。 (2) 灵活的日志缓存大小。 (3) 多线程功能(消息队列)。 (4) 日志可以在划片服务器之间转发。 3.3.2Scribe的架构 Scribe的架构比较简单,主要包括三个部分,分别是Scribe Agent、Scribe和存储系统,见图34。 图34Scribe体系结构 1. Scribe Agent Scribe Agent实际上是一个thrift client。向Scribe发送数据的唯一方法是使用Thrift Client,Scribe内部定义了一个Thrift接口,用户使用该接口将数据发送给server。 2. Scribe Scribe接收到Thrift Client发送过来的数据,根据配置文件,将不同Topic的数据发送给不同的对象。Scribe提供了各种各样的Storage,如file、HDFS等,Scribe可将数据加载到这些Storage中。 3. 存储系统 存储系统实际上就是Scribe中的Store,当前Scribe支持非常多的Store,包括File(文件)、Buffer(双层存储,一个主储存,一个副存储)、Network(另一个Scribe服务器)、Bucket(包含多个Store,通过哈希将数据存到不同Storage中)、Null(忽略数据)、Thriftfile(写到一个Thrift File Transport文件中)和Multi(把数据同时存放到不同Store中)。 3.3.3Scribe的流程 Scribe采集数据的流程见图35。Scribe从各种数据源收集数据,将其放在共享队列中,然后将其推送到后端中央存储系统。当中央存储系统出现故障时,Scribe可以临时将日志写入本地文件。在中央存储系统恢复性能后,Scribe将继续把本地日志推送到中央存储系统。 图35Scribe数据采集流程 需要注意的是,每个数据源必须通过Thrift向Scribe传输数据(每个数据记录包含一个类别和一条消息)。可以在Scribe中配置用于侦听端口的Thrift线程的数量(默认值为3)。在后端,Scribe可以将不同类别的数据存储在不同的目录中进行单独处理。 3.3.4Scribe存储类型 〖*2〗1. file Scribe将日志写入文件或NFS。支持两种文件格式,即Std和HDFS,分别表示普通文本文件和HDFS。 2. Network Network存储向其他Scribe服务器发送消息。Scribe保持持久的链接打开以至于它能够发送消息。在正常运行的情况下,Scribe会基于当前缓存中存在多少条消息等待发送而分批次的发送。 3. Scribe Buffer Scribe Buffer使用两层存储: 一个主存储和一个辅助存储。日志将优先写入主存储,如果主存储失败,Scribe会将日志临时存储在辅助存储中。主存储的性能恢复后,辅助存储中的数据将复制到主存储。 4. Null 用户可以在配置文件中配置一个名为Default的类别。如果数据所属的类别没有在配置文件中设置相应的存储方式,则该数据将被视为Default。如果用户希望忽略此类数据,可以将其放入空存储区。 5. Bucket Bucket存储使用每个带前缀的消息作为key写入多个文件中。能够定义一个隐藏的或明确的Bucket。定义隐藏的Bucket必须要有一个名称是“Bucket”子Bucket,这个子Bucket可以是File存储、Network存储或者Thriftfile存储。 6. Multi 一个Mutil存储是将所有消息转发到子存储中去的一个存储。一个Mutil存储可能有多个名为Store0、Store1、Store2等的子存储。 3.4Event Log Analyzer数据采集 Event Log Analyzer是一个实时、基于Web的软件,主要用于日志收集和日常公司的事务管理和信息安全管理。Event Log Analyzer支持多种日志类型,包括: 不同系统(Windows、Linux、UNIX等)的系统日志,网络设备(路由、交换机等),应用程序(数据库Oracle、Apache等)。该软件可对上述文件进行收集、查找、分析、报表、归档,提供了对网络中用户活动、网络异常和内部威胁的实时监测。IT部门可用Eveng Log Analyzer进行网络系统审计,生成合规性报表。 3.4.1Event Log Analyzer特点 Event Log Analyzer能分析所有Windows和UNIX系统日志。如果在网络中的某台机器上生成一个重要的安全事件,就会显示在Event Log Analyzer仪表盘上的即时报表中。从事件日志报表可以进行深入分析,即可在数分钟之内找出根本原因,然后集中力量解决问题。 1. 即时告警 可以设置在服务器上生成特定事件时触发告警。例如,可以设置在邮件服务器上,将紧急事件通过电子邮件发送给操作员。借助Event Log Analyzer告警,就可以了解网络中每个系统的最新状态。 2. 将分布式事件存档到中央位置 存档的事件日志能充分显示系统在不同时间的性能。但是,事件日志检索是一项相当复杂的任务,除非将所有事件日志存储到一个中央位置,这样操作员就可以随时访问这些日志。Event Log Analyzer能把从每个系统接收到的事件日志自动存档到一个中央位置,以供操作员随时访问。 3. 不需要客户端软件/代理 Event Log Analyzer不需要在每台机器上安装单独的代理以便收集日志。因为收集Windows事件和Syslog消息的代理本身就是Event Log Analyzer服务器的一部分。因此Event Log Analyzer能在不增添主机负荷的前提下收集和分析事件日志。 然而,如果需要,可以将代理部署在客户端以便收集事件日志。这将便于在某个大型的分布式网络中,从各个位置的服务器收集事件日志。 3.4.2Event Log Analyzer主要功能 Event Log Analyzer通过定义日志筛选规则和策略,帮助IT管理员从海量日志数据中精确查找关键有用的事件数据,准确定位网络故障并提前识别安全威胁,从而降低系统宕机时间、提升网络性能、保障企业网络安全。其主要功能如下。 1. 日志管理 日志管理是Event Log Analyzer的最主要功能,保障应用系统的网络安全,包括以下具体功能: 1) Windows系统日志分析 监控和报表网络范围内的Windows服务器、系统和网络设备; 以及合规问题、性能精度是一个重大责任。在如此重压的环境下,需要的将是一款前瞻性的事件日志监控解决方案。它能应付快速发展的IT世界,并提供高科技的、技术完备的Windows日志管理解决方案。 2) Syslog分析 系统日志(Syslog)管理是几乎所有企业的重要需求。系统管理员将Syslog看作是解决网络上系统日志支持的系统和设备性能问题的关键资源。人们往往低估了对完整的Syslog监控解决方案的需求,导致长时间筛选大量系统日志来解决某一个问题。高效的事件日志Syslog分析可减少系统停机时间、提高网络性能,并有助于加强企业的安全策略。 3) 应用程序日志分析 Event Log Analyzer支持广泛的应用程序,并使用其ULPI技术生成报表和告警。这些报表可分析生成的顶级事件、事件趋势等的详细信息。这些报表有助于IT安全经理轻松地管理拖欠费用户和分析应用程序的异常性能。 4) Windows终端服务器日志监控 Event Log Analyzer允许通过实时监控和分析终端服务器日志数据,监控Windows远程桌面服务上发生的用户活动并生成相关报表。它分析用户在每个远程连接会话中所花费的时间、登录到服务器的用户、所访问的资源、对用户授权的资源以及用户是否成功连接到资源等。 5) Syslog服务器 Event Log Analyzer带有内置的Syslog服务器。它通过侦听Syslog端口(UDP)来实时收集Syslog事件。另外,也可以配置多个端口来侦听Syslog,当部分设备使用一些其他端口发送Syslog时,这很有用。在其他日志管理应用程序中,可能需要单独的Syslog服务器或转发器。 6) 通用日志解析 Event Log Analyzer比大多数设备和应用程序所能提供的丰富支持都更为强大,确保可以解析来自任何可生成人类可读日志的来源的日志数据。使用Event Log Analyzer可以分析网络中任何应用程序的日志数据。 2. 应用程序日志分析 Event Log Analyzer的应用程序日志分析功能主要是对以下日志进行监控和分析。 1) IIS Web服务器日志分析 Event Log Analyzer收集、分析、审计和监控IIS Web服务器,并提供报表,包含错误事件、针对服务器的安全攻击和使用情况分析的信息。“错误”报表提供了对访问IIS Web服务器上托管的网站时可能遇到的错误(如用户身份验证失败、HTTP错误请求、HTTP请求实体太大和网关超时)的洞察,了解用户在网站上可能遇到的问题,且可向这些报表分配定制告警。 2) Apache Web服务器日志分析 Event Log Analyzer可以收集、分析Apache HTTP服务器生成的日志信息。使用这些信息,可以判断服务器的使用情况、找出漏洞所在,并设法改进服务器结构和整体性能。 3) 打印机服务器日志分析 打印服务器是可能会导致公司信息泄露至关重要的地方,但是,确保打印服务器的顺利运行以及保持高效率的打印过程也很重要。监控打印服务器日志具备以下功能: 确保不会打印敏感文档、标记试图在权限不足时进行打印的情况、识别失败的打印作业及其原因、发现员工打印习惯的模式和趋势等。 3. IT合规性审计报表 Event Log Analyzer的合规性审计报表功能主要是为了满足合规性审计需要。 1) 合规性审计 Event Log Analyzer通过实时监控网络和敏感数据,轻松生成合规报表,可帮助各组织为自定义时间段内的日志数据进行保留和归档。根据灵活的时间段归档日志数据可帮助管理员对归档日志执行取证分析,以满足合规审核要求、调查数据盗窃及追踪网络入侵者。 2) PCI合规性报表 Event Log Analyzer是Manage Engine的日志分析和管理软件,可帮助建立对PCI DSS的合规性。Event Log Analyzer的合规报表主要满足PCI DSS第10条要求,该要求涉及跟踪和监控对持卡人数据的所有访问。除了第10条要求外,Event Log Analyzer还可帮助确定是否符合其他PCI DSS要求。 3) ISO 27001合规性报表 Event Log Analyzer可以帮助企业生成符合ISO 27001: 2013的A.12.4.1、A.12.4.2和A.12.4.3管制条例,这些管制条例可帮助企业记录事件并生成证据。同时,Event Log Analyzer还满足管制条例A.9.2.1、A.9.2.5和A.9.4.2的要求,确保仅允许授权用户访问系统和服务,并阻止对系统和服务未经授权的访问。 4) 自定义合规性报表 Event Log Analyzer允许用户自定义和配置现有的预定义合规性报表,以满足与企业及行业相关的独特内部安全策略要求。可以通过添加或删除默认事件报表列表来修改现有合规报表。 4. 系统与用户监控日志报表 Event Log Analyzer的系统与用户监控日志报表功能可以及时了解事件活动。 1) 内建报表 Event Log Analyzer包含超过1000种预定义报表。每当收集日志时都会立即生成报表,通过仅显示最重要的信息来减少组织的日志审核开销。事件日志报表帮助组织分析其网络并满足各种安全和合规要求。 2) 自定义报表 Event Log Analyzer提供了几个选项来自定义报表。根据要求,可以使用新的报表配置文件创建新的自定义报表。除了新的自定义报表之外,还可自定义现有的预建(预填充)报表以满足需求。通过使用这些自定义报表,由于报表已针对特定数据进行删减,因此管理员可以轻松进行日志分析。 3) 活动目录日志报表 Event Log Analyzer可监控Active Directory日志,且任何特定故障事故可实时进行跟踪。它可以立即向网络管理员发出告警,因此可很快地采取补救措施来避免网络故障。 4) 历史事件趋势 Event Log Analyzer中的趋势报表可分析一段时间内设备的性能。趋势监视有助于预测网络上Windows和UNIX设备以及Cisco交换机和路由器的使用情况与性能。Event Log Analyzer中的趋势报表根据事件严重性和事件类型显示跨设备生成的事件。 3.4.3Event Log Analyzer的可视化用户界面 Event Log Analyzer是用来分析和审计系统及事件日志的管理软件,能够对全网范围内的主机、服务器、网络设备、数据库以及各种应用服务系统等产生的日志,进行全面收集和细致分析,通过统一的控制台进行实时可视化的操作。 在正常信息管理中,会涉及多种设备,见图36。监控本地客户端、服务器、网络基础设备等提供的信息非常重要。本地报表可帮助分析生成的重要事件、事件趋势等详细信息。这些报表有助于IT安全经理轻松地管理用户和应用程序的异常性能,减少解决问题所花费的时间。 图36Event Log Analyzer可监控设备 服务器是IT基础设施的关键,且事实上经常暴露于巨大的风险之下。人们通常认为服务器已经在防火墙的保护之下了,但实际上,它们很容易受到攻击,需要采取安全措施。主要考虑的因素是威胁源。随着远程连接技术的广泛使用,公司可以整合更多的远程工作者、全球办公室、企业以及竞争对手。远程员工可造成与内部员工相同的威胁,原因可能是不正确的安全措施以及对远程网络设备的监管不力。这就需要随时留意那些行为不当者、数据窃贼等。 除服务器和客户端外,监控网络设备是必需的,因为它可帮助用户全面了解网络。Event Log Analyzer支持监视路由中的用户活动、路由流量、交换机日志、各种版本防火墙流量等。 从Event Log Analyzer的用户界面(见图37),可以根据需要找到相应的功能。 用户界面从左到右依次如下。 1. Home(主页) Home选项卡包含集中的Event Log Analyzer设置面板,进一步分为多个选项卡,包括Event Overview(本地机器)、Network Overview(网络事件)和Security Overview(安全事件),可根据自身需要对主页面进行调整。主页面默认标签能看到基本选项,All Events所有事件、Windows事件、Syslog事件、所有设备、日志趋势(Log Trend)等。 图37Event Log Analyzer可视化界面 图38报告模板 2. Reports(报表) Reports选项卡提供自定义报告和报告模板,可创建、修改、删除、计划和重新安排自定义报告。报告配置文件可以导入,并以PDF、CSV和XML格式导出。 报告模板见图38,通常采用经常使用的信息自动生成报告,如用户活动报告、趋势报告、详细的应用程序报告和详细的设备报告。报告包括访问用户数量最多的设备、登录次数最多的用户、具有最多交互式登录的用户等。 3. Compliance(合规性) Compliance选项卡根据不同合规政策的要求生成指定的报告,如FISMA(见图39),包括PCIDS、SOX、HIPAA、GLBA、GPG和ISO 27001: 2013等。 图39FISMA报告 4. Search(搜索) 提供搜索原始日志的两个选项: 基本搜索或高级搜索。搜索结果显示在页面的下半部分,最终搜索结果可以保存为报告(PDF或CSV格式),也可以按预定间隔进行生成并自动发送邮件给指定用户。 图310不同规则预定义 5. Correlation(相关性) 提供不同类别之间的规则预定义,见图310,这些规则会在发生特定事件(或事件组合),在指定时间段内进行指定次数时生成警报。比如制定网络相关规则,专门显示华为手机上网事件并定时将数据报表上传到指定负责人的邮箱。 6. Alerts(警告) 允许用户创建警报配置文件,以通知用户或团队阈值违规、网络异常、用户活动或合规违规等。警报选项卡显示所有警报配置文件、生成的警报,包括禁用、修改或删除任何现有警报配置文件的选项。警报配置文件也可以以XML格式导出或导入。 7. Setting(设置) 允许根据自身需求配置Event Log Analyzer。三个子部分分别为“配置”“管理设置”和“系统设置”。 8. +Add(下拉菜单) 该按钮提供了添加主机、告警、报表和导入日志等功能。另外,搜索框用来进行快速搜索。在页面的右上角有两个图标,分别是Event Log Analyzer监听端口列表和Syslog数据包查看器。在帮助菜单中,提供了升级许可、关于、用户指南和反馈等选项。 3.5基于Log Parser的数据采集 Log Parser是一款功能强大的多功能工具,可提供对基于文本的数据(如日志文件、XML文件和CSV文件)以及Windows操作系统上的关键数据源(如事件日志、注册表、文件系统和ActiveDirectory)的查询以及输出。它可以像使用SQL语句一样查询分析这些数据,甚至可以把分析结果以各种图表的形式展现出来。 3.5.1Log Parser组成部分 Log Parser主要组成部分,可以拆分为以下三种: 目标输入、类SQL语句引擎、结果输出。通过架构图311可以看出,输入源(多种格式的日志源)经过SQL语句(有SQL引擎处理)处理后,输出想要的结果。 图311Log Parser架构图 1. 目标输入 Log Parser使用通用日志或记录当作输入来源的提供者,每条日志信息可以当作SQL表中的行,所以目标输入可以认为是要处理的数据的SQL表。 Log Parser可以从以下数据类型中检索或处理指定数文件: IIS日志文件(W3C、IIS、NCSA、集中式二进制日志、HTTP错误日志、URLScan日志、ODBC日志)、Windows事件日志、Windows注册表、通用XML、CSV、TSV和W3C格式化的文本文件(如Exchange跟踪日志文件、个人防火墙日志文件、Windows Media Services日志文件、FTP日志文件、SMTP日志文件等)等。 2. 类SQL语句引擎 使用包含通用SQL语句(SELECT、WHERE、GROUP BY、HAVING、ORDER BY)、聚合函数(SUM、COUNT、AVG、MAX、MIN)和丰富的功能集(如SUBSTR、CASE、COALESCE、REVERSEDNS等)。 3. 结果输出 可以被视为接收数据处理结果的SQL表。Log Parser的内置输出可以将结果以文本、图片存在本地,以数据形式发送上传。本地文本支持多种格式,如CSV、TSV、XML、W3C等。图片可以GIF或JPG格式导出,或直接显示,也可直接发送到SQL数据库、syslog服务器等。 3.5.2Log Parser Lizard软件功能 针对Log Parser只能用类SQL编写,不易操作,引入了Log Parser Lizard软件。该软件将Log Parser进行了可视化处理,提高了可操作性,通过可视化操作,可以更直观地分析服务器日志、网站日志等复杂庞大的文件,方便导入和处理。Log Parser Lizard同样支持多种格式的文件,如常用的日志文件、CSV文件、XML文件以及注册表、文件系统等内容。遇到Windows域被入侵的相关安全事件时,需要分析Windows安全日志,此类日志往往非常大,同样也可以使用Log Parser Lizard高效分析安全日志文件,提取有用信息,提高效率。 1. 封装了Log Parser命令 Log Parser Lizard改进的可视化处理,增加了图形界面,减少了Log Parser对数据进行预处理时类SQL语句的输入,降低了Log Parser的使用难度。 2. 支持外观颜色设置 Log Parser Lizard的软件主界面见图312,可以通过不同颜色和图标区分不同数据。 图312Log Parser Lizard运行界面 3. 允许设置文件名 不同于Log Parser只能用命令行处理,Log Parser Lizard可以针对不同内容从选项卡列表中新建文件名,删除和添加新的文件。 4. 允许保存文件 可以将编写过的命令,以文件的形式保存下来,方便下次直接打开调用。 5. 提供多种类图表 支持多种类的图表,见图313,可以将查询结果以多种图表形式展示。 图313图表类型 6. 提供资源搜索功能 Log Parser Lizard自带多种模板和数据库,可以直接引用。 7. 集成开源工具 如log4net等,可以方便地对IIS logs、EventLogs、active directory、log4net、File Systems、TSQL进行查询。 8. 集成输出插件 集成Infragistics.UltraChart.Core.v4.3、Infragistics.Excel.v4.3.dll等,使查询结果可以方便地以图表或Excel格式展示。 9. 对纯文本文件运行SQL查询 通常,SQL查询只能在数据库上执行,Log Parse使用类似于SQL语法的语言。Log Parser Lizard可以使用自身的SQL语法,能够对纯文本文件(如某些日志文件)直接进行SQL查询。例如,查找硬盘上最小的10个重复文件、相同状态码。Log Parser Lizard也可以查找IIS日志、某个入侵的IP地址、HTTP状态代码等。 10. 支持Excel和PDF 运行所需的查询并查到所需的信息后,不仅可以保存为CSV、IIS日志文件,还可以将结果保存到Excel电子表格或PDF文件中,或直接将结果通过邮件附件发送出去。 3.5.3Log Parser Lizard软件特色 〖*2〗1. Expression Editor(表达式编辑器) 当表达式编辑器(见图314)使用较复杂搜索条件时,可使用该模块加载多种布尔值或正则表达式。在编辑器中,可以手动输入表达式,或使用控件中提供的选择函数(Functions)、运算符(Operators)等。表达式是一个字符串,当进行解析与处理时,会计算一些值。表达式由列、字段名称、常量、运算符与函数组成。列、字段名称必须用括号括起来。 图314表达式编辑器 2. Conditional formatting for the column(过滤器) 该控件允许用户直观地使用可视化界面编写过滤器并编辑过滤条件,见图315。 图315过滤器 3. Result Grid(结果集控件) 该控件以表格形式显示结果集,与Excel表类似,支持对结果进行编辑、排序、筛选、分组、汇总计算等其他功能,见图316。 图316结果集控件 4. Dashboard(自制控制面板) 见图317,Dashboard模块可根据定制需要加载的类型,引用不同的数据源,制作包括数据透视表、图表、树形图等多种展示方式。 图317Dashboard 5. Report Designer(报告编辑器) Report Designer是一份WYSIWYG报告引擎,见图318,该控件提供了一个用户界面,与Word操作界面类似,可以快速创建标准报告,具有数据整形(分组、排序与过滤)功能、基本文字排版、引入运行结果、分层数据表示等功能。 图318报告编辑器 3.6本章小结 企事业单位的业务平台每天都会产生大量的日志文件,用于记录数据源执行的各种操作活动,包含很多有价值的数据。通过对这些日志文件进行采集,然后进行数据分析,可以挖掘到具有潜在价值的信息,为决策和后台服务器平台性能的评估提供可靠的数据保证。本章首先阐述了系统日志的分类、应用以及采集方法等基础知识,然后介绍了Flume、Scribe、Event Log Analyzer和Log Parser四种简单常用的采集工具。 习题 1. 系统日志分为哪些类别? 2. 系统日志的采集方式有哪些? 3. 利用Flume采集系统日志数据有什么优点? 4. Flume的核心部件有哪些? 5. Scribe架构的三个主要部分是什么? 6. Scribe的存储方式有哪些? 7. Event Log Analyzer应用于哪些场景? 8. Log Parser由哪三部分组成? 9. Log Parser Lizard的软件特色是什么?