前言

前面我们一直在做prometheus的远程存储的工作,一直缺乏一种大厂背书的解决方案。具体可能有下面的几点:

  • 大厂背书且开源
  • 可承接大规模海量metrics
  • 非weave cortex这种对prometheus原有方案改动特别大,即可以单独升级prometheus。

可喜可贺,Uber开源了他们针对prometheus存储解决方案M3,包括诸多组件。

M3

摘要

为了促进优步全球运营的发展,我们需要能够在任何特定时间快速存储和访问我们后端系统上的数十亿个指标。作为我们强大且可扩展的指标基础架构的一部分,我们构建了M3,这是一个已在优步使用多年的指标平台。
M3可以在较长的保留时间内可靠地存储大规模指标。为了向更广泛的社区中的其他人提供这些好处,我们决定开放M3平台作为Prometheus的远程存储后端,Prometheus是一种流行的监控和警报解决方案。正如其文档所述,Prometheus的可扩展性和耐用性受到单个节点的限制。 M3平台旨在为Prometheus指标提供安全,可扩展且可配置的多租户的存储。

M3于2015年发布,目前拥有超过66亿个时间序列。 M3每秒聚合5亿个指标,并在全球范围内(使用M3DB)每秒持续存储2000万个度量指标,批量写入将每个指标持久保存到区域中的三个副本。它还允许工程师编写度量策略,告诉M3以更短或更长的保留时间(两天,一个月,六个月,一年,三年,五年等)以特定的粒度(一秒,十秒,一分钟,十分钟等)。这允许工程师和数据科学家使用与定义的存储策略匹配的度量标签(标签),在精细和粗粒度范围内智能地存储不同保留的时间序列。例如,工程师可以选择存储“应用程序”标记为“mobile_api”且“端点”标记为“注册”的所有度量标准,这些标记在10秒粒度下为30天,在一小时粒度下为5年。

PS:uber的metrcis的数量可以说是海量级别。该方案满足前言提到的几点要求。

多区域查询示意图

图片描述

集群架构

图片描述

组件介绍

M3 Coordinator

M3 Coordinator是一种服务,用于协调上游系统(如Prometheus和M3DB)之间的读写操作。它是用户可以部署以访问M3DB的优势的桥梁,例如长期存储和与其他监控系统(如Prometheus)的多DC设置。

M3DB

M3DB是一个分布式时间序列数据库,提供可扩展存储和时间序列的反向索引。它经过优化,具有成本效益和可靠的实时和长期保留指标存储和索引

M3 Query

M3 Query是一种服务,它包含一个分布式查询引擎,用于查询实时和历史指标,支持多种不同的查询语言。它旨在支持低延迟实时查询和可能需要更长时间执行的查询,聚合更大的数据集,用于分析用例

M3 Aggregator

M3 Aggregator是一种作为专用度量聚合器运行的服务,它基于存储在etcd中的动态规则提供基于流的下采样。它使用领导者选举和聚合窗口跟踪,利用etcd来管理此状态,从而可靠地为低采样度量标准发送至少一次聚合到长期存储。这提供了成本有效且可靠的下采样和汇总指标。这些功能也存在于M3协调器中,但专用聚合器是分片和复制的,而M3协调器则不需要并且需要谨慎部署和以高可用性方式运行。还有一些工作要使用户更容易访问聚合器,而无需他们编写自己的兼容生产者和消费者。

与 prometheus 集成

架构示例

图片描述

M3 Coordinator 配置

要写入远程M3DB集群,最简单的配置是将m3coordinator作为旁边的Prometheus运行。

首先下载配置模板。更新新群集的命名空间和客户端部分以匹配群集的配置。

您需要指定M3DB种子节点的静态IP或主机名,以及您设置的命名空间的名称和保留值。您可以将命名空间存储指标类型保留为未聚合,因为默认情况下需要具有一个接收所有未聚合的Prometheus指标的集群。在将来,您可能还希望聚合和缩减采样指标以实现更长的保留期,并且您可以在设置这些群集后返回并更新配置。

listenAddress: 0.0.0.0:7201metrics:scope:prefix: "coordinator"prometheus:handlerPath: /metricslistenAddress: 0.0.0.0:7203 # until https://github.com/m3db/m3/issues/682 is resolvedsanitization: prometheussamplingRate: 1.0extended: noneclusters:- namespaces:
# We created a namespace called "default" and had set it to retention "48h".- namespace: defaultretention: 48hstorageMetricsType: unaggregatedclient:config:service:env: default_envzone: embeddedservice: m3dbcacheDir: /var/lib/m3kvetcdClusters:- zone: embeddedendpoints:
# We have five M3DB nodes but only three are seed nodes, they are listed here.- M3DB_NODE_01_STATIC_IP_ADDRESS:2379- M3DB_NODE_02_STATIC_IP_ADDRESS:2379- M3DB_NODE_03_STATIC_IP_ADDRESS:2379writeConsistencyLevel: majorityreadConsistencyLevel: unstrict_majoritywriteTimeout: 10sfetchTimeout: 15sconnectTimeout: 20swriteRetry:initialBackoff: 500msbackoffFactor: 3maxRetries: 2jitter: truefetchRetry:initialBackoff: 500msbackoffFactor: 2maxRetries: 3jitter: truebackgroundHealthCheckFailLimit: 4backgroundHealthCheckFailThrottleFactor: 0.5

