云原生的可观察性与分析

我们终于到达了云原生计算基金会景观系列的最后一部分。如果您错过了我们之前的文章,我们会在单独的文章中介绍介绍,然后是配置运行时编排和管理层以及平台。今天,我们将讨论可观察性和分析“列”的每个类别。

让我们从定义可观察性和分析开始。可观察性是一种系统特征,描述了一个系统可以从其外部输出中被理解的程度。通过 CPU 时间、内存、磁盘空间、延迟、错误等衡量,计算机系统或多或少是可观察的。另一方面,分析是您查看这些可观察数据并理解它的活动。

为确保没有服务中断,您需要观察和分析应用程序的各个方面,以便立即检测和纠正任何异常。这就是这个类别的全部内容。它运行并观察所有层,这就是为什么它位于侧面而不嵌入特定层的原因。

此类别中的工具分为日志记录、监控、跟踪和混沌工程。请注意,类别名称有些误导。虽然在这里列出,但混沌工程与其说是可观察性或分析工具,不如说是一种可靠性。

1. 日志记录 (Logging )

1.1 这是什么

应用程序会发出稳定的日志消息流,描述它们在任何给定时间所做的事情。这些日志消息捕获系统中发生的各种事件,例如失败或成功的操作、审计信息或健康事件。日志工具收集、存储和分析这些消息以跟踪错误报告和相关数据。与指标和跟踪一起,日志记录是可观察性的支柱之一。

1.2 它解决的问题

收集、存储和分析日志是构建现代平台的关键部分。日志记录有助于执行其中一项或所有任务。一些工具处理从收集到分析的各个方面,而另一些工具则专注于收集等单一任务。所有日志记录工具都旨在帮助组织获得对其日志消息的控制权。

1.3 它如何帮助

在收集、存储和分析应用程序日志消息时,您将了解应用程序在任何给定时间正在通信的内容。但请注意,日志表示应用程序可以故意发出的消息,它们不一定能查明给定问题的根本原因。话虽如此,随着时间的推移收集和保留日志消息是一项非常强大的功能,将帮助团队诊断问题并满足法规和合规性要求。

1.4 技术101

虽然收集、存储和处理日志消息绝不是一个新问题,但云原生模式和 Kubernetes 已经导致我们处理日志的方式发生了重大变化。适用于虚拟机和物理机的传统日志记录方法(例如将日志写入文件)不适合容器化应用程序,因为文件系统不会超过应用程序。在像 Fluentd 这样的云原生环境日志收集工具中,与应用程序容器一起运行并直接从应用程序收集消息。然后将消息转发到中央日志存储以进行汇总和分析。

Fluentd 是该领域唯一的 CNCF 项目。

流行语 热门项目
日志记录 Fluentd 、Fluentbit 、Elastic Logstash

在这里插入图片描述

2. 监控(Monitoring)

2.1 这是什么

监控是指检测应用程序以收集、汇总和分析日志和指标,以提高我们对其行为的理解。虽然日志描述了特定事件,但指标是在给定时间点对系统的度量——它们是两个不同的东西,但都是全面了解系统健康状况所必需的。监控包括从查看单个节点上的磁盘空间、CPU 使用率和内存消耗到执行详细的综合事务以查看系统或应用程序是否正确及时地响应的所有内容。有许多不同的方法来监控系统和应用程序。

2.2 它解决的问题

运行应用程序或平台时,您希望它按设计完成特定任务,并确保它只能由授权用户访问。通过监控,您可以了解它是否正常、安全、经济高效地运行、仅由授权用户访问,和/或您可能正在跟踪的任何其他特征。

2.3 它如何帮助

良好的监控使操作员能够快速响应,并且在发生事件时可能会自动响应。它提供对系统当前运行状况的洞察并监视变化。监控跟踪从应用程序运行状况到用户行为的所有内容,是有效运行应用程序的重要组成部分。

2.4 技术101

云原生环境中的监控通常类似于监控传统应用程序。您需要跟踪指标、日志和事件以了解应用程序的运行状况。主要区别在于一些托管对象是短暂的,这意味着它们可能不会持久,因此将您的监控与自动生成的资源名称联系起来并不是一个好的长期策略。在这个领域有许多 CNCF 项目主要围绕 Prometheus,CNCF 毕业项目。

