使用 Log Analyzer 和 Symptom Editor 实现自动化的日志分析

转自http://www.ibm.com/developerworks/cn/websphere/library/techarticles/1006_suipf_loganalyze/1006_suipf_loganalyze.html

引言

日志文件是故障诊断过程中最重要的数据文件之一,它记录了系统运行过程中所发生的重要事件,其特点是简单、直观、易于查看。通常我们只需要文本编辑器就可以找到我们所需要的信息。但是随着系统结构的日益复杂,日志文件中所记录的信息也急剧的膨胀,不同模块和线程所记录的信息往往交织在一起,给分析工作带来一定的麻烦。现在越来越多的人使用 Log Analyzer 分析日志文件,其中一个重要原因就是它可以帮我们自动处理日志文件中庞杂的数据信息,从中找出比较明显的症状,甚至给出解决问题的建议和方法。在这一过程中,Symptom Editor 起了很重要的作用,有了 Symptom Editor 的加入, Log Analyzer 才能获得不断增强的分析能力。因此本文将着重介绍 Log Analyzer 和 Symptom Editor 的结合使用。


Log Analyzer 和 Symptom Editor 的关系

《权威支持 使用Log Analyzer进行第1阶段问题确定》 一文给大家介绍了 Log Analyzer 概念和主要功能,本文将在这篇文章的基础上进一步向大家展示 Log Analyzer 在日志分析方面的强大功能,并且结合 Symptom Editor 实现日志的自动化分析。

日志文件分析

Log Analyzer 是一套具有图形用户界面并提供用于浏览、分析和关联多个产品产生的日志分析工具。 Log Analyzer 对日志的分析包含两个方面,首先是对文件内容的重新组织与展示,包括对信息的筛选,分类和关联。比如我们如果只关心日志文件中的错误信息,那么我们就可以将所有的错误信息导出到一个单独的报告文件中;如果我们只关心某一线程输出的信息,那么就可以过滤掉其它与之无关的线程信息;或者还可以将多个互相关联的日志文件按照一定的逻辑顺序重新组合到一起等等。这些都是 Log Analyzer 的基本功能,不在本文的讨论范围之内。本文所讨论的是第二种分析方法,即基于症状的分析,这里所说的症状是指日志文件中可以用于确定某一问题的日志消息的特征。比如消息 ID,消息来源,消息内容等。这些特征被存储在症状目录中。在分析日志文件的过程中,一旦发现与这些特征相符的问题, Log Analyzer 就会将这一问题报告给用户,并且允许用户查看与这一问题相关的更详细的信息或者推荐的解决方案。

Symptom Editor 的作用

IBM 还提供了配套的 Symptom Editor 工具帮助用户创建并维护症状目录。如果再次出现问题,症状目录会查找到相应的症状定义并给出此种症状的解决建议。症状目录中的信息通常是经验的积累,需要用户不断地对它进行丰富和完善。只有当症状目录的内容丰富起来,Log Analyzer 的分析功能才会变得越来越强大。下图展示了 Log Analyzer 和 Symptom Editor 之间的关系。


图 1. Log Analyzer 和 Symptom Editor 的关系
图 1. Log Analyzer 和 Symptom Editor 的关系

当导入日志后,Log analyzer 首先通过 Adapter 对日志文件进行解析,解析后的日志消息变成易于使用的结构化的数据存储于内存中。用户可以使用现有的症状目录对日志消息的内容进行分析,如果发现与某一问题相关的症状,则将其报告给用户,如果症状目录中不存在当前问题的症状,我们需要手工查看日志消息来诊断问题,一旦找到问题发生的原因,用户应该将新的症状添加到症状目录中,这样,如果将来再次出现类似的问题,我们就能够很快的定位到问题,而不需要花费大量的时间进行重复的分析了。


建立自己的症状目录

建立症状目录的好处显而易见,大多数情况,问题的解决都需要花费大量的时间和精力。而通过解决问题所获得的经验更是一笔宝贵的财富,将这些财富积累下来,在一定范围内共享是我们要建立症状目录的主要目的。

下面,我们通过一个简单的实例来展示症状目录的建立和使用方法,在下面的这个例子中,我们的应用试图访问一个并不存在的 JDBC 数据源,系统会在日志文件中产生一条错误信息。我们将利用 Log Analyzer 分析此日志文件,并利用 Symptom Editor 创建一个新的症状目录,如果下次类似的问题再次发生,我们就可以利用这个症状目录帮我们进行分析了。

