专栏首页CNCFPrometheus在京东开源项目ChubaoFS中的使用

Prometheus在京东开源项目ChubaoFS中的使用

在我的印象中,普罗米希修斯是古希腊神话中的最具智慧之神,不仅创造了人类,还给人类带来了火。同样Prometheus项目也是非常优秀的项目,很早就引起了我们的兴趣,在近期ChubaoFS项目中,我们也启用了Prometheus作为其监控系统。

Prometheus 项目是由前Google员工发布的新一代的云原生监控系统,2016年5月正式加入CNCF基金会的项目,是第二个CNCF的毕业项目。我们的新开源项目ChubaoFS,是一个云原生分布式文件系统,主要用来解决云原生环境(如Kubernetes)的可靠文件存储问题,同时提供高性能、可扩展的功能,实现计算与存储分离。对于已经服务于京东100多个应用以及在线业务的ChubaoFS来说,一个优秀高效的监控系统是十分重要的。

我们之前使用过其他一些监控方案,包括:influxdb 、jmxtrance、zabbix等, 其中influxdb 并不完全开源,jmxtrance主要用于java项目数据采集,zabbix的集群扩展性能不足,最终我们选择了Prometheus 方案 。相较于前面几种监控方案,Prometheus 提供了更好的监控框架、开发接口及其云原生特性。另外Prometheus 托管在CNCF中,对我们很重要。因为CNCF是一个中立的机构,这样我们也不用担心lock-in于限定的vendor中。CNCF开放的管理和广泛的行业参与,保证了我们更放心的参与到CNCF技术开发和使用中,在保障权利的同时,极大促进相关技术的发展。同时Prometheus也是 cloud-native的,它提供了一种更便捷、高效地资源组织和使用方式,让部署和维护变得更简单,便于资源的动态伸缩及可靠服务,大大提升了开发、交付、运维系列流程效率,让我们在软件开发中更关注应用逻辑本身,从而让开发更加高效。

在调研与评估技术方案的过程中,我们发现Prometheus有如下特点,正式因为这些特性,让我们对Prometheus更有信心了。

  • 易于部署:单一二进制文件,部署简单
  • 高效数据模型:监控指标以时序序列保存在存储中,并可灵活设置标签来对数据不同维度进行区分;
  • 高效查询功能:内置的PromQL支持查询、聚合、过滤等复杂操作,可实现高效的查询;
  • 易于扩展:支持分区和联邦集群部署,并可结合Thanos实现分布式部署;
  • 易于集成:支持多种语言SDK,拥有大量第三方集成模块,可方便与第三方系统进行集成

在京东,我们的基础设施是部署在Kubernetes集群中的,而Prometheus天然的K8s生态优势,帮助我们更好的将监控应用于生产环境。能够做到支持滚动更新和升级,分钟级迁移,无停机维护等。

联邦(Federate)集群

每一个Prometheus Server都包含一个/federate的接口,可用来获取当前节点中的监控数据。因此可通过该接口对整个Prometheus集群进行拆分组合,建立分级节点,以做到集群的扩展,此模式称为联邦模式。他可以方便扩展,同时部署方式比较灵活。

我们发现使用Prometheus自带的联邦集群功能对监控集群进行扩展,当被监控集群节点过多时,联邦集群的根节点还是会因为内存消耗过多而被容器给kill掉,导致集群规模无法横向扩展。后来我们结合Thanos解决了这个问题。

Prometheus + Thanos + Grafana 监控方案

此部署方案如下:Prometheus node 使用hashmod 对 ChubaoFS node IP进行分区,保证每个Prometheus node 能均衡采集被监控节点数量。前端通过Thanos 聚合Grafana查询请求,统一获取整个集群的监控指标。联邦集群扩展还有一些问题,内存容易打满,导致宕机,Thanos提供了一种分布式部署的模式解决方案,从而可以达到容易扩展的效果。

作者简介:

张丽颖:CNCF Ambassador,京东技术架构部产品经理, 开源项目ChubaoFS的 contributor。


本文分享自微信公众号 - CNCF(lf_cncf),作者:张丽颖

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Cortex:多租户、可横向扩展的Prometheus即服务

    Prometheus是用于监控和可观察性的标准开源解决方案之一。 Prometheus于2012年起源于SoundCloud,迅速获得广泛采用,后来成为首批CN...

    CNCF
  • 使用Prometheus Operator监控集群

    据Sysdig发布的容器报告,容器以及如Kubernetes等编排工具的使用增长了51%以上,大家开始将工作负载在集群中进行托管并管理。鉴于集群中短暂的状态,对...

    CNCF
  • Prometheus用户分享:Presslabs

    继续我们对Prometheus用户的一系列访谈,来自Presslabs的Mile Rosu谈到了他们的监控之旅。

    CNCF
  • 如何扩展单个Prometheus实现近万Kubernetes集群监控?

    作者黄雷,腾讯云工程师,曾负责构建腾讯云云监控新一代多维业务监控系统,擅长大规模分布式监控系统设计,对golang后台项目架构设计有较深理解,后加入TKE团队...

    腾讯云原生
  • java应用监控之prometheus核心组件

    上一篇我们对prometheus做了一个简单的介绍,介绍了prometheus的优势以及和其他监控系统的对比,今天分享一下prometheus的核心组件。

    用户4361942
  • Bootstrap

    Bootstrap是一个用于快速开发Web应用程序和网站的前端框架。 Bootstrap支持响应式布局!响应式布局指的是一个网站能够兼容多种终端设备访问!. 终...

    eadela
  • Vue.js 2.0 学习重点记录

    Vue.js兼容性 Vue.js.js 不支持 IE8 及其以下版本,因为 Vue.js.js 使用了 IE8 不能模拟的 ECMAScript 5 特性。 V...

    蓓蕾心晴
  • 一文搞懂Prometheus、Grafana(含腾讯云上实战)

    通常来说,对于一个运行时的复杂系统,如果系统出了问题是很难排查的。因为你是不太可能在运行时一边检查代码一边调试的。因此,你需要在各种关键点加上监控,通过监控获取...

    catOfZpp
  • 读源码——JDK动态代理

    在 java 中,动态代理算的上是底层架构的发动机。最熟悉的包括 Spring 的 aop、rpc 的实现中也都少不了它的影子。所以,从源码的角度对 jdk 实...

    早安嵩骏
  • [python从入门到放弃]手边没稿纸推公式sympy

    sympy是一个非常好用的基于python的符号计算库,科技做微分、积分、极限等一系列高等数学运算。

    周星星9527

扫码关注云+社区

领取腾讯云代金券