IBM Accelerator for Machine Data Analytics,第 1 部分: 加速机器数据分析

企业正在从各种来源生成大量机器日志。IBM® Accelerator for Machine Data Analytics 简化了所需的实现任务,加快了对半结构化、非结构化或结构化文本数据的分析。

Sonali Surange, 软件架构师, IBM

作者照片Sonali Surange 是研究 IBM 大数据产品和技术的一名 IBM 软件架构师。他获得了多项专利,在 IBM developerWorks 上发表了超过 15 篇技术论文,还出席过许多技术大会。Sonali 曾经是 IBM Outstanding Technical Achievement Award、Women of Color STEM Technical All Star Award 的获得者,于 2012 年被评为 IBM developerWorks Professional Author。


developerWorks 专家作者

Anju Bansal, 高级开发经理, IBM

作者 Anju 的照片Anju Bansal 是 IBM 硅谷实验室的一位高级开发经理。



2013 年 6 月 04 日

机器数据分析是一项紧迫的商业需要

半数财富 500 强公司每年都会经历超过 80 小时的系统宕机时间。如果均匀分到全年,每天大约有 13 分钟的宕机时间。尽管宕机不可能每天都发生,但有可能在一周后出现 1.5 小时的宕机,或者在一个月后出现 6 小时的宕机。

作为用户,在线银行操作的频繁不可用令人非常烦恼。作为业务所有者,当系统宕机时,所有流程都会停滞。正在执行的工作被中断,且无法满足 SLA,合同债务可能导致昂贵的费用、负面的公众形象,以及失去当前和潜在的未来客户。最终,如果无法提供可靠而又稳定的系统,则会导致资金损失。尽管这些系统的故障是不可避免的,但及时预测故障,并在出现这些故障之前进行拦截,这方面的能力现在已经不可或缺。

在硬件、固件、中间件、应用程序以及存储和管理层上生成的表明故障或错误的海量诊断数据中,可以找到此问题的一个可能的解决方案。对此数据的机器分析和理解正成为调试、性能分析、根源分析和业务分析的一个重要组成部分。

除了预防宕机之外,机器数据分析还可以为欺诈检测、客户保留和其他重要用例提供洞察。


机器数据分析的问题就是大数据问题

机器数据无疑符合大数据的特征。

每一层的应用程序架构都会生成各种各样的数据输出。大量的这类数据使手动使用工具变得很困难。使用模式匹配工具(比如 grepawk)跨文件过滤和关联数据需要大量的劳力和时间。随着世界变得更加物联化,该数据量预计也会不断增长。

图 1. 机器数据中的种类、量和速度
所有级别上生成的机器数据中的种类、量和速度

IBM Accelerator for Machine Data Analytics

IBM 加速器是一些软件组件,用于加速特定解决方案或用例的开发和大数据平台上的实现。

IBM Accelerator for Machine Data Analytics 是一组 BigInsights® 应用程序,用于加速机器数据用例的实现。这些应用程序使用 BigInsights 运行时技术来支持它们的实现。

图 2. BigInsights 和加速器
BigInsights 和加速器概述

一家虚构的 Sample Outdoors 公司的情形

7 月 14 日(星期六)的下午对 Sample Outdoors 公司而言并不顺利。网站关闭,客户打电话抱怨无法进行购买,客户无法访问他们的帐户信息。

Sample Outdoors 公司拥有许多多层应用程序,这些应用程序由 Web 前端、应用服务器和数据库层组成。

幸运的是,Sample Outdoors 公司在 IBM Accelerator for Machine Data Analytics 的帮助下实现了一个机器数据分析解决方案。他们保存了迄今为止多个月的机器数据,能够利用这些数据了解出现这种情形的潜在原因。

7 月 14 日,星期六,Sample Outdoors 公司能够执行以下操作。

  • 搜索并承认其系统中存在问题。
  • 查找历史数据上的模式,确定以前定期发生的具有类似症状的问题。
  • 分析导致这些情形的最大影响根源。

有了这一认识,他们能够制定流程,更好地管理这些情形,甚至在未来避免这些情形。

让我们看看 Sample Outdoors 公司如何使用 IBM Accelerator for Machine Data Analytics 实现他们的机器数据分析解决方案,以及如何在这个特定的日子便捷地使用他们的解决方案。


加速您的机器数据分析的 10 项功能