Prometheus 配置

remote_read:- url: "http://localhost:7201/api/v1/prom/remote/read"# To test reading even when local Prometheus has the dataread_recent: true
remote_write:- url: "http://localhost:7201/api/v1/prom/remote/write"

总结

先简单介绍一下,后续再进行demo,测试,源码解读等其他工作。

Prometheus实战--Uber背书的存储解决方案M3相关推荐

  1. 实战互联网公司数据存储解决方案

    实战互联网公司数据存储解决方案 参考文章: (1)实战互联网公司数据存储解决方案 (2)https://www.cnblogs.com/tanhualang/p/9283576.html 备忘一下.

  2. 大数据_湖仓一体:下一代存储解决方案

    目录 一.什么是湖仓一体 二.湖仓一体架构的特点 三.常见框架 1.Apache Hudi 2.Apache Iceberg 3.Delta Lake 数据库早已解决了数据问题,但无法满足现代使用场景 ...

  3. 如何选择最佳存储解决方案

    在构建系统时要进行设计考虑和权衡. 1.介绍 要选择正确的存储解决方案,需要以下考虑. 关键因素 数据结构 查询模式 您需要处理的数量或规模 2.缓存解决方案 如果您经常调用数据库或远程调用具有高延迟 ...

  4. 我的存储解决方案理论

    2019独角兽企业重金招聘Python工程师标准>>> 当今世界的存储方式随着时代的发展变得越来约多样化,从石头山壳写,到纸张上书写,再到磁带,到光碟,到软盘,机械硬盘,U盘,固态硬 ...

  5. Infortrend推出超大容量存储解决方案

       随着数据爆炸性成长,各行各业都离不开对数字的存储.特别对于某些企业,如何存储庞大的数据是让人非常头痛的事情.Infortrend公司推出海量集存储系统,整合了存储产品的高扩展性.易管理性而设计制 ...

  6. 【翻译】HTML5开发——轻量级JSON存储解决方案Lawnchair.js

    [翻译]HTML5开发--轻量级JSON存储解决方案Lawnchair.js 参考文章: (1)[翻译]HTML5开发--轻量级JSON存储解决方案Lawnchair.js (2)https://ww ...

  7. 深度解析企业级存储解决方案

    随着企业不断地发展壮大,如何有效的管理企业日益增长的数据信息已经是很多中小企业所不得不面临的难题了,所以升级企业数据存储能力或制定一套完善的数据存储备份方案势在必行,不可或缺.那么这里就产生了我们所说 ...

  8. 【转载】ceph作为OpenStack的后端存储解决方案

    Piston Cloud Computing公司介绍 Piston Cloud Computing,inc 是一间建立于2011年的软件公司.主要创始人原来都是OpenStack的创建者,包括前NAS ...

  9. CDN视频存储解决方案

    一. 方案背景 高清.超高清视频的蓬勃发展,用户对高品质视频体验的渴望,对网络的并发处理和内容平台的存储能力提出了更高的要求.作为产业链的重要一环,CDN(内容分发网络)进入规范发展快车道.CDN的快 ...

最新文章

  1. TVM性能评估分析(五)
  2. JS自动插入分号机制ASI
  3. Linux umount 报 device is busy 的处理方法
  4. 跳槽,你心脚同步吗?
  5. 黑客使用合法工具接管 Docker 和 Kubernetes 平台
  6. ML之kNN(两种):基于两种kNN(平均回归、加权回归)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
  7. Acwing第 38 场周赛【完结】
  8. 一、MySQL数据库基础
  9. 复习上学期的HTML+CSS(1)
  10. Linux执行命令unable to create new native thread问题
  11. Wordpress如何打开调试模式
  12. 使用协同过滤推荐电影
  13. Intellij IDEA 测试scala程序的时候: Test is already defined as object Test
  14. iview的select联动_render函数渲染的iview中的Select组件如何联动?
  15. 差异基因p为0_【i春秋杯网络安全联赛WriteUp】为逆行者加油
  16. python爬取快手视频_【原创开源】快手爬虫,根据id批量爬取用户的所有图集和视频...
  17. XTU 1205 Range
  18. Anomalies,Factors,andMultiFactorModels
  19. C语言练习-[1005]温度转换
  20. linux下ssh、scp无密钥登陆方法

热门文章

  1. OMA DRM 1.0 – OMA Download 框架
  2. 计算机报名入口官网登录一级,一级计算机考试报名入口诚信互利
  3. 可擦写光盘不能擦除和刻写_哪种更适合?三种可擦写刻录盘方案PK
  4. 两台电脑连接时,A电脑可以ping通B电脑,而B电脑pingA电脑时出现超时问题,解决:
  5. 使用schrodinger建立深度学习QSAR模型
  6. 华硕飞行堡垒6 U盘安装win10系统步骤:
  7. tableau:表计算
  8. iOS 10权限设置
  9. Unresolved reference ‘sklearn‘问题|scikit-learn包安装
  10. mysql存储过程变量定义_存储过程中MySQL变量定义和赋值