5个Kubernetes监控最佳实践
技术
作者:Steven Czerwinski
译者:边天亮
2018-07-05 02:37

如果您奋战在DevOps前线,您可能知道Kubernetes正在迅速成为云生产环境的重要组成部分。 由于容器编排对于部署、扩展和管理Docker化应用程序都至关重要,所以对Kubernetes的监控策略也成为监控策略中很重要的一部分。

容器环境与传统的运维环境不同,当你对应用程序和基础架构监控时,需要考虑如何监控运行它们的容器环境。 以下是五个最佳实践来实现监控策略:

  • 集中日志和指标。 通过Kubernetes协调Docker可以避免服务和工作流负载带来的混乱,但仅仅这样做你的环境仍然是分散的。集中你日志和监控指标,你才有机会实现对于整体环境的监控。
  • 要考虑容器生命周期的短暂性。 容器编排是可以恰到好处的在短时间内启动,停止,杀死以及清理容器。 但是,监控它们可能并不那么容易。 即使服务正在进行,您仍然需要调试问题并监控集群的活动。 诀窍是在日志和指标消失之前获取。 如果你不这样做,你的指标看起来更像左边的图,而不是右边的图。


  • 简化、简化、简化。对于容器环境中的所有活动块(服务、API、容器、编排工具),需要进行监视且不要引入不必要的复杂性。并不是要使用各种监控代理来扩展您的容器,每个监控代理都需要更新自己的时间表,从监控和管理的内容中抽象出监控和管理工具。 这也将帮助工程师专注于构建和交付软件,而不是运行交付平台。
  • 明确监视每一层。 您需要收集日志并监视环境中各层的错误、故障和性能问题(Pod、容器和控制管理器)。 例如,要解决Pod问题,需要确保容器正在运行,并在controller manager中收集运行时指标。
  • 确保整个图层的数据一致性。 为了快速准确的调试,您需要确保容器环境中所有图层的数据一致性。 诸如准确的时间戳,一致的测量单位(例如毫秒数与秒数)以及在应用程序和组件中收集常用的公共度量标准和日志,将帮助您快速准确地对所有层进行故障排除和调试。

简单直接的完成这些监控策略的最佳做法是监视Kubernetes环境中的容器,而不触碰应用程序容器。 通过将DaemonSet或sidecar引入于您的集装箱化服务并列的Kubernetes环境中,并包含您的日志记录和度量收集客户端,来实现此目的。 使用此方法进行部署将确保数据收集的一致性,最大限度地减少应用程序容器所需的更改,最重要的是,消除生产环境中选择的盲目性。

几种实现方法包括:

  • 使用Fluentd日志记录代理引入DaemonSet(这会为您提供日志记录而不是指标)。 如果您已经配置了ELK群集,点击了解更多[1]。
  • 用Prometheus指标代理引入DaemonSet或sidecar(CoreOS在集成Prometheus和Kubernetes方面做得非常出色)。 在您的Kubernetes群集上运行Prometheus将为您提供指标检测,查询和警报,点击了解更多[2]。
  • 各种指标和性能监控工具,包括Heapster、DataDog、cAdvisor、New Relic、Weave / VMware以及其他一些指标和性能监控工具也提供了用于Kubernetes监控的DaemonSet或sidecar选项。

相关链接:

  1. https://docs.fluentd.org/v0.12/articles/kubernetes-fluentd
  2. https://coreos.com/blog/prometheus-and-kubernetes-up-and-running.html

原文链接:https://thenewstack.io/5-kubernetes-monitoring-to-dos/

137 comCount 0