使用 Prometheus 进行 Kubernetes 监控 [带有用例和监控]

已发表: 2020-09-23

目录

普罗米修斯在哪里以及为什么使用?

Prometheus Kubernetes 是一个监控工具,可以部署在 AWS、Azure 或 GCloud Kubernetes 集群上。 它被认为是现代基础设施中必不可少的工具。 现代 DevOps 变得越来越复杂,手动处理变得越来越复杂,因此需要更多的自动化,因此您通常拥有多个运行容器化应用程序的服务器。

在所有实体都相互连接的基础设施上运行着数百个不同的进程,因此维持这样的设置以平稳运行并且没有应用程序停机时间是非常具有挑战性的。 想象一下,拥有如此复杂的基础架构,负载分布在许多位置的服务器,您无法了解硬件级别或应用程序级别发生的情况,例如错误、响应和延迟。

在如此复杂的基础架构中,硬件停机或过载可能会耗尽资源,但当您部署大量服务和应用程序时,可能会出现更多问题。 它们中的任何一个都可能崩溃并导致其他服务失败,并且有如此多的移动部件,并且突然间应用程序对用户变得不可用。 您必须快速确定这数百个不同的事情中究竟出了什么问题,这在手动调试系统时可能既困难又耗时。

使用 Prometheus 监控的一些用例

例如,假设一台特定服务器内存不足并启动了一个正在运行的容器,该容器负责在 Kubernetes 集群中的两个数据库罐之间提供数据库同步。 反过来,这导致这两个数据库罐失败。 该数据库由身份验证服务使用,该服务也因数据库不可用而停止工作。

依赖于该身份验证服务的应用程序无法再对 UI 中的用户进行身份验证,但从用户的角度来看,您所看到的只是 UI 中的错误。 当您不了解集群内部发生的事情时,您看不到此处显示的事件链的红线; 你只看到错误。 所以现在你从那里开始向后工作以找到原因并修复它。 但是什么会使这个搜索问题过程更有效率呢? 您可以使用一种工具来持续监控服务是否正在运行,并在一个服务崩溃时立即弹出警报。

您确切地知道发生了什么,甚至更好的是,它甚至可以在问题发生之前识别问题,并提醒负责该基础设施的系统管理员以防止该问题发生。 例如,在讨论的这种情况下,它会定期检查每个服务器上的内存使用状态。 当在其中一个服务器上时,它会在一个多小时内达到峰值,例如 70% 或不断增加,它会通知该服务器上的内存可能很快耗尽的风险。

或者让我们考虑另一种情况,您停止查看应用程序的日志,因为弹性搜索不接受任何新日志,因为服务器用完了磁盘空间或弹性搜索达到了为其分配的存储限制。 监控工具会不断检查存储空间,并将其与存储空间的弹性搜索消耗进行比较。 它将看到风险并通知维护者可能的存储问题。

阅读: Kubernetes 面试问题

您可以告诉监控工具应该触发警报的关键点是什么。 如果你有一个关键应用程序,绝对会丢失任何日志数据,你可能会非常严格,一旦达到百分之五十或百分之六十容量就采取措施。 添加更多存储空间需要很长时间,因为这是您组织中的一个官僚程序,您需要一些 IT 部门和其他几个人的批准。

您还希望更早地收到有关可能的存储问题的通知,以便您有更多时间修复它。 或者在第三种情况下,应用程序突然变得太慢,因为一个服务发生故障并开始在网络中循环发送数百条错误消息,这会产生高网络流量并减慢其他服务的速度,以便拥有检测网络中此类峰值的工具.

学习: Openshift 与 Kubernetes:Openshift 与 Kubernetes 之间的区别

资源

暴露给 Prometheus 的 Kubernetes 服务发现

主要组件:普罗米修斯服务器

普罗米修斯架构

资源

Prometheus Kubernetes 架构

Prometheus Kubernetes 的重要特征之一是即使在其他系统出现故障时也能保持可靠。 您可以诊断问题并修复它们。 因此,每个 Prometheus 服务器都是独立的,这意味着它不依赖于网络存储或其他远程服务。

当基础设施的其他部分发生故障时,它就可以工作,并且您无需设置广泛的基础设施即可使用它。 但是,它也有 Prometheus 难以扩展的缺点。 因此,当您拥有数百台服务器时,您可能希望拥有多个汇总所有这些指标数据的 Prometheus 服务器。

由于这些特性,以这种方式配置和缩放原语可能非常困难。 因此,虽然使用单个节点不太复杂,并且您可以非常轻松地开始使用,但它限制了 Prometheus 可以监控的指标数量。 要解决这个问题,您可以增加 Prometheus 服务器的容量,以便它可以存储更多的指标数据,或者限制 Prometheus 从应用程序收集的指标数量,使其仅保留相关的指标。

您可以通过在 upGrad、Udemy、Coursera 等平台上进行云计算课程来提升您对此类主题的知识,因为该监控工具可以部署在云上。 尤其是upGrad,课程是由我国著名的IIIT-B机构之一设计的。 这将为您提供实践经验和更广泛的知识方面。

退房: Kubernetes 与。 Docker:你应该知道的主要区别

结论

Kubernetes 简化了容器化应用程序和微服务的部署、扩展和管理。 这有助于保持管理运行,但要识别和解决诸如执行缓慢等隐藏问题,您需要有能力从您的情况中积累和想象自上而下的基础应用程序和执行信息。

不接近连续数据以及相关信息,几乎难以对应您的状态测量,因此您也可以更快地解决问题。

如果您想学习和掌握 Kubernetes、DevOps 等,请查看 IIIT-B 和 upGrad 的全栈软件开发计划 PG 文凭。

为未来的职业做准备

行业值得信赖的学习 - 行业认可的认证。
今天报名