最后更新于2017年12月13日星期三格林尼治时间09:35:00

系统监控和故障排除 会是一项耗时又令人沮丧的活动吗. 对于It人员来说,如果有更好的故障排除工具和流程,10分钟就可以解决的问题,花费数小时寻找和修复问题并不罕见.

改进IT故障排除和监视并不需要是一项昂贵的工作. 很多时候,这只是在全公司范围内执行一些指导方针的问题. 让我们看一下可以减少故障排除时间的六个最佳实践, 更有效的承诺.

1. 收集足够的信息来重现问题

如果你不能复制一个问题,你就不能解决它. 然而,很多服务台的求助单上都写着“我无法登录”这样模糊的描述.其结果是分配给该问题的IT管理员和报告该问题的员工之间持续进行电子邮件交换. 寻找更多信息的过程可能会持续数天. Those days cost money.

手头的问题通常是系统行为. 补救措施是确保在初始票据中提供了足够的信息来复制问题. 一些IT团队通过提供“修复票据”表单来强制执行可接受的报告行为,该表单有一个字段,要求提交者列出重现给定问题的步骤. In addition, 许多IT团队都有简单的程序来教育各方如何编写有效的罚单,并监控行为,以确定新的, 期望的行为被采纳. 如果这种行为持续下去,应该给予更直接的个人干预吗. Regardless of remedy, 几乎所有有效的IT团队都设置了一个基线期望,要求提交者从一开始就提供足够的复制描述.

2. 自定义日志以获得可操作的见解

就像一张不完整的服务台票会延长解决问题的时间一样, 发出不完整信息的日志也会妨碍故障排除工作. 大多数日志框架都提供了自定义日志输出格式的选项. 重要的是要确保所有日志格式都提供了记录的项目和事件的清晰描述. 除了日期和时间, 日志条目应该定义发出该条目的源(例如, MAC or IP address), 以及描述日志条目意图的消息字段. 的数据字段 structured format 描述与所记录的项目或事件相关的详细信息也很有用. 了解用于系统故障排除的日志分析的更多信息.

3. 在源代码级别创建有用的错误输出

请考虑发送到日志采集器的错误信息:
28 Nov 2017 15:49:08.871 err遇到错误号码

错误消息告诉你什么? 不过是遇到了一个坏号码. 您不知道坏号码是什么,为什么是错误,或者如何解决这个问题. To remediate this, 有人将不得不花费大量的时间来发现问题的根源, 而且这些支出还不包括修复它所需的时间.

现在考虑日志中描述的这个错误:

  "numValue": 3727
  "source": "at _.次(/ home /应用程序/ seventips /图书馆/面食者.js:25:42)",
  "message": "遇到错误号码. 提交的号码9429是奇数. 系统不接受奇数. 请提交一个偶数”,
  "level": "err"
}

这是一个很大的区别. 上面的错误消息包含足够的信息,允许IT管理员对问题的原因和来源做出明智的猜测, 然后开始故障排除.
一条有用的错误信息包含三条信息:错误的描述, the probable cause and, if possible, the most likely solution.

确保记录有用的错误消息是关于改变IT组织的行为. 建立遵从性策略,然后提供必要的过程和工具来支持该策略,这取决于管理层. Thus, IT管理员可以很好地定义有用的错误消息的格式,然后让一组高级开发人员查找或构建一个代码库,使开发人员能够轻松地创建支持该格式的错误消息. 调整应该要求开发人员添加不超过一行或两行代码来遵守策略.

4. 不要把症状误认为是根本原因

让一个问题消失和找到根本原因并解决它是不一样的. 有效故障排除的诀窍是确定并详细报告根本原因,这样问题就不会再次出现. 如果你时间紧迫,只能在截止日期前让症状消失, 确保报告没有确定根本原因,并且修复是临时的.

5. 实现一个全面的日志基础设施并使用相关id

从网页到后端服务器的调用只是分布式环境中应用程序行为的一个方面. 对后端的调用可能会将数据发送到消息代理, a database, 或其他基于web的API. 因此,操作数据将显示在日志中,远远超出web服务器. 说到解决问题的时间, 您需要一种方法来跟踪从请求到事务中所有点的整个过程中的数据聚合和转换.

把所有电话联系在一起最简单的方法是 使用并尊重相关id. 关联ID是一个唯一标识符,在事务中的所有点之间传递数据. 关联ID允许在各种日志中跟踪事务. 这是一种常用的技术,通常通过使用header属性来支持, X-Correlation-ID. (Figure 2)

图2:使用关联ID对分布式事务进行故障排除

使用Correlation ID将为您节省大量在不同系统之间进行故障排除的时间.

6. 使用系统监视器和预测分析

如今,系统监视器所做的不仅仅是收集数据和存储数据. 现代系统监视器具有监视其运行的系统的智能. Also, 系统监视器可以将一台机器发出的所有日志信息聚合到一个输出中. For example, InsightOps 从Rapid7将不仅 集中所有的日志记录活动, it will also monitor CPU, memory, 以及端点上的磁盘使用情况,并发送已知问题或关键事件的实时警报.

系统监视器对于进行高级故障排除至关重要, 特别是对于与机器状态相关的问题. Also, 使用预测分析工具监视系统活动中的危险趋势,将帮助您在问题变得严重之前解决较小的问题. 最有效的故障排除是根本不进行故障排除!

Putting It All Together

在当今的现代IT环境中,故障排除是不可避免的. 这是修正过程中一个重要的组成部分 continuous improvement. 使用上面描述的六个最佳实践将使您的故障排除工作更有效,成本更低. 事实上,它们甚至可能使故障排除变得更加愉快. 而且,正如知情的公司所理解的那样,当工作是愉快的,质量是卓越的.