对于监控,你可能会说:“这能有多难?我们一直在监控系统。”没错,一些典型的监控模式在今天看来依然适用。但区别在于Kubernetes这样的平台更加瞬息万变,你需要转换监控这类环境的思路。例如,在监控虚拟机时,你期望它能7×24运行并且保存所有状态。而在Kubernetes中,Pod是非常动态和短暂的,你需要进行适当的监控以应对这种动态和短暂的特性。
在监控分布式系统时,有两种不同的监控模式需要关注。
由Brendan Gregg推广的USE方法关注以下3个方面:
该方法专注于基础设施监控,因为将其用于监控应用程序存在若干限制。USE具体是指“对每一种资源,检查其利用率、饱和度和错误率”。它可以让你快速确定系统的资源限制和错误率。例如,为了检查集群中节点的网络健康状况,需要监控资源利用率、饱和度以及系统错误率,以快速定位网络瓶颈或网络堆栈中的错误。此外,USE方法只是庞大工具箱中的一员,它并不是用来监控系统的唯一方法。
另一种监控模式是由Tom Willke所推崇的RED方法,它关注以下3个方面:
这一理念来自谷歌的4个黄金指标:
例如,可以使用此方式监控一个在Kubernetes中运行的前端服务,以计算以下指标:
如上例所示,这种方式更关注用户在使用系统时的体验。
USE和RED互为补充,USE关注基础设施组件,而RED侧重于监控应用的终端用户体验。