流行语

  • 监控(Monitoring)
  • 时间序列(Time series)
  • 警报(Alerting)
  • 指标(Metrics )

热门项目/产品

  • Prometheus
  • Cortex
  • Thanos
  • Grafana

在这里插入图片描述

3. 追踪(Tracing)

3.1 这是什么

在微服务世界中,服务通过网络不断地相互通信。跟踪是日志的一种特殊用途,它允许您在请求通过分布式系统时跟踪它的路径。

3.2 它解决的问题

了解微服务应用程序在任何给定时间点的行为方式是一项极具挑战性的任务。虽然许多工具提供了对服务行为的深入洞察,但很难将单个服务的操作与对整个应用程序行为方式的更广泛理解联系起来。

3.3 它如何帮助

跟踪通过向应用程序发送的消息添加唯一标识符来解决此问题。该唯一标识符允许您在单个交易通过您的系统时跟踪或跟踪它们。您可以使用此信息来查看应用程序的运行状况以及调试有问题的微服务或活动。

3.4 技术101

跟踪是一个强大的调试工具,允许您对分布式应用程序的行为进行故障排除和微调。这种力量确实是有代价的。需要修改应用程序代码以发出跟踪数据,并且任何跨度都需要由应用程序数据路径中的基础架构组件传播。特别是服务网格及其代理。Jaeger 和 Open Tracing 是该领域的 CNCF 项目。

流行语

  • 跨度(Span)
  • 追踪(Tracing)

热门项目

  • Jaeger
  • OpenTracing

在这里插入图片描述

4.1 混沌工程(Chaos Engineering)

4.2 这是什么

混沌工程是指故意将故障引入系统以创建更具弹性的应用程序和工程团队的实践。混沌工程工具将提供一种受控方式来引入故障并针对应用程序的特定实例运行特定实验。

4.2 它解决的问题

复杂的系统会失败。它们失败的原因有很多,分布式系统中的后果通常很难理解。混沌工程被那些接受失败会发生的组织所接受,而不是试图防止失败,而是练习从失败中恢复。这称为优化平均修复时间或 MTTR。

旁注:维护应用程序高可用性的传统方法称为优化平均故障间隔时间,或 MTBF。您可以在组织中观察到这种做法,这些组织使用“变更审查委员会”和长期变更冻结”通过限制变更来保持应用程序环境稳定。Accelerate的作者建议,高性能 IT 组织通过优化平均恢复时间或 MTTR 来实现高可用性。

4.3 它如何帮助

在云原生世界中,应用程序必须动态调整以适应故障——这是一个相对较新的概念。这意味着,当某些事情发生故障时,系统不会完全关闭,而是会优雅地降级或恢复。混沌工程工具使您能够在生产中对软件系统进行试验,以确保它们在发生真正的故障时能够这样做。

简而言之,你试验一个系统是因为你想确信它可以承受动荡和意外的条件。与其等待某事发生并找出答案,不如在受控条件下进行胁迫,以识别弱点并在机会发现之前修复它们。

4.4 技术101

混沌工程工具和实践对于实现应用程序的高可用性至关重要。分布式系统通常过于复杂,任何一位工程师都无法完全理解,并且没有任何变更过程可以完全预先确定变更对环境的影响。通过引入深思熟虑的混沌工程实践,团队能够实践和自动化,从失败中恢复。Chaos Mesh 和 Litmus Chaos 是该领域的 CNCF 工具,但有许多开源和专有选项可用。

流行语

  • 混沌工程

热门项目

  • Chaos Mesh
  • Litmus Chaos

在这里插入图片描述
正如我们所看到的,可观察性和分析层都是关于了解系统的健康状况并确保它即使在恶劣的条件下也能保持运行。日志工具捕获应用程序发出的事件消息,监控手表日志和指标,并跟踪单个请求的路径。结合使用时,这些工具可以理想地提供 360 度视图,以了解您的系统内正在发生的事情。混沌工程有点不同。它提供了一种安全的方式来验证系统是否可以承受意外事件,基本上确保它保持健康。


在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xixihahalelehehe/article/details/123733848