利用 Log Analyzer 解析日志

首先,打开 Log Analyzer,通过 File > Import Log > Import from the local system 菜单导入所生成的日志文件。本文的日志文件是通过本地文件系统导入的。找到指定日志文件,点击 Add 按钮将日志添加到文件列表中。此时,系统会自动识别日志文件的类型并选择相应的 adapter。最后,点击 Finish 按钮完成导入,如图 2 所示。


图 2. 导入日志文件
图 2. 导入日志文件

打开日志后,可以从 Log View 列表中查看日志信息。如果只想查看日志中的错误信息,可以使用 Log View 视图右上角的 Filters 功能进行过滤,也可以使用 Highlight Events 功能高亮显示错误信息(图 3)。

如果想获得更多信息,可以右键点击 Log View 中的日志文件(图 4),利用 Search Message Text in IBM Support Assistant 或者 Search Message ID in IBM Support Assistant 在 IBM Support Assistant 中查找关于此条日志的相关文档或者文章。


图 3. 利用 Filters 过滤日志事件
图 3. 利用 Filters 过滤日志事件

图 4. 查找与日志相关的信息
图 4. 查找与日志相关的信息

利用 Symptom Editor 建立症状目录

Symptom Editor 可以帮助 Log Analyzer 建立症状目录。如果没有可用的症状目录或者当前问题在症状目录中无法找到,可以在 Log Analyzer 的 Log View 中右键点击发生问题的消息条目,选择 New Symptom Definition 启动 Symptom Editor 创建症状目录。


图 5. 建立新的症状目录
图 5. 建立新的症状目录

此时,如果用于分析 WAS 日志的症状目录已经存在,用户可以选择在已存在的症状目录中添相应的症状信息,否则,需要首先建立一个新的症状目录,然后向这个症状目录中添加症状定义。在 New Symptom Definition 界面中可以定义症状的具体特征:

  • Rule list:判断症状的规则列表;
  • Rule type:定义规则的类型;
  • Description:编写症状的具体描述信息;
  • Conditions:可以定义每一条症状规则的具体判断条件。点击 Conditions 下方的 Add 按钮可以添加条件。每一个 Condition Group 中可以包含多个 Condition。每一个 Condition 是一条逻辑判断语句,可以用它判断日志中是否包含或者是否等于指定信息。同样,Condition Group 之间也可以通过 AND/OR 来进行与、或的判断;

图 6. 添加新症状定义
图 6. 添加新症状定义

点击 Next,在 Recommendation 文本框中可以为症状添加解决建议。在这里我们提示用户 JDBC 服务不可用,建议用户在 WebSphere 应用服务器的环境中,检查一下 JDBC 是否存在。点击 Finish 按钮,新的症状目录和症状定义就建立完成了。在 Symptom Catalog 中可以查看和修改症状定义。


图 7. 添加症状解决建议
图 7. 添加症状解决建议

利用 Symptom Editor 分析日志

建立完症状目录,就可以利用症状目录分析日志,查找解决建议。返回 Log Analyzer,右键左侧列表中的 Symptom Catalogs,点击 Import Symptom Catalog,选择刚才建立的症状目录。点击 Finish 按钮 (如图)确定导入。

在 Log View 中右键点击需要分析的日志,选择 Analyze Selection 分析指定日志。如果症状目录中存在符合条件的症状,就会在 Log View 下方的 Symptom Analysis Results 中显示症状。并可以通过选择 Symptom Analysis Results 右侧的 Recommendations and Actions 标签,查看解决建议。


图 8 导入症状目录
图 8 导入症状目录

图 9. 利用 Symptom Editor 分析日志
图 9. 利用 Symptom Editor 分析日志

以上我们通过实际案例演示了如何利用 Log Analyzer 和 Symptom Editor 解析日志、创建症状目录。当问题再次发生时,Log Analyzer 能够自动发现问题,并且给出预先设置的解决方案和建议,从而帮助用户快速地定位问题、解决问题。


结束语

随着应用系统规模的不断增大,会有越来越多的人需要通过自动化的工具分析日志文件。使用 Symptom Editor 配合 Log Analyzer 分析日志文件,可以帮我们自动处理日志文件中庞杂的数据信息,从中找出比较明显的症状,并且给出解决问题的建议和方法。

请使用浏览器的分享功能分享到微信等