可观测性的 10 个最佳实践
本文翻译自:https://middleware.io/blog/observability/best-practices/ 这是一家可观测性 SaaS 厂商
鉴于可观察性在当今复杂系统中的重要性,拥有一套可观察性最佳实践变得至关重要。这是因为可观察性最佳实践提供了一套持续高效发展的指南,这些指南符合标准和法规,同时提供了持续改进的途径。
等一下,什么是可观察性?
可观测性是指仅基于对复杂系统实时外部输出的了解,就能理解其内部状态或状况的程度。可观测性会分析遥测数据 ,以解决问题并保持系统高效可靠。通过分析指标、轨迹和日志等数据,可以获得切实可行的知识或洞察。
根据最近的研究 ,在一定程度上使用可观察性的公司已经见证了系统正常运行时间和可靠性、真实用户体验和开发人员生产力的改善以及运营效率和安全管理的提高。
了解了可观察性及其重要性之后,让我们来看看每个 DevOps 工程师都应该实施的 10 个可观察性最佳实践 。
1. 了解你的平台
您需要对物理平台有详细的了解,以识别所有可能的数据来源。不同的平台和系统需要不同的监控和可观察性方法,了解平台的独特特性可以帮助您优化可观察性实践。
了解您的平台需要考虑的一些因素包括:
- 平台架构,包括服务之间的组件、依赖关系和通信模式。
- 在您的平台上运行的工作负载,例如批处理作业、实时服务和后台任务。
- 在您的平台上运行的操作系统,包括其性能特征、资源利用率和限制。
- 对于云平台来说, 云基础设施的监控和可观察性能力和局限性。
- 监控和可观察性的相关数据源,例如日志、指标、跟踪和事件,以及如何收集和分析它们。
了解平台的独特特性可以帮助您优化可观察性最佳实践分数。
2. 您不需要监控所有事情,只需监控重要的事情!
IT 平台生成大量数据,但并非所有数据都有用。可观测性系统的设计应尽可能在靠近源头的地方进行多层次的数据过滤,以避免数据过剩造成混乱。
这将实现更快的实时数据分析。
当然, 可观察性最佳实践建议您确保从运维角度来看不重要但从业务分析角度来看很重要的数据不会被删除。
选择性监控具有以下好处:
- 只关注关键指标和事件可以减少监控数据中的噪音量,从而更容易更快地识别和解决关键领域的问题,从而减少停机时间。
- DevOps 团队可以通过将资源集中在最关键的领域来更有效地扩大监控力度,从而提高成本效益。
3. 仅对关键事件发出警报
可以配置警报以发送关键事件的通知,例如当应用程序的行为超出预定义参数时。
它检测系统中的重要事件并向责任方发出警报 。警报系统确保开发人员知道何时需要修复问题,以便他们能够专注于其他任务。
像 middleware.io 这样的有效可观察性工具将会发现平台上的关键早期问题或零日攻击。
译者注:middleware.io 是作者所在公司的产品,是一个可观测性 SaaS 平台。
他们利用模式识别来保护平台免受内部和外部威胁。
开发人员可以使用自修复基础设施或自动化技术来解决非关键问题。然而,对于业务关键型问题,开发人员则需要更加亲力亲为,充分利用数据和分析技术。
4. 创建标准化的数据记录格式
日志记录产生的数据可以帮助 DevOps 团队识别系统中出现的问题,并找出问题的根本原因。因此,应以标准化的方式构造日志,以格式化日志数据,从而最大限度地提高利用率。
结构化日志将所有关键日志元素表示为具有关联值的属性,可以轻松提取和解析。
这使得团队能够利用日志管理平台和数据可视化功能来最佳地识别应用程序或基础设施问题并做出响应的能力。
这变得至关重要,尤其是当您处理大量日志数据时。
我们建议您确保已启用数据日志记录,并尽可能使用网络管理协议或其他标准化日志记录方式。
您可以使用连接器将数据转换为标准化格式。
5. 存储仅提供有关关键事件的见解的日志
仅存储提供有关关键事件的见解的日志是可观察性的最佳实践。
必须管理和监控的日志:
- 登录失败可能是出现问题的危险信号。短时间内多次登录失败可能表明有人试图入侵系统。当然,出于合规性考虑,必须对其进行管理和监控。
- 防火墙和其他入侵检测设备是重要的第一道安全防线。尽管如今先进的攻击手段可以绕过大多数防火墙,但监控日志仍然是必须的。
- 当控制策略不被遵守,或者发生一些未经授权的更改时,这可能是不专业的行为,也可能是险恶的行为。这些更改可能会造成灾难性的后果,甚至导致网络瘫痪。
应用程序还会生成大量需要监控的日志 。
6. 确保数据能够聚合和集中
DevOps 文化基于协作、一致和持续交付 ,集中式日志记录在其中发挥着重要作用。
如果没有集中数据, DevOps 团队在复杂、大规模的工作环境中的管理就不会高效。单独管理日志会增加工作量,并影响团队在解决问题时整合和关联多个日志数据的能力。这与 DevOps 文化背道而驰。
通过将软件交付管道各个阶段的日志汇总到一个地方来进行集中日志记录,为开发人员和 IT 工程师提供持续、一致地交付软件所需的端到端可视性。
通过集中化,来自开发和测试环境的日志与生产日志收集在同一个地方,使所有人都能更轻松地查看和关联数据。
7. 不要依赖默认仪表板
默认仪表板可能提供一个起点,但它们并非旨在捕捉每个系统的独特特征。
自定义仪表板可以帮助突出显示重要指标,提供关键组件性能的见解,并帮助在潜在问题影响系统之前识别它们。自定义仪表板可以帮助识别和突出显示特定于系统的重要指标。使 IT 团队更轻松地分析和解释数据。
此外,仪表板的受众不仅仅局限于系统管理员和 IT 团队,而且对于高级 IT 经理和业务人员也很重要。仪表板应该向 IT 专业人员展示趋势分析问题的根本原因,以及管理层要求的随之而来的业务影响。
8. 利用集成
我们建议 DevOps 团队采用自动化可观察性系统, 持续监控生态系统中出现的任何问题。各类可观测性工具使用人工智能算法来收集和分析整个基础设施的数据,以便在潜在问题发生之前发现它们的迹象。人工智能和机器学习算法可以帮助将自动化融入可观察性。
您可以存储和处理大量数据,并识别独特的模式或见解,从而帮助您提高应用程序效率。此外,它还允许您轻松扩展规模,同时消除人为错误因素。
9. 尽可能与自动修复系统集成
可观察性通常可以识别与内核或操作系统级别相关的相对较低级别的问题。
系统管理员通常会解决此类问题,他们使用工具通过修补或给服务自动扩容来自动修复此类问题。像 middleware.io 这样的可观察性软件可以与现有的生态系统集成,以维持优化的环境。
拥有这样的过滤器可以确保即使在无法实现自动化的情况下,IT 团队也可以专注于关键问题并优先解决它们。
10. 反馈循环应存在且有效
反馈循环基本上是对团队、系统和用户如何运作的内部审查,不一定是在可观察性的背景下,也包括在更大的 DevOps 背景下。
它们至关重要,因为它们有助于提高开发质量,同时确保按时交付。反馈循环的目标是在 DevOps 业务部门(即开发和用户)之间建立循环。
当一个单元发生变化时,它会导致另一个单元发生变化,最终导致第一个单元发生变化。
这使得组织能够敏捷地持续执行所需的修正。使用反馈循环来收集数据并创建持续的信息流,可以转化为 DevOps 环境中增强的可观察性。
当然,反馈很重要,前提是你要采取行动。这时,你需要解决问题,并加快速度,从而形成闭环。否则,如果出现开放循环,事情就会开始失败,并且团队会迷失方向,因为他们无法找到根本原因并进行沟通。
福利建议:恰当的埋点
检查监控数据埋点是否正确提供,如果没有,则检查一下。
埋点是系统可观察性的基础。这就像在汽车上安装仪器(传感器)来监测其健康状况一样。在软件中,埋点涉及向应用程序添加代码,用于收集有关其内部工作的数据。这些数据被称为遥测数据,随后会被发送到收集系统进行分析。
以下是可观察性中埋点工作原理的细分:
- 添加检测: 您可以在应用程序中策略性地放置代码片段,以捕获特定的数据点。这些数据可以包括:指标、日志、链路追踪数据
- 遥测数据收集: 已检测的代码将遥测数据(指标、日志、跟踪)发送到中央收集点。这可以是专用的可观察性工具,也可以是云服务。
- 数据分析: 收集到的数据将被存储并分析。这可以让您:
- 监控应用程序的健康和性能。
- 快速识别并诊断问题。
- 深入了解您的应用程序在不同负载下的行为。
通过恰当埋点,您可以深入了解系统内部的运作情况。这让您能够主动发现问题,确保应用程序平稳运行。
以下是一些需要考虑的其他要点:
- OpenTelemetry: 这是一个与供应商无关的检测标准,允许您编写一次代码并使用各种可观察性工具。
- 最小化开销: 应慎重实施检测,以避免严重影响应用程序性能。
总的来说,埋点是实现可观察性的关键实践,它使您能够了解系统内部发生的情况,并做出数据驱动的决策以获得最佳性能。
总结
随着组织迁移到分散的 IT 平台,可观察性已成为必要的基础设施推动因素。
如果企业无法汇总和分析来自所有 IT 平台领域的数据,他们就会面临各种问题,从应用程序性能不足、用户体验不佳到重大安全问题。最重要的是,他们时刻面临着宕机的风险,每小时的宕机成本可能高达约 50 万美元。
实施上述 10 个可观察性最佳实践可以帮助组织在当今复杂而动态的环境中生存和发展。