🔥 成为更优秀开发人员的 6 大监控工具 🤯 🤯
TL;DR
监控可能很复杂,尤其是考虑到可用工具的数量和环境的动态特性。
在本文中,我比较了最流行的监控工具,以帮助您根据特定需求选择合适的工具。
Odigos - 开源分布式追踪
无需编写任何代码,即可同时监控所有应用!
使用唯一能够在所有应用中生成分布式跟踪的平台,简化 OpenTelemetry 的复杂性。
我们真的才刚刚起步。
能帮我们加个星吗?拜托!😽
https://github.com/keyval-dev/odigos
介绍
随着对可扩展应用程序的需求不断增长,Kubernetes 成为管理容器化工作负载和服务的标准。
它使得在分布式实例上部署和运行应用程序变得容易,但监控基础设施可能具有挑战性。
Kubernetes 监控是跟踪和观察应用程序及其提供基础设施的性能、健康和行为的实践。
它涉及收集和分析跟踪、指标和日志,以帮助您检测和解决问题,甚至优化集群以更好地管理资源。
但由于环境如此复杂,因此出现了各种工具来解决这个问题。
在这里我们将探讨一些主要的解决方案,希望能够帮助您根据自己的需求进行选择。
要监控的关键指标
首先,我们将指标分为两类:
资源利用率
这些指标包括集群、节点、Pod 和容器级别的 CPU、内存和磁盘使用情况,可帮助您决定是减少还是增加集群规模。此外,使用节点可用性和运行状况等更通用的指标来监控集群也很重要。
- 集群是一组运行容器化应用程序的节点。它是 Kubernetes 中最高级别的抽象。
- 节点是集群中物理机或虚拟机的一部分。例如,它可以是云中的虚拟机
- Pod是一个或多个共享存储和网络资源的容器的集合,是 Kubernetes 中最小的可部署单元。
- 容器是软件的标准单元,它打包代码及其所有依赖项,以便应用程序能够从一个计算环境快速可靠地运行到另一个计算环境。
应用程序性能
这些将取决于您的应用程序和业务的类型。
例如,API 将提供响应时间、请求延迟、错误率和吞吐量等指标。
考虑到这一点,让我们了解一些可以使用的解决方案。
工具
Kubernetes 仪表板
https://github.com/kubernetes/dashboard
Kubernetes 仪表板是一个基于 Web 的用户界面,用于监控和管理 Kubernetes 集群。您可以访问 CPU 和内存利用率等基本信息,部署和管理 Pod 中运行的应用程序,以及更改集群中的资源量。
它为您提供了集群的基本概述,并使您可以轻松执行某些操作,同时由 Kubernetes 社区维护。
但如此简单也意味着它没有很多可视化选项,也没有高级资源指标。
cAdvisor
https://github.com/google/cadvisor
cAdvisor 是一款开源容器监控工具,由于 Kubernetes 本身就是一个容器编排器,因此我们也可以使用它。它可以帮助您收集、处理和导出容器指标,例如 CPU 和内存使用情况。默认情况下,它存在于每个 Kubernetes 节点上,甚至可以公开 Prometheus 指标。它是 Kubernetes 原生最基础的监控工具之一。
它内置于 Kubernetes 中,使用简单,但比较基础,功能有限,通常与 Prometheus、Grafana 配合使用。
普罗米修斯
Prometheus是领先的开源监控解决方案,被广泛认可为 Kubernetes 监控的主要标准。它是云原生计算基金会 (CNCF) 的基础组件。
Prometheus由三个主要组件组成:
- 服务器:该组件负责管理和存储收集到的指标。
- 警报管理器:它处理警报和通知功能。
- 出口商:出口商负责生成和导出指标。
导出器从各种来源收集指标,服务器将其存储在数据库中以供分析和可视化。
Prometheus 提供了几个值得注意的功能:
- 直观的基于查询的系统。
- 内置警报功能。
- 一个蓬勃发展且广泛的支持社区。
需要注意的是,Prometheus 缺乏内置的可视化界面。因此,通常使用Grafana之类的工具来补充 Prometheus ,Grafana 是另一个开源项目。Grafana 不仅为 Kubernetes 提供预构建的仪表板,还允许用户根据特定需求创建自定义可视化效果。
ELK 堆栈(和 OpenSearch)
https://www.elastic.co/pt/elastic-stack
https://opensearch.org/
ELK 堆栈曾经是 Kubernetes 的开源监控解决方案,但 Elastic 决定使用专有许可证将其关闭。
- ELK代表:
- ElasticSearch:用于存储和搜索数据的数据库引擎。
- Logstash:捕获并处理日志,然后将其发送到 ElasticSearch。
- Kibana:一个数据可视化工具。
为了响应 Elastic 的决定,AWS 对 ElasticSearch 和 Kibana 进行了分叉,创建了OpenSearch和OpenSearch Dashboard。截至目前,它们与 ELK 版本相对相似。
选择开源选项的优势:
- 它包含一些在 ELK 堆栈中付费的安全和分析功能。
- ELK 和 OpenSearch 都拥有强大的社区。
- 它们易于部署并与 Kubernetes 一起使用,并提供丰富的分析功能。
然而,也有缺点:
- 维持它们的规模可能颇具挑战性。
- 通常与Apache Kafka配对使用,用于缓冲大量数据。
- 虽然闭源 ELK 有免费套餐,但某些功能需要付费。
数据狗
Datadog:在探索开源选项之外时,Datadog 成为一种全面的全栈监控解决方案。
主要特点:
-
端到端监控:Datadog 提供强大的基础设施、安全性和应用程序监控功能,涵盖整个系统。
-
数据洞察:您可以监控请求、跟踪、日志并关联这些不同的数据集以获得有价值的洞察。
-
资源指标:Datadog 提供有关资源利用率的详细指标。
-
数据覆盖范围:配置完成后,Datadog 会有效地从您的架构中收集数据,提供系统的整体视图。
但它也有缺点:
-
复杂的初始设置:请注意,初始设置可能有些复杂,需要调整配置文件。
-
预算考虑:请记住,虽然这种广泛的数据收集是有益的,但它可能是昂贵的,应该谨慎管理以避免不必要的开支。
Dynatrace
Dynatrace 是一个全面的、付费的全栈监控解决方案。
它擅长监控 Kubernetes 集群的可用性和健康状况,同时支持跨多种工具(包括AWS和Google Cloud中的服务)的统一监控。
该平台以以下特点而闻名:
- 用户友好的设置
- 对于在复杂的分布式系统中跟踪指标非常有效。
然而,它伴随着显著的投资要求。
对于那些不愿意处理监控设置和基础设施管理的人来说,Dynatrace 提供了一个引人注目的选择。
当重点主要放在应用程序监控而不是监控基础设施资源使用情况时,通常会选择它而不是Datadog 。
奥迪戈斯
Odigos是一个开源平台,无需更改代码即可立即生成分布式跟踪、指标和日志。
它专注于所有应用程序的自动检测和遥测数据收集,并与传统的监控解决方案协同工作。
它非常适合那些想要快速检测其应用程序而不触及其代码的初学者。
如果您对当前的监控解决方案不满意或无法解决,并想尝试其他选项,这也是很好的选择。
只需安装 Odigos,它将:
- 自动检测所有应用程序
- 收集和管理遥测数据,以及
- 将其发送给您选择的监控供应商。
即刻
它支持所有主要的开源和托管解决方案,并且非常易于安装和实施。
总结
市面上有如此众多的 Kubernetes 监控解决方案,选择最符合您需求的解决方案可能并非易事。现在,您已经对各种不同的方案有了基本的了解,可以开始缩小选择范围,选择最符合您特定需求的解决方案。
选择 Kubernetes 监控解决方案时需要考虑的主要因素:
- 功能:哪些功能对您来说最重要
- 成本:开源(通常免费使用)与付费解决方案(可能很昂贵)。
- 易于使用:有些解决方案比其他解决方案更易于设置和使用。
- 可扩展性:随着集群的增长,解决方案是否可以扩展以满足您的需求?