企业运维排障最后一公里:日志体系建设

2024-07-29 18:06:16 浏览数 (2)

何为排障“最后一公里”

为什么说在企业运维排障中,日志体系建设通常被称为"最后一公里"?

这是因为日志是在系统出现问题时提供关键信息的重要数据来源。在排障过程中,日志记录了系统运行时的各种活动和事件,可以帮助运维人员追踪问题的根源。

“最后一公里”指的是在排障过程中,当其他排查方法都无法解决问题时,运维人员会转向日志来查找答案。日志记录了系统的运行状态、错误信息、异常情况等,通过分析日志可以帮助定位问题,找到解决方案。

举例来说,核心交付系统每天处理数百万笔交易。有一天,客户投诉称“一小部分交易失败,而且无法追踪失败原因”。工程师利用监控工具检测到一些异常指标,但这些指标无法提供问题的具体细节。通过对比成功和失败的交易日志,工程师发现交易失败的根本原因在于与第三方服务的通信故障。于是,工程师与第三方服务的支持团队联系,并共享了相关日志,成功解决了问题,恢复了交易正常运行,让相关的失败情况不再重复发生。

以上提到的只是一种故障场景,说明日志对于排障处理起到关键作用。日志数据记录了系统或程序在执行过程中每个事件的明细详情。通过收集日志数据,可以获得系统或程序发生故障时的现场快照,精确了解根本问题所在。如果在前期能够聚焦范围,锁定少量关键日志,那么大部分的故障根因问题就可以被快速确认。

因此,日志体系建设在企业运维中扮演着至关重要的角色,它不仅可以帮助提高故障排查的效率,还可以提升系统的稳定性和可靠性。所以,人们常说日志体系建设是企业运维排障中的“最后一公里”。

那为什么需要建设日志体系?其面临的挑战又是什么?我们应当如何建设日志体系呢?

为什么要建设日志工具

面向运维者

  • 主动发现:能精准从日志数据中捕捉异常并告警;
  • 辅助运维:通过日志了解到详细信息,以判断下一步运维操作;
  • 采集便捷:无侵入式采集,中心化采集,便于推广实施。

面向开发者

  • 快速查询:集中查询,跨应用查询,不需要来回切换机器;
  • 根因定位:能精准获取到日志的上下文做代码根因定位;
  • 辅助优化:从日志信息中获取有效信息,优化现有代码。

面向部门管理者

  • 建设:避免烟囱式建设运维工具,需要体系化打通数据和上下游;
  • 管理:日志数据权限管控,统一查看,统一存储和管理;
  • 规范:日志规范落地需要平台和工具的承载。

面向企业领导者

  • 竞争:通过完整的可观测体系让公司运营效率超过竞争对手;
  • 合规:让日志的记录符合政策法规,避免审计风险;
  • 安全:各类访问和操作日志数据是信息安全的重要信息来源。

日志体系建设所面临的挑战

  • 数据量大:运维系统产生的日志数据量通常很大,每天可能产生几十亿条、上百GB甚至TB级的日志数据,需要有效的存储和管理机制来处理这些海量数据。
  • 日志格式多样:不同的系统和应用程序可能会生成不同格式的日志,需要有效地从海量日志数据中提取有用信息和进行数据分析,并将非结构化数据转换成结构化数据。
  • 日志安全性:日志中可能包含敏感信息,需要确保日志的安全性,避免泄露敏感信息。
  • 监控和告警:建立有效的监控和告警机制,及时发现问题并采取措施是关键,但也是一个挑战。
  • 日志保留策略:制定合适的日志保留策略,既要满足合规要求,又要兼顾存储成本和性能。
  • 日志可视化:将日志数据可视化展示,便于运维人员快速了解系统状态和问题,但搭建可视化平台也是一个挑战,需要考虑到性能因素。
  • 日志采集和传输:确保日志的完整性和及时性,需要建立高效的日志采集和传输机制。

故日志体系建设所面临的挑战需要综合考虑技术、安全、隐私、性能等多方面因素,只有解决上述问题才能建立起一个完善的运维日志体系。

日志建设实践引导

日志数据标准化,确保规范

