V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
caicloud2015
V2EX  ›  云计算

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

  •  
  •   caicloud2015 · 2016-12-08 11:16:34 +08:00 · 2435 次点击
    这是一个创建于 2890 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    在伦敦那场 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-2016

    《运行 Prometheus 和 Kubernetes 》—— Fabian Reinartz

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

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

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

    背景

    五月份,继第一个项目 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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3608 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 00:45 · PVG 08:45 · LAX 16:45 · JFK 19:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.