下面概括并重点介绍了加速机器数据分析解决方案的实现的 IBM Accelerator for Machine Data Analytics 功能。

  1. 如欲了解如何准备提供对分析有用的信息的数据,请参阅 开始前的一些准备
  2. 请参阅 已知日志类型 一节,了解在机器数据与加速器支持的已知类型匹配时,如何使用加速器所提供的已知日志类型。
  3. 请参阅 未知日志类型 一节,对未知日志类型使用 generic 日志类型。
  4. 请参阅 引入数据 一节,学习如何将准备好的数据引入 HDFS (Hadoop File System) 中,以便它们可用于数据提取。
  5. 要从文本提取信息或字段,以便为用于分析的数据做好准备,请参阅 从文本提取信息 一节。
  6. 为所有提取的信息建立索引,并获取所有数据的统一视图。有关的更多信息,请参阅 缩小、下钻和确认 一节。
  7. 观察导致各个日志中的错误的事件的时间顺序。有关的更多信息,请参阅 使用搜索按时间顺序分析根源 一节。
  8. 请参阅 准备深入分析 一节,了解如何构建会话,将相关事件组合在一起,为执行深入分析做好准备。
  9. 在发生错误时您是否希望识别频繁发生的事件?在 识别模式 一节中,了解如何利用加速器帮助回答此问题。
  10. 您是否希望识别对错误有明显影响的事件?在 理解影响 一节中,了解如何利用加速器帮助回答此问题。

Sample Outdoors 公司拥有以下用户客户管理的应用程序,以及相应的日志。

  • CustomerFrontEnd 应用程序:一个基于 Apache Web 访问的应用程序。
  • CustomerBackend 应用程序:一个基于 IBM WebSphere 应用服务器的应用程序。
  • CustomerDbApp 应用程序:一个 Oracle 数据库应用程序。

以下是最简单的情形,但对该加速器进行了概括。


开始前的一些准备

机器数据或日志数据通常包含一系列事件或记录。一些记录只有一行,而其他记录可能包含很多行。包含多行记录的典型日记实例是应用服务器日志,它们可能包含 XML 代码段或异常轨迹、数据库或 XML 日志,也可能包含来自任何记录多行消息的应用程序的日志。Apache Web 访问日志或 syslog 都是包含只有一行的记录的日志的不错示例。

很多时候,为了简便起见,机器数据被配置为省略信息。服务器名称、数据中心名称或其他任何适用于一个业务的概念等信息都能在分析数据期间提供补充。您可以在元数据中关联此信息,以充实进一步的分析。

首先,必须将具有类似 内容的数据组织到目录或批处理中。批处理可包含独立的 gzip 压缩文件、未压缩的原始文件或这些文件之下的子目录。每个子目录都将扁平化为一个批处理。每个批处理的元数据都是相关联的,以一个名为 metadata.json 的 JSON 文本文件的形式提供。

MDAGenerateMeta.sh 实用程序将基于您的输入为每个批处理生成元数据文件。在拥有较少的批处理时,可绕过该实用程序,手动更改现有的 metadata.json,使之与您的日志数据的内容相匹配。在这么做时,请确保您提供了惟一的 batchID(如果您在创建一个新批处理)。

MDAGenerateMeta.sh 实用程序

您可以在加速器的安装位置的 bin 目录中找到一个名为 MDAGenerateMeta.sh 的简单实用程序。基于用户提供的输入,此实用程序在一个名为 metadata.json 的文件中生成蕴含信息的元数据。此实用程序将一个 Metadata.json 与每组或每批日志相关联,确保每个 Metadata.json 包含一个已生成的惟一 batchID。此元数据对未来的解析、提取和分析步骤有所帮助。您可以通过模板使用相同设置反复运行 MDAGenerateMeta.sh。

下一节将讨论如何准备已知的日志类型以及一些不太为人所知的日志类型。


已知日志类型

要分析 Apache Web 访问、WebSphere、syslog、IBM Datapower 或任何字符分隔的文件,只需在准备步骤中使用相应的日志类型即可,如表 1 所示。

表 1. 开箱即用地支持的已知日志类型
日志类型要在准备过程中使用的 LogType 值
Apache Web 访问webaccess
WebSpherewas
Syslogsyslog
Datapowerdatapower
任何字符分隔的文件csv
其他任何日志类型generic

要提取已知日志类型的有趣字段,有多个开箱即用的规则可供使用。在需要提取更多字段时,始终可以进行自定义。基于应用服务器的日志可包含来自自定义应用程序的日志条目。因为应用程序开发人员可自由编写他们的条目,所以可能需要一定的自定义水平才能获得特定的提取信息。另一个示例是不同的日志类型特点和版本导致日志内容变化。这些可能需要较少量的自定义。

始终可以使用已知类型开始第一轮分析。尽力猜测日志类型。始终可以在以后纠正它!在本节中,您将看到 Sample Outdoors 公司如何使用 Web 访问和 WebSphere 日志类型。首先,让我们使用 Web 访问日志类型。