定义日志规范

  • 确定日志格式:定义日志记录的格式,包括字段、分隔符和结构。可以选择使用通用的格式(如JSON)或自定义格式。
  • 确定关键字段:识别和定义需要记录的关键字段,如时间戳、事件类型、请求URL、用户ID等。确保关键字段的准确性和一致性。
  • 定义日志级别:确定日志的级别,如调试、信息、警告和错误。根据实际需求选择适当的级别。

记录关键信息

  • 时间戳:确保每条日志记录都包含准确的时间戳信息,以便进行时间相关的分析和调查。
  • 事件类型:明确记录每个日志事件的类型,以便在后续的分析和查询中能够准确识别和过滤。
  • 请求信息:对于涉及网络请求的日志,记录关键的请求信息,如请求URL、请求方法、请求参数等。这有助于跟踪和分析请求流程和性能。
  • 异常信息:在错误和异常情况下,记录详细的异常信息,包括异常类型、堆栈跟踪、错误码等,以便进行故障排查和错误分析。

支持开源协议

顺应业界主流趋势,开源社区(OT)已经在很早期就开始设计可观测数据之间的关联关系,且在最新的OpenTelemetry规范中,制定了日志数据的规范。

  • 方便拓展对接:支持开源协议,可以与自己早期使用的开源工具或者组件相互对接,兼容存量系统。
  • 生态长存:采集和处理工具千千万,唯开源生态长存,可拓展和替换是企业建设工具时必须考虑的因素。

实践建议

  • 避免冗余信息:避免在日志中记录重复或冗余的信息。只记录必要的、关键的信息,以减少日志量和存储开销。
  • 敏感信息保护:注意保护日志中可能包含的敏感信息,如用户密码、个人身份信息等。采用适当的脱敏措施,确保敏感信息不会泄露。
  • 日志注释和上下文:在关键的日志记录中,添加注释和上下文信息,以便更好地理解日志的背景和意义。这有助于后续的分析和调查工作。

遵循日志规范准确记录关键信息是建设稳健可靠的日志系统的关键所在。定义规范、记录关键信息、并遵循最佳实践可以更好地利用日志数据进行故障排查、性能优化和安全审计等工作。这些步骤旨在确保日志信息经过明确、准确和一致的格式,从而更好地满足业务需求。

日志数据精炼,优化清洗

日志数据是文本数据,难以读懂,更难以通过统计分析赋能运维、运营、业务人员。因此,构建日志体系时需要考虑工具是否具备强大的日志清洗能力,支持将各类格式的日志进行结构化解析,从而可以基于结构化数据构建资源监控、业务监控、业务分析等场景。

除了强大的日志清洗能力外,预置固定清洗模板也十分重要,不仅可以提升日志清洗的效率,还可以助力企业日志标准化建设,有利于减轻落地推广的难度。

日志数据安全保护,数据脱敏

日志数据作为系统运行和活动的记录,可能包含敏感信息,如个人身份信息、密码、信用卡号等。这些敏感数据如果在日志中以明文形式存在,可能会造成严重的安全风险,如数据泄露、隐私侵犯等问题。因此,对日志数据进行脱敏处理是必要的。

通过数据脱敏,可以有效保护敏感信息的安全性,避免泄露风险。脱敏技术可以将敏感数据转换为无意义的、难以识别的数据,保留数据的结构和格式,同时隐藏真实内容。这样既能保护用户隐私,又能确保数据的完整性和可用性,同时遵守相关的隐私法规和合规要求。

持久存储,日志长周期保留策略

为了满足合规性、监管要求、故障排查、趋势分析和历史记录等目的,某些日志数据需要被长期保留,但长期存储会面临存储成本和维护成本过高的问题。我们可以通过以下的思路来制定日志长周期存储策略。

合理选择存储介质

  • 将高频查看且较新的日志存储在Elasticsearch或其他闪存设备上,这样可以方便搜索和分析。
  • 将低频查看但需要合规审计的日志存储在较便宜和容量较大的大数据存储设备上,如HDFS等,以降低存储和维护成本。

数据备份及可恢复

对于两种不同的存储介质,应具备数据自动迁移/备份的能力。不再需要频繁查看的日志数据可以平滑地迁移至容量更大的存储设备上。如果审计部门或工程师需要查看历史久远的日志数据,可以通过简单的界面化操作快速将日志数据重新载入到Elasticsearch或闪存设备上进行查询和分析。

