Prometheus 携手 Kubernetes 提高开发速度,加速攀登行业高峰

原文做者 Tom Wilkie 简介:Tom Wikie,现居伦敦。曾就任于 Citrix Systems;以后联合创办 Acunu,并出任 CTO;再后来在 Google 出任 Site Reliability Manager;现于 Weaveworks 任项目工程总监。本文是他在尝试将 Prometheus 与 Kubernetes 进行结合使用后发表的文章。html

在伦敦那场 Meetup 上,我作过一个“Weaveworks 使用 Prometheus 来管理 Weave 云(Weave 云运行在 Kubernetes 集群上)”的演讲(PPT 分享连接:http://www.slideshare.net/weaveworks/kubernetes-and-prometheus)。在这篇帖子中,我会分享咱们在过去 6 个月的开发过程的实践,同时也会分享一些很棒的工具,对 Weave 云进行弹性扩容。服务器

Prometheus 并不是很新的项目,最近社区内的一些成员也贡献了不少优秀的帖子:网络

《用 Prometheus 监控 Kubernetes》——Brian Brazil架构

(连接:http://www.slideshare.net/brianbrazil/monitoring-kubernetes-with-prometheus-kubernetes-ireland-2016ide

《运行 Prometheus 和 Kubernetes》——Fabian Reinartz微服务

(连接:https://coreos.com/blog/prometheus-and-kubernetes-up-and-running.html工具

《用 Kubernetes 监控基于 Kubernetes 的微服务架构》—— Fabian Reinartzoop

(连接:https://devops.jaxlondon.com/wp-content/uploads/2016/05/Monitoring-a-Kubernetes-backed-microservice-architecture-with-Prometheus_Fabian-Reinartz-Bj%C3%B6rn-Rabenstein.pdf测试

背景spa

五月份,继第一个项目 Kubernetes 以后,CNCF(Cloud Native Computing Foundation)将 Prometheus 项目也收入囊中。在 Prometheus 发布初版以后,一如 Björn Rabenstein(SoundCloud 核心开发人员)在 JaxEnter 上描述的那样:Prometheus 和 Kubernetes 有着一样的起源。

首先,他们都流着 Google 的血液:Kubernetes 起源于 Google 项目 Borg,Prometheus 起源于 Google 项目 Borgmon。可是它们二者之间还有一层更深的“羁绊”——Prometheus 有几个很关键的设计,可使 Prometheus 成为最好的监控系统(针对你的基础设施和部署在 Kubernetes 上的应用来讲)。

Pulling 和 Discovery

Prometheus 是一个基于 pull 的监控系统,主要的 Prometheus 服务器会从你的 service 发现和拉取参数。这个发现和拉取系统跟动态的云本地环境(好比 Kubernetes)十分匹配,在这个云本地环境,Prometheus 跟 Kubernetes 整合在一块儿来发现、列举你正在运行的 service。随着 service 的放大,Prometheus 开始自动从额外的 replicas 拉取参数。一样的道理,节点运行失败,而后 pod 在不一样的节点上从新启动,Prometheus 会自动注意到,而且进行梳理。在咱们的起步阶段,一样的 Prometheus 配置被用于咱们的开发和产品环境,大大简化了测试。

标签

Prometheus 和 Kubernetes 中标签(键值对)的概念是同样的:用于在系统内挑选对象。Prometheus 用这些标签来识别时序数据,用一系列的匹配标签在查询语言(PromQL)中挑选时序数据。

Kubernetes 在不少地方都使用标签。好比,要挑选 Pod 来组成 service,或者启用更加先进的工做流,例如 canarying。经过分享这个广泛的概念,Prometheus 和 Kubernetes 结合能够为开发人员带来较低的认知负荷。

Exporters 和 Pod

Prometheus 的最佳实践就是本地指导你的 service(service 是 Kuberentes 的一个组件)。可是对于不是本地指导的 service 来讲(好比 Memcached,Postgres 等等),有可能的话,仍是使用 exporter 比较好。Exporter 是一个进程,跟你的 service 一块儿运行,将 service 的参数翻译成 Prometheus 可以理解的格式。

Kubernetes 有一个概念叫作 Pod(就是容器组),是一个便于管理和调度的单元。Pod 是一个包含了多个容器的容器组,共享网络 namespace,使用 loopback 定位(localhost/127.0.0.1)就能够进行互相定位。Pod 提供完美的抽象层,跟你想要监控的 service 结合一块儿部署 exporters。

Prometheus 和 Kubernetes:完美结合!

Prometheus 部署在 Kubernetes 的监控有了上述几个特性以后,不只用起来简单方便,并且连贯统一。

以后,咱们还会再发布一些帖子,内容主要是在 Kubernetes 上部署 Prometheus 的一些经验和教训。咱们会在帖子中具体描述咱们是如何用 Prometheus 管理咱们的 service 和基础设施,以及咱们是如何使用 Prometheus 来加快开发进程。

 

原文连接:https://www.weave.works/prometheus-kubernetes-perfect-match

相关文章
相关标签/搜索