来自虚构公司 Sample Outdoors 的客户前端应用程序的一个 Web 访问日志包含如清单 1 所示的数据。

清单 1. apache Web 访问日志的样例
|--------10--------20--------30--------40--------50--------60--------70--------80--------|
9.17.247.205 - - [14/Jul/2012:15:58:12 +0000] "GET /Sample Outdoors/us/customers.shtml
HTTP/1.1" 200 48490 "http://www.Sample Outdoors.com/Sample Outdoors/us/customer-info.html"
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR
2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Tablet
PC 2.0)"8105 
9.17.247.205 - - [14/Jul/2012:15:58:21 +0000] "POST http://Sample Outdoors/us/customers-
order.php HTTP/1.1" 500 834 "http://www.Sample Outdoors.com/?p=732" "Mozilla/4.0
(compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 
3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Tablet PC 2.0)"1250

如果检查清单 1 中的日志数据,您会注意到这样一种模式,该模式中包含一个 IP 地址,后跟一些字符和一个时间戳,然后是记录的剩余部分。识别此模式有助于发现记录在此日志数据中的形成方式,进而识别主要时间戳。它是主要时间戳是因为日志记录可能在消息中还有其他时间戳,但它们对识别记录边界无关紧要。

以下是要从日志中识别的一些重要内容。

  • 主要时间戳,定义每个记录的起点,具有以下形式:14/Jul/2012:15:58:12 +0000
  • 主要时间戳通常会在前面加上一个字符串,比如 9.17.247.205 - - [
  • 一个正则表达式(比如 "((\\n)|(\\r))+[^]]*\\[")可描述这些字符在记录边界上的反复出现。

以下这些重要内容未包含在日志内容中,但为 Sample Outdoors 应用程序所有者/数据科学家所知,而且可充实分析。

  • 应用程序名称:customerFrontEnd
  • 服务器名称:webserver1
  • 应用程序位于总类别 customerManagement 之下。

接下来,使用该信息并将它与数据批处理相关联。

清单 2 演示了如何使用 MDAGenerateMeta.sh 从收集的信息生成 metadata.json。

清单 2. 生成 customerFrontEnd 应用程序日志的元数据的脚本
[biadmin@server bin]$ <MDA_Install_Location>>/bin/MDAGenerateMeta.sh
path="/opt/ibm/accelerators/input_MDA" logType="webaccess"
dateTimeFormat="dd/MMM/yyyy:HH:mm:ss Z" servername="webserver1"
application="customerFrontEnd" category="customerManagement"
preTimestampRegex="((\\n)|(\\r))+[^]]*\\["

图 3 显示了将 metadata.json 与每个批处理或目录相关联的流程和它的结果内容。

图 3. 使用 MDAGenerateMeta.sh 实用程序将元数据与批处理相关联
使用 MDAGenerateMeta.sh 实用程序将元数据与批处理相关联

点击查看大图

图 3. 使用 MDAGenerateMeta.sh 实用程序将元数据与批处理相关联

使用 MDAGenerateMeta.sh 实用程序将元数据与批处理相关联

接下来将会使用 WebSphere 日志类型。

清单 3 显示了来自虚构公司 Sample Outdoors 的同一个后端应用程序的 WebSphere 应用程序日志。

清单 3. WebSphere 应用服务器日志的样例
|--------10--------20--------30--------40--------50--------60--------70--------80--------|
[Sat July 14 03:58:12:906 PM] 00000048 InternalOracl I   DSRA8205I: JDBC driver name  : 
Oracle JDBC driver
[Sat July 14 03:58:19:296 PM] 00000047 WSChannelFram A   CHFW0019I: The Transport Channel 
Service has started chain HttpsOutboundChain:service.Sample Outdoors.org
[Sat July 14 03:58:19:312 PM] 00000047 ExceptionUtil E   CNTR0020E: EJB threw an 
unexpected (non-declared) exception

以下是要从此日志识别的一些重要内容。

  • 主要时间戳,定义每个记录的起点,具有以下形式:Sat July 14 03:58:13 PM
  • 主要时间戳通常会在前面加上一个字符串 "["。一个正则表达式(比如 "((\\n)|(\\r))+\\[")可描述这些字符在记录边界上的反复出现。
  • 主要时间戳缺少一些值,即年份和时区。本文将提供要使用的首选的年份和时区值。

以下这些重要内容未包含在日志内容中,但为 Sample Outdoors 应用程序所有者/数据科学家所知,而且可充实分析。

  • 应用程序名称:customerApplication
  • 服务器名称:wasserver1
  • 应用程序位于总类别 customerManagement 之下。

对于任何其他日志类型,执行以下操作。

  • 简单地更改主要时间戳信息。
  • 挑选一个日志类型或使用 generic。
  • 更改为一个惟一 batchID(如果需要)。
  • 添加任何其他元数据(如果需要)。
  • 完成!

使用前面所述的 MDAGenerateMeta.sh 脚本,或者简单地复制并更改现有的 metadata.json 文件,为 WebSphere 创建一个 metadata.json 文件。用来与此日志相关联的结果 metadata.json 文件应该类似于清单 4。请注意,缺少的年份值(即 2012)和缺少的时区值(即 +0000)在 missingDateTimeDefaults 字段中提供。

清单 4. 为 customerApplication 生成的 metadata.json
{logType:"was", batchId:"batch_was", serverName:"wasserver1",
application:"customerApplication",
category:"customerManagement",dateTimeFormat:"EEE MMM dd h:mm:ss:SSS
a",preTimestampRegex:"((\\n)|(\\r))+\\[",missingDateTimeDefaults:[{"year": "2012"},
{"timezone": "+0000"}]}

未知日志类型

如果 Sample Outdoors 后端应用程序的应用服务器是 Weblogic(或任何其他应用服务器),而不是 IBM WebSphere,那么该怎么办?应用程序堆栈的所有其他层该如何处理?

当然,存在的日志类型比加速器所提供的日志类型多得多。无论数据是结构化、半结构化还是非结构化数据,只要它是基于时序的文本数据,就可将它用于分析。您可以通过前面所述的方法准备这些日志的批处理。创建类似数据的批处理并使用 generic 日志类型关联元数据。

generic 日志类型的常用规则

  • 时间戳
  • 名称值对
  • XML 叶和标记值
  • IPAddress
  • URL 和 URI
  • 严重性
  • 等等!

日志可能包含一些通用字段和一些特定于日志类型的字段。有许多场景的分析可能不需要这些特定的字段,许多场景没有包含任何这些字段。可以开箱即用地使用提取日志中常见的有趣字段的一些规则。

许多日志包含名称值对形式的大量信息。其他日志包含 XML(叶和标记)形式的大量信息,这些信息将通过一组通用的规则提取。在提取更多的字段时,始终可以进行自定义。本系列的第 2 部分将提供一个实用教程来深入介绍自定义。

清单 5 显示了来自 Sample Outdoors 数据库应用程序的一个 Oracle 数据库日志的示例。

清单 5. customerDbApp 的 Oracle 数据库日志
<msg time='2012-07-14T10:58:16.723-0500' org_id='oracle' comp_id='rdbms'
type='UNKNOWN' level='16' version='1'>
<txt>*******************************************************</txt>
</msg>
<msg time='2012-07-14T10:58:18.723-0500' org_id='oracle' comp_id='rdbms'
type='UNKNOWN' level='16'>
<txt>Fatal NI connect error 12170</txt>
</msg>

以下是将从此日志识别的一些重要内容。

  • 主要时间戳,定义每个记录的起点,具有以下形式:2012-07-14T10:58:16.723-0500
  • 主要时间戳通常会在前面加上一个字符串 "<msg time='"。一个正则表达式(比如 "((\\n)|(\\r))+&ltmsg time=\\'")可描述这些字符在记录边界上的反复出现。

以下这些重要内容未包含在日志内容中,但为 Sample Outdoors 应用程序所有者/数据科学家所知,而且可充实分析。

  • 应用程序名称:customerDbApp
  • 服务器名称:dbserver1
  • 应用程序位于总类别 customerManagement 之下。

清单 6 显示了 Oracle customerDbApp 的 metadata.json。

清单 6. metadata.json
{logType:"generic", batchId:"batch_oradb", serverName:"dbserver1",
application:"customerDbApp", category:"customerManagement",
dateTimeFormat:" yyyy-MM-dd'T'h:mm:ss.SSSZ", preTimestampRegex:"((\\n)|(\\r))+<msg 
time=\\'"}

来自这 3 个应用程序的日志批处理现在已可用于分析。


引入数据

机器数据位于生成它们的服务器之上。需要将它们复制到 Hadoop File System (HDFS) 中,以便进一步分析它们。

当拥有一些批处理时,始终可以使用 BigInsights 控制台中的工具或 Hadoop 复制命令将数据上传到 HDFS。当数据位于子目录中或需要一次处理多个批处理时,可考虑使用 Import 应用程序。

Import 应用程序

该加速器提供了一个 Import 应用程序,将以前准备好的日志批处理复制到 Hadoop 文件系统中。使用此应用程序,可以轻松地一次上传或替换一个或多个类似或不同日志类型的批处理,如图 4 所示。

图 4. 使用 Import 应用程序将数据导入 Hadoop 文件系统
使用 Import 应用程序将数据导入 Hadoop 文件系统

点击查看大图

图 4. 使用 Import 应用程序将数据导入 Hadoop 文件系统

使用 Import 应用程序将数据导入 Hadoop 文件系统

应用程序 - Import:使用的 BigInsights 技术

  • 分布式复制应用程序
  • 日志可使用 ftp/sftp 从一个远程机器或 hdfs 中的另一个位置复制。

有时会导入截断的数据或包含隐私信息的数据,这些数据在分析之前需要替换。要替换以前导入的批处理,只需使用要替换的 batchID 将新内容导入元数据中。要添加一个新批处理,需要确保提供了一个新的惟一 batchID。在准备步骤中使用 MDAGenerateMeta.sh 实用程序可保证这一点。如果您的数据位于子目录中,应用程序会将它们扁平化到各个批处理中。


从文本提取信息

准备的文本数据批处理现在可用于提取信息。

Extraction 应用程序

该加速器提供了一个 Extraction 应用程序来获取以前准备好的日志批处理,并从每个批处理中提取信息。除了每个批处理的元数据,Extraction 应用程序还可获取其他常应用于多个批处理的配置。就像 Import 应用程序一样,Extraction 应用程序可一次处理一个或多个批处理。新批处理可增量添加,只需在元数据中提供您希望添加的批处理的新 batchID。要替换以前提取的批处理,可在元数据中提供一个与要替换的 batchID 匹配的现有 batchID。Extraction 应用程序准备数据用于跨日志分析并执行此过程中的一些步骤。=

应用程序 - Extraction:使用的 BigInsights 技术

  • 文本分析
  • JAQL – 一种 JSON 查询语言

Extraction 应用程序修复所有时间戳

当任何信息缺少日志时,Extraction 应用程序会将时间戳与 metadata.json 中提供的默认值结合在一起。为了减少日志的大小,通常会从日志中省略一些常见信息。时间戳中的一些字段(比如时区或年份)是常见的候选省略字段。

例如,请参阅 清单 4 中所示的 CustomerApplication WebSphere 日志。

Extraction 应用程序还将所有时间戳规范化为一种格式。3 个 Sample Outdoors 日志中的主要时间戳格式各不相同。它们都需要使用一种语言交流,才能一起分析日志。考虑到机器数据的多样性,这成为了任何进一步分析的一个关键步骤。

Extraction 应用程序充实了所有记录

在此步骤中,应用程序所有者/数据科学家在元数据中提供的信息将会与每条记录相关联。这会使用元数据信息以及从日志提取的字段为跨日志分析准备好数据。

Extraction 应用程序为更有趣的分析准备数据

目前为止,我们介绍了原始事件或日志中的记录。您可以有选择地屏蔽某些字段,在记录中添加事件的简化版本。

提取技巧

  • 从小数据集开始。
  • 浏览并验证提取的信息。
  • 在批处理级别上迭代式地更改 metadata.json 或根据需要更改 extract.config。
  • 将结果元数据和配置用于更大的数据。

Extraction 应用程序生成示例结果,供用户在表格中查看

如图 5 所示,可检查 CSV 输出中的每一列,了解提取的字段并验证生成的结果。请注意,一些列可能是空的,因为机器数据是半结构化或非结构化的信息。在这些情况下,可能需要对表格执行更多的过滤来查看非空值。Extraction 为剩余分析准备好数据。始终可以将完整的结果导出为 CSV,并在表格中执行进一步的临时分析。

图 5. 使用 Extraction 应用程序提取信息
使用 Extraction 应用程序提取信息

点击查看大图

图 5. 使用 Extraction 应用程序提取信息

使用 Extraction 应用程序提取信息

缩小、下钻和确认

下一个索引步骤处理提取的信息并为搜索做好准备。

Index 应用程序

Index 应用程序处理以前提取的数据批处理。就像 Import 和 Extraction 应用程序一样,Index 应用程序可一次处理一个或多个批处理。新批处理可增量添加。在运行该应用程序之前请选择 Re-index 复选框,以便删除之前创建的索引并创建一个新索引。

应用程序 – Indexing:使用的 BigInsights 技术

  • BigIndex
  • JAQL – 一种 JSON 查询语言

在 HDFS 中创建索引后,可定期将它复制到 BigInsights 控制台机器并使它可用于搜索。

CopyIndex.sh 实用程序

使用加速器安装目录中的 bin 文件夹中的 CopyIndex.sh 实用程序定期将索引复制到控制台机器。使用 copyIndex.sh 实用程序的一个示例如清单 7 所示。

清单 7. copyIndex 实用程序
[biadmin@server bin]$ <MDA_Install_Location>/bin/copyIndex.sh -
hdfsIndexDir=hdfs://<server>:9000/<output_location_from_app>
copying indexes from hdfs..
Indexes successfully copied to local file system
MDA UI can be accessed at for secure install 'http://<hostname>:8080/datasearch/login.jsp'
MDA UI can be accessed at for non-secure install
'http://<hostname>:8080/datasearch/html/Search.html'.

得到的已建立索引的批处理现在可使用合适的 URL 来进行搜索,如清单 7 所示。

搜索用户界面提供了以下功能。

跨所有日志的所有信息的统一视图

现在可查看某个时间范围的所有数据,可通过门面 (facet) 或文本搜索将这些数据用于搜索。从所有批处理中提取的所有字段都可用于搜索。用于充实事件的所有元数据字段都可以门面的形式提供。

在为新批处理建立索引时,index.config 文件会使用门面类别进行更新。通过配置此文件,可以控制要在搜索界面中显示/隐藏/重命名的门面,甚至是从索引删除它们,如图 6 所示。

图 6. 运行 Index 应用程序,为搜索准备好数据
运行 Index 应用程序,为搜索准备好数据

点击查看大图

图 6. 运行 Index 应用程序,为搜索准备好数据

运行 Index 应用程序,为搜索准备好数据

缩小

可将大数据结果缩小 到某个时间范围或某个感兴趣的事件,从而获得一组有意义的数据。可以使用时间范围搜索或文本搜索来完成这项任务。

下钻

然后可下钻 到门面值,以查找您要寻找的事件。应用程序所有者添加的所有元数据(应用程序名称、类别和服务器名称)也可用作门面。

确认

结合使用缩小和下钻,您可以查找所报告的问题并通过来自机器数据的证据确认它们,从而对它们进行备份。

Sample Outdoors 数据科学家能够在 7 月 14 日(星期六)下午确认错误,如图 7 所示。

图 7. 缩小时间范围,下钻以查找错误
使用时间范围缩小,下钻以查找错误

点击查看大图

图 7. 缩小时间范围,下钻以查找错误

使用时间范围缩小,下钻以查找错误
  • 它们能够将时间缩小到 7 月 14 日的下午 3 点到 4 点之间。
  • 然后它们能够下钻到表示状态代码的门面,确认来自 customerFrontEndApp 的 Web 访问日志中的某个错误 500。
  • 是否在过去发生过类似故障?Sample Outdoors 数据科学家缩小时间范围,注意到过去发生了大量前端错误。

接下来,数据科学家可能希望更多地了解导致特定错误的事件。


使用搜索按时间顺序进行根源分析

使用搜索用户界面,您现在可按时间顺序查看所有日志中的事件,获取错误根源的更多洞察,如图 8 所示。

图 8. 跨日志按时间顺序分析根源
该图显示了跨日志按时间顺序的根源分析

点击查看大图

图 8. 跨日志按时间顺序分析根源

该图显示了跨日志按时间顺序的根源分析

Sample Outdoors 数据科学家能够在 7 月 14 日下午确认错误,获得以下信息。

  • 所有日志的统一视图表明,在 Web 访问应用程序中发生错误之前,WebSphere 应用程序中出现过错误,而在这之前 Oracle 数据库应用程序中出现了一个错误。
  • 一个简单的事件顺序表明,在这种情况下,后端数据库中的一个错误导致了该错误。
  • 它们还注意到启动时的一些问题,希望通过更深入的分析了解这些问题可能存在的任何关联。参见图 8 中所示的第一个事件,并参阅 WebSphere 上的 WSVR0002I 所表示的消息。您可在深入分析中查找此错误,以及该错误与 Web 访问日志中的错误的关系。

联系合适的应用程序所有者,调查 7 月 14 日的具体问题。接下来,数据科学家需要了解其应用程序中的这类故障的根源,以减少未来的中断。


准备深入分析

单单日志记录或事件可能并未包含有关错误根源的足够信息。将它们与其他相关事件相结合,就可以进行更深入的分析。

该加速器提供了两个应用程序来创建相关事件或会话分组。

TimeWindow 应用程序

您可以使用一个日志类型构建会话,根据时间间断或时窗来组合事件。

应用程序 – TimeWindow App 和 JoinTransformation App:使用的 BigInsights 技术

  • JAQL – 一种 JSON 查询语言

对可能显示一个活动中的间断的日志使用 timegapTransformation.config 文件中的时间间断设置。典型的示例包括 Web 访问日志,它们会采集一段时间的用户活动,然后是活动中的间断。您可以使用 TimeWindow 应用程序的时窗特征,为拥有另一个持续的活动流的日志而创建会话。

JoinTransform 应用程序

构建会话可将两种不同的日志类型组合在一起,包括使用 JoinTransformation 将应用程序架构的相关层相组合。

转换技巧

  • 从小数据集入手。
  • 更改 timegap.config 或 joinTransformation.config 以构建相关的会话。
  • 将与该数据相关的配置和用例用于大数据。

也可以使用 JoinTransformation 应用程序从单一日志类型构建会话。

在这两个应用程序中,配置可控制转换。您可以调整配置,使分析对您的数据和用例更有意义。通过配置文件,可以将从日志中提取或通过元数据充实的所有字段都用于转换。您可以将来自结果会话的一个抽样导出到一个 CSV 文件中,以便将其可视化,配置中也提供了该设置。

使用 JoinTransformation 配置

Sample Outdoors 数据科学家希望跨 Web 应用程序层和 WebSphere 应用程序层进行分析。他们希望在 Web 访问层中出现错误时识别 WebSphere 应用程序中的模式。他们还希望了解在某个时窗内在 WebSphere 应用程序层发生的哪些事件对 Web 访问层中的错误是否具有重大影响。

他们使用如 清单 7图 5 所示的 JoinTransformation 配置。该配置允许他们执行以下任务,如清单 8 所示。

清单 8. JoinTransform 配置和查找表
[
{
"seed_log_type": "webaccess",
"content_log_type": "was",
"device_id_field_names_seed": "category",
"device_id_field_names_content": "category",
"lookup_table_dir": 
"/_default_match_all_join_metadata_table",
"message_type_field_name_seed": "CodesAndValues",
"match_type_seed": "Prefix",
"match_type_content": "Prefix",
"message_type_field_name_content": "MethodidWS",
}
]
                
Lookup table
fact_field,context_field,time_window
3,"", 20000
4,"", 20000
5,"", 20000

将 Web 访问日志与 WebSphere 日志相连接。

  • 种子日志类型 – webaccess
  • 内容日志类型 – was

为每个日志提供连接关键字。他们使用前面添加为元数据的类别字段。

  • Device_id_field_names_seed – 类别
  • Device_id_field_names_content – 类别

将连接过滤到仅包含 webaccess 日志中的错误。他们通过在 CodesAndValues 字段的值上指定过滤器来完成此操作,该字段表示 http 状态代码。

  • Message_type_field_name_seed – CodesAndValues。
  • Match_type_seed – Prefix。
  • 使用一个查找表过滤要包含在连接中的 CodesAndValues 值。包含以 3、4 或 5 开头的值。请注意,前缀的类型允许使用这种匹配。
  • 指定要查看的时窗:查找表 time_window – 20000 (ms)。

他们希望查找消息中的模式,并使用了一个表示消息 ID 的字段。

  • Message_type_field_name_content – MethodidWS

图 9 显示了准备用于分析的连接日志。

图 9. 连接日志
图 9 显示了准备用于分析的连接日志。

点击查看大图

图 9. 连接日志

图 9 显示了准备用于分析的连接日志。

接下来,Sample Outdoors 数据科学家准备开始更深入的分析。


识别模式

常常需要识别围绕一个特定事件或错误发生的事件。

Frequent Sequence Analysis 应用程序

该加速器提供了一个 Frequent Sequence Analysis 应用程序,它处理以前准备的会话,提供各个会话中最常见的事件顺序的洞察。

应用程序 - Frequent Sequence Analysis 应用程序:使用的 BigInsights 技术

  • 系统 ML
  • JAQL – 一种 JSON 查询语言

跟以前一样,配置可控制分析。您可调整配置,使其对您的数据和用例更有意义。

任何也包含在会话中的提取的字段都可用于 Frequent Sequence Analysis。结果的格式为 CSV。您可在表格中使用过滤,以查找包含感兴趣的值的模式。结果以一个图表的形式提供,可在一个仪表板中看到。

数据科学家使用 清单 8 中所示的 FrequentSequence 分析配置,这使他们能够查找 messagesID 的模式(由字段 methodidWS 表示),如清单 9 所示。

清单 9. Frequent Sequence Analysis 配置
"eventField": "MethodidWS"

Sample Outdoors 数据科学家能够使用 Frequent Sequence Analysis 仪表板注意到一种事件模式,如图 10 所示。

图 10. 在 Web 访问日志中出现错误之前,WebSphere 日志中常发生的事件顺序
在 Web 访问日志中出现错误之前,WebSphere 日志中常发生的事件顺序

点击查看大图

图 10. 在 Web 访问日志中出现错误之前,WebSphere 日志中常发生的事件顺序

在 Web 访问日志中出现错误之前,WebSphere 日志中常发生的事件顺序

再次查看 图 8 中第一个事件,它引用了 WebSphere 上的 messageID WSVR0002I。可在深入分析期间查找此错误,以及它与 Web 访问日志中的 500 错误之间的关系。

Sample Outdoors 科学家能够确认他们在时间顺序根源分析体验中观察到的潜在关联。

他们现在还可从根源分析角度理解其他经常出现的模式。


了解影响

您通常还需要了解影响错误根源的事件。

Significance Analysis 应用程序

该加速器提供了一个 Significance Analysis 应用程序,它处理以前准备的会话,提供影响其他事件的事件的洞察。可以过滤结果以识别对一个特定错误的影响。

应用程序 – Significant Analysis 应用程序:使用的 BigInsights 技术

  • 机器学习
  • JAQL

请注意,只有来自 JoinTransformation 应用程序的会话可参与重要性分析。

类似于 Frequent Sequence Analysis 应用程序,可以通过配置来控制分析,您可调整配置,使分析对您的数据和用例更有意义。

以下是一些有关术语的说明。

  • 来自会话的种子部分的任何字段都可用作标签。
  • 来自会话的内容部分的任何字段都可用作影响标签的功能。
  • 请参见 图 5,查看在使用 JoinTransformation 应用程序构建会话时的种子和内容字段示例。
  • 结果以 CSV 格式提供。可在表格中使用过滤来查找某个特定值的影响者。

Sample Outdoors 的数据科学家现在使用生成的会话,理解 WebSphere 应用程序层中的哪些事件对 Web 访问层中的错误具有重大影响。

他们提供了 清单 8 中列出的重要性分析配置。他们从会话的种子部分挑选 CodesAndValues 作为标签字段,挑选会话的内容部分中的 MethodidWS 作为功能,如清单 10 所示。

清单 10. 重要性分析配置
[
{
"label_field": "CodesAndValues",
"features": "MethodidWS"
}
]

图 11 显示了使用清单 10 中所示的配置的重要性分析的结果。

图 11. 影响 Web 访问层中的错误的 WebSphere 错误的总体视图
影响 Web 访问层中的错误的 WebSphere 错误的总体视图

Sample Outdoors 公司的数据科学家确定,WebSphere 中的以下错误对 Web 访问层中的错误的根源具有最大影响,影响的大小顺序如下。

  • CNTR0020E EJB 在调用方法期间抛出一个意外的异常。
  • WSVR0002I Server 在启动期间出现了电子商务问题。

在 Frequent Sequence Analysis 中,他们还确定 WSVR0002I 常常发生在 CNTR0020E 之前。可以使用 图 10 作为一个示例。

继续使用这些洞察,他们能够在更深的应用程序堆栈级别上执行进一步分析。


加速解决方案的实现

该加速器还发布了一些连锁应用程序,可潜在地加速完成更常见的任务组合。这些连锁应用程序包括:

  1. Import-Extraction
  2. TimeWindow Transformation-Frequent Sequence Analysis
  3. JoinTransformation- Significance Analysis

确定要执行的分析后,就可以构建您自己的连锁来简化执行。

在 Sample Outdoors 公司中,除了使用连锁,还构建了新应用程序来执行 JoinTransformation – FrequentSequence Analysis。可继续对应用程序堆栈的其他层执行更深入的分析,以便将 WebSphere 应用程序链接到后端 Oracle 数据库应用程序。


结束语

借助虚构的 Sample Outdoors 公司的情景,我们分析了 IBM Accelerator for Machine Data Analytics 如何加速一个解决方案在各种日志上的实现。我们还了解了如何使用随加速器发布的各种应用程序来单独完成这项任务。


关于本文章系列

IBM Accelerator for Machine Data Analytics 的一个主要优势是能够轻松地配置和自定义各种工具。这个 文章 系列适用于希望了解该加速器,为获得自定义洞察而进一步加速机器数据的读者。


致谢

感谢 Tom Chen 对本文的技术评审。

参考资料

学习

获得产品和技术

  • 使用 IBM 试用版软件 构建您的下一个开发项目,这些软件可直接从 developerWorks 下载。
  • 以最适合您的方式 评估 IBM 产品:下载产品试用版,在线试用产品,在云环境中使用产品,或者在 SOA 沙盒 中花几小时学习如何高效地实现面向服务的架构。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=932612
ArticleTitle=IBM Accelerator for Machine Data Analytics,第 1 部分: 加速机器数据分析
publish-date=06042013