数据压缩

为了节省存储空间,对长期存储的日志数据进行压缩也是十分必要的。我们需要选择适当的压缩算法和压缩比例,以平衡存储成本和数据访问的效率。

实施这些策略后,企业能够更好地维护日志长周期存储,节省存储成本和维护成本,并使存储数据更加高效、安全、规范化。

日志检索,提升运维效能

日志检索在日志体系建设中扮演着关键的角色,其目标是为用户提供一种快速定位系统问题和异常的能力,以便加速故障排查和问题诊断的过程。为实现这一目标,日志检索需要具备基础的查询语法,允许用户根据关键词、时间范围等条件来检索日志数据,以快速定位所需信息。在日志检索过程中,用户还可以使用通配符等高级查询语法,以更精准地过滤和搜索日志数据。同时考虑到一些安全合规,日志检索还需具备脱敏检索功能,可以在保障数据隐私的前提下,依然能够有效地进行日志检索和分析。

另外,日志检索还应具备用户友好的查询界面和交互体验,使用户能够轻松地输入查询条件、查看搜索结果,并进行进一步的筛选和分析。除了基础的字段过滤外,一些高级功能如统计分析、可视化展示等也可以帮助用户更全面地理解日志数据,快速发现系统中的问题和异常。

在涉及多业务之间日志检索时,还需要支持多日志数据之间的联合检索功能,用户可以同时查询不同业务生成的日志数据,进行比对和分析,全面了解业务运行情况。这样的功能有助于提高故障排查和问题诊断的效率,促进系统运行的稳定性和可靠性。

日志高效排障,快速定位问题

日志最为典型和核心的应用场景之一便是用于排障。通过利用日志,快速定位问题并走完排障的“最后一公里”。在查询日志时,以下步骤可以帮助实现高效定位问题:

  1. 确定问题:首先要明确正在解决的问题是什么,明确问题有助于缩小日志查询范围,集中精力查找与问题相关的日志。
  2. 确定日志源:确定产生问题日志的应用程序、系统组件或服务。这将帮助筛选日志源并减少查询范围。
  3. 使用过滤器和关键字搜索:通过日志工具,根据问题的特征或关键字使用过滤器和搜索功能。这将有助于快速筛选出与问题相关的日志条目。
  4. 时间范围限制:确定问题发生的时间范围,并将查询限制在这个时间段内。这将减少查询的数据量,提高定位问题日志的速度。
  5. 关注错误和警告:错误和警告日志通常是问题迹象最明显的地方。查看这些记录,是否包含与问题相关的错误消息或警告提示。
  6. 日志上下文:对于找到的问题日志条目,查看其上下文信息。通常日志条目提供有关请求、响应或其他事件的上下文相关信息,有助于更好地理解问题的背景及其成因。

除了以上步骤外,还可以利用人工智能(AI)能力和可观测上下游联动能力,进一步缩小日志查询的时间和空间范围,进一步提高故障定位效率。

智能化日志聚类能力

企业日志数量一般相当大,每天可能产生TB级别的日志数。当工程师需要从千万条日志数据中寻找异常日志进行问题定位时,时间成本很高。在这种情况下,如果日志工具提供了日志聚类能力,那么千万条日志数据就可以聚合成十几种格式类型,提高信息密度。这将使工程师避免查找重复日志而浪费大量时间。

可观测上下游联动

基于可观测系统设计模式,可以将指标数据、链路数据与日志数据进行打标关联。这样做的好处是,当在上游发现指标或链路数据异常时,在排障过程中可以直接下钻定位到关联的下游日志数据,省去了在千万条日志中查找异常日志的过程,大大提高了定位问题的速度。

在云原生时代IT可观测的三大支柱数据:Metrics,Tracing,Logging,日志数据在其中承担着排障的“最后一公里”的角色,基于其信息量大的特点,为研发、运维提供最直接且详尽的视角,深入了解IT系统运行的细节信息。

随着可观测体系的技术发展,可观测三大数据的融合和串联,已经成为提升日志价值信息密度的重要手段,前端的Metrics,Tacing数据就宛如快捷的交通工具,而排障的“最后一公里”就需要依赖日志数据来支撑,融合串联,快速定位关键信息点。

