如何监控和警报容器的抖动

87次阅读
没有评论

问题描述

想知道有没有关于如何监控容器抖动的最佳实践。他们的情况是,有些容器可能会尝试启动并在没有任何人注意的情况下崩溃->重新启动几十次。然而,容器的短暂性是”正常”的,所以追踪这种异常似乎很困难(如果你的工作负载确实只有30秒怎么办?)他想知道是否有任何”足够好”的警报实践,用于跟踪不健康的重启和健康的重启。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

原则

无论容器是否短暂,以下两个指标都可以考虑为”不正常”:
– 非零退出代码
– 编排层的重启计数 > 0
如何在这些指标上进行警报将因编排层、提供商和监控工具而异。下面是关于这些原则的讨论:

非零退出代码

这个原则似乎很明显。如果你有一个短暂的工作负载,请确保它能够正常退出,这样你就可以监控容器的健康状况。即使你的短暂工作负载只持续30秒,并且你启动了成千上万个这样的工作负载(类似小型短暂的工作进程),只要一切正常退出,就没有什么可担心的。

编排层的重启计数

大多数编排层都会公开一个重启计数。对于Kubernetes来说,这就是描述一个Pod时的’Restart Count’指标。这些重启是编排层重新启动容器的结果,因为它不应该处于”停止”状态,但实际上却是。短暂的工作负载不会有重启计数,因为它们的本质如此(或者如果有,当工作负载完成时,”最终”关闭容器不会导致重启)。
无论你是想在重启计数超过某个阈值时立即发出警报,还是想更聪明地计算一个速率(大致为:重启计数/ Pod/服务持续时间),都取决于你自己。

ECS中的重启计数

ECS中的’Service’和’Task’抽象都提供了有见地的信息。
– Service: 事件和故障
– Task: 健康状态和故障

这个页面https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_event_stream.html提供了有关如何流式传输ECS事件的更多信息,以便您可以以自动化的方式使用它们。

值得一提的是,我个人过去使用过Prometheus ECS Exporter,并且我正在使用它暴露的指标进行警报。

正文完