随着DevOps的不断成熟,各组织不断尝试改进其软件的性能,并在市场上推出最佳质量的产品。说到现代德沃斯Kubernetes占据了中心舞台,并围绕它建立了一个完整的生态系统。这是完全有意义的,因为Kubernetes和DevOps是天然的结合,前者帮助简化构建、测试和部署管道,而后者在基础设施级别实现了这一点。
监控、可观察性和金三角
监视和可观察性的区别在于,后者是系统的固有属性,而前者是某人对系统所做的事情。开发人员或操作团队单独负责可观察性,而监视可以由任何人完成。在云本地多语言架构中,很难识别和解决性能问题。这就是为什么需要可观察性。
金三角
金三角代表了监控和可观察性的三个支柱。
- 指标:它们表示随时间变化的数值。它们是监控中使用的关键数据结构,可以洞察系统的运行状况。
- 日志:它们表示离散事件并包含元数据。它们是需要存储的最大数据量。
- 踪迹:它们跟踪有关特定应用程序操作的信息。
最后,乐器不一定是金三角的一部分,但它们同样重要。工具是用于生成度量、日志和跟踪的代码的一部分。
Kubernetes中支持监视和可观察性的五大工具
Kubernetes是最流行的容器编排软件,其原因之一是它的模块化架构。它没有内置监控等功能;它期望管理员或用户使用现成的工具配置它。监视和可观察性对于分析Kubernetes中运行的众多容器至关重要,以确保所有服务都已启动并完美运行。因此,为Kubernetes开发各种开源监控工具并不奇怪。
在我们研究这些工具之前,值得一提的是,普罗米修斯是库伯内特斯的主要监控工具。然而,我们已经尝试着超越它,去关注那些在监控方面开拓创新的新项目。事实上,其中一些工具用于增强普罗米修斯的默认功能。让我们来看五个这样的工具,它们对于Kubernetes中的监视和可观察性是必不可少的。
1.皮层
皮层是一个开源的Prometheus即服务系统平台,提供复杂、安全的多租户Prometheus体验。它本质上是一个监控系统,为应用程序和微服务提供无限的水平可扩展性。它在集群中跨多台机器运行,从而改进了其存储,并使其能够在单个位置推送度量和运行全局聚合的数据。
Cortex没有单点故障,因为它可以在集群中运行时在机器之间复制数据,并支持多个云计算平台。它为定制的指标提供长期存储,支持使用图表和图表搜索历史记录。这使得DevOps团队能够定制实时网络流量的可视化,并监控运行时事件。除了具有快速的查询响应外,Cortex还为拥有许多团队的大型组织提供了一流的多租户功能。
2.Thanos
Thanos是一个开源监控系统,它根据度量标准收集来自各种普罗米修斯部署的数据,并提供集中的全局查询视图。它利用Prometheus 2.0存储格式存储无限、长期的历史数据。Thanos提供了下采样(降低信号的采样率),以帮助在查询大时间范围时加快查询速度并保持查询响应。它可以跨多个Kubernetes群集进行扩展,并具有简单的度量备份。
当两个Prometheus实例在同一个Kubernetes集群中运行时,将收集监控数据。Thanos帮助从副本和重复数据删除并存储数据,从而防止停机。它很容易集成到所有的普罗米修斯设置,其操作简单,基线成本可以忽略不计。
3.开放遥测
开放遥测是一个开源的可观测性框架,是云本地软件的可观测性工具集合。虽然它本身不是一个监控工具,但它可以启用各种监控工具,如Jaeger、Prometheus或任何您希望向其发送数据的商业监控工具。
OpenTelemetry提供了一个现成的工具包,用于从云本地应用程序生成、收集和导出数据,以分析和了解其性能和运行状况。OpenTeletry通过提供跨服务的通用检测格式来标准化数据收集过程。用外行的话说,OpenTelemetry就是把你的可观测数据传送到一个你可以使用它的地方。
OpenTelemetry收集的数据是一种称为遥测数据的数据类型。这些数据以度量、日志和跟踪的形式存在,并进行分析以提供分布式系统中的依赖关系视图。OpenTelemetry定义了如何收集这些遥测数据,因此团队从一开始就可以在应用程序中测量可观测性。
OpenTelemetry的核心是它的收集器。它们就像安装在系统中需要被观察的代理,从这里开始,它们负责收集数据并将数据传输到目的地以供使用。它的工作原理是,软件告诉系统组件使用API收集哪些指标来检测代码,然后将这些数据汇集起来进行处理。然后,在转换和导出数据之前,它将数据分解并过滤以消除错误。对这些数据的分析使观察多层系统的行为变得更容易。
4.混乱的网
混乱的网开源云是原生的吗混乱工程平台它能够协调故障场景。混沌工程本质上是一种方法,它可以帮助在故障导致问题之前识别出故障,从而构建具有弹性的系统。因此,混沌网格是一种通用的混沌工程解决方案,它通过模拟Kubernetes上的复杂系统在现实中可能发生的异常来工作。它还提供可视化来帮助设计自定义混沌实验场景,并具有多层安全控制。
这个高度可扩展的平台有两个主要组件——混沌算子(chaos operator),这是一个完全开源的核心组件,以及混沌仪表板(chaos dashboard),这是一个用于设计和监控混沌实验的web UI。由于混沌网格是专门为Kubernetes设计的,因此它不需要特殊的依赖项,可以直接部署在Kubernetes集群上。它以可管理的方式将混沌注入Kubernetes基础设施,以提供自动编排。
5.洛基
每个应用程序都会创建日志,能够分析这些日志对于组织跟踪其性能非常重要。虽然有许多日志聚合工具,但Loki因其独特的方法而脱颖而出。它只对每个日志线的元数据(例如Kubernetes荚的标签)进行索引。此外,它还存储非结构化的压缩日志,并且实际的日志内容存储在对象存储库中,从而简化了日志聚合,简化了操作。Loki可以方便地选择和搜索时间序列日志,日志存储稳定。
百叶窗
它是水平可伸缩的、多租户的,可以轻松地插入到Prometheus中。
在Kubernetes中收集日志是一项艰巨的任务,因为它有一个基于微服务的体系结构,包含数百个吊舱和更多容器。这就是Loki的用武之地,它有助于高效地收集Kubernetes吊舱中的日志。
Kubernetes监测和可观测性的多功能
有多种工具,每个工具都有自己独特的解决方案,专注于一个或两个特定的可观察性问题。因此,由于没有一个一体化的解决方案来覆盖Kubernetes系统所有环境的监视和可观察性,因此实现特定于问题的工具对DevOps团队来说工作量太大了。然而,在分析需求之后,将这些工具巧妙地组合在一起可能会达到目的。
特色图片:在上面