实现排障的“最后一公里”,需要在数据采集、数据监控、数据告警、数据分析四个层面上进行Metrics、Tracing、Logging的融合打通。

  • 数据采集需要支持将日志和资源实例、Trace进行关联,能识别出该条日志是哪个资源实例产生的,以及关联的Trace ID和Span ID。
  • 数据监控需要支持在一个策略内同时检测Metrics、Tracing、Logging,并可自由组合各类数据阈值进行告警通知相关人员。例如,应用系统日志发生异常,但操作系统、中间件和数据库指标都正常,则告警通知该应用系统的业务运维人员。
  • 数据告警需要支持通过告警事件下钻查看相关的Metrics、Tracing、Logging,协助运维人员快速定位故障问题,无需运维人员耗费时间去寻找关联的可观测数据。
  • 数据分析需要在观测场景或数据查询分析页面,支持Metrics、Tracing、Logging之间的互相跳转,以便故障排查和业务分析。

因此企业在建设可观测日志体系时,建议选用覆盖完整,且各类观测工具可自由组合的可观测平台,因为这些平台往往从一开始就会考虑几种数据之间的融合设计,不仅数据之间可以实现融合打通,UI界面上的串联排障过程也很丝滑,避免烟囱式建设。

同时以融合理念进行设计的产品,企业可以根据自身现状分批、分阶段建设,有效控制建设成本,实现最终的可观测体系建设,让企业能够顺利转型过渡。

深度挖掘日志价值,解锁数据潜力

日志数据是故障排除的关键,但仅保存日志是远远不够的。由于日志数据包含了丰富全面的信息,因此我们可以通过挖掘日志数据来实现以下场景:

  • 安全监控
  • 借助日志数据信息丰富详细的特点,实现对企业系统的访问记录、安全漏洞、恶意攻击、网络犯罪等的监控。日志中可能包含有关攻击者行为的详细信息,企业可以通过日志监控及时发现潜在的安全威胁,并采取相应的措施进行防范和应对。
  • 故障定位和诊断
  • 日志是诊断故障的重要工具。当系统出现故障时,运维人员可以通过分析日志文件来查找故障原因。日志中可能包含有关系统运行状态、处理请求时的错误、访问权限等信息,辅助运维人员快速定位和解决问题。
  • 性能优化
  • 日志可以帮助运维人员监测系统的性能,找出系统瓶颈并进行优化。通过分析日志,运维人员可以识别系统处理请求时的常见错误、延迟等问题,并采取相应的措施来优化系统性能。
  • 合规审计
  • 许多企业和组织需要遵守相关的法律法规和标准,例如金融监管要求日志审计。日志建设可以帮助管理员确保满足这些法规和标准的要求,例如对数据进行适当的保护和管理。
  • 开发和维护
  • 伴随云原生时代的到来,许多企业的应用系统敏捷开发、快速迭代,频繁的业务变更增加了运维人员定位故障问题的难度。日志建设可以帮助开发团队和运维团队更好地理解和调试系统。在开发和维护过程中,开发人员和运维人员可以通过分析日志来查找和解决问题,并优化系统的性能和稳定性。
  • 业务分析
  • 通过将业务指标数据与相应的日志数据进行关联,可以深入了解业务指标的影响因素,找出影响业务绩效的关键日志事件,并采取对应的业务运营措施。

结语

综上所述,在当今数字化时代,日志数据的重要性不容忽视。通过建立完善的日志体系,并利用各类观测工具进行数据融合,企业可以实现安全监控、故障定位、性能优化、合规审计、开发维护以及业务分析等多方面的价值。而充分挖掘日志数据潜力,有助于企业更有效地管理和优化系统运营,促进持续发展。因此,日志体系的建设将成为企业数据管理和运营中不可或缺的战略举措。

系列文章

【观点洞察】

大模型在可观测的增强

传统企业可观测建设之路

企业的分层运维对象监控指标体系建设

企业如何实现运维故障加速闭环的告警体系建设

企业运维排障最后一公里:日志体系建设

企业应用观测中枢建设

0 人点赞