2021-10-21补充:

我通过修改源码来让prometheus支持remote-write,纯属多此一举:

--enable-feature=remote-write-receiver这个命令行参数可以开启remote-write能力,不过写入路径是:/api/v1/write

不过,我仍然保留了原来的代码,并兼容了 /api/v1/receive 这个路径。

之前测试了thanos reveiver的remote write能力,后续又希望thanos reveiver具备更多能力。

既然如此,何不在prometheus的基础上改出支持remote write能力呢?

经过一天,已经成功,请看:https://github.com/ahfuzhang/prometheus-2.29.1

测试

  • 测试环境为:

    • CPU: Intel(R) Xeon(R) Platinum 8361HC CPU @ 2.60GHz, 1核
    • 32GB内存
    • K8S容器环境
  • 在单核跑满的情况下,观测一秒钟可以处理多少个data point
  • 测试中发现,单核极限性能在:2763196/min, 46053/s
  • 平均性能为:33450/s
  • 接口主要延迟在 0-10ms之间
    • 次要延迟在 50-100ms之间

TSDB数据

  • 配置:

    • storage.tsdb.min-block-duration=10m
    • storage.tsdb.max-block-duration=10m
    • storage.tsdb.retention.time=30m
  • data point总数:85506661
  • 内存:20.333GB
  • time series总数:3222668
  • 现象:
    • prometheus并未严格按照10分钟来产生TSDB
    • 当产生新的TSDB后,time series/ head chunks有一定下降,但是不多;内存也有一定下降,大约200MB左右
    • 切换TSDB时,CPU消耗过多,导致remote write处理能力下降48.9%
    • 内存占用与time series的数量正相关,data point的数量影响不大

总结:

  • prometheus支持推模式,起码在部署中多了一个选择
  • 如果单纯看data point的处理能力,thanos reveiver要比prometheus好一些
  • 内存占用上,prometheus和thanos receiver查不太多(可能底层都是同样的TSDB组件导致)

【分享】让prometheus支持PUSH模式,可以使用remote write协议推送数据的更多相关文章

  1. git本地仓库关联多个remote,怎么用本地一个分支向不同remote不同分支推送代码

    我想这个问题,是大家关注的问题,这个问题,我非常关注. 背景:在公司开发项目,我们一般都要把项目推送到公司领导创建的一个远程仓库里边去,但是我们同时也有自己的小仓库,这样的话,如何方便的将我们的代码, ...

  2. Kafka消息是采用Pull模式,还是Push模式?

    Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还push.在这方面,Kafka遵循了一种大部分消息系统共同的传统的 ...

  3. 一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式

    前言 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念 ...

  4. iOS - Push 通知推送

    1.UserNotifications 通知是 App 用来和用户交流的一种方式,特别是当 App 并没有在前台运行的时候.通知,正如它的名称所强调的,被用作向用户'通知'一个事件,或者仅仅向用户提示 ...

  5. Amazon SNS移动推送更新——新增百度云推送和Windows平台支持

    Amazon SNS(Simple Notification Service)是一种基于云平台的消息通知和推送服务. SNS提供简单的 Web 服务接口和基于浏览器的管理控制台让用户可以简易设置.执行 ...

  6. ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知

    一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...

  7. git push & git pull 推送/拉取分支

    git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支. $ git push <远程主机名> <本地分支名& ...

  8. ios远程推送和python版push server相关笔记

    今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...

  9. NET SignaiR 实现消息的推送,并使用Push.js实现通知

    一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...

随机推荐

  1. SpringCloud (一) Eureka

    Eureka Eureka 是一个服务治理组件,它主要包括服务注册和服务发现,主要用来搭建服务注册中心. Eureka 是一个基于 REST 的服务,用来定位服务,进行中间层服务器的负载均衡和故障转移 ...

  2. redis pipeset发布订阅

    #!/usr/bin/env python # Author:Zhangmingda import redis,time pool = redis.ConnectionPool(host='192.1 ...

  3. shiro验证时,当authenticationStrategy为AllSuccessfulStrategy时

    shiro验证时,当authenticationStrategy为AllSuccessfulStrategy时,如果某一个验证出错,那么 PrincipalCollection principalCo ...

  4. 分布式:分布式事务(CAP、两阶段提交、三阶段提交)

    1 关于分布式系统 1.1 介绍 我们常见的单体结构的集中式系统,一般整个项目就是一个独立的应用,所有的模块都聚合在一起.明显的弊端就是不易扩展.发布冗重.服务治理不好做. 所以我们把整个系统拆分成若 ...

  5. JAVA接收postman的中raw的参数

    /** * java获取raw */ public static String readRaw(InputStream inputStream) { String result = "&qu ...

  6. JAVA实现返回0001,0002,0003格式数字

    这里只需要修改 %04d 中的4即可设置生成几位数 /** * 获取下一个编号 * @param startValue 上一个编号 * @return */ public static String ...

  7. js中的jQuery Validate增加手机号码验证

    $.validator.addMethod("isPhone", function(value,element) { var length = value.length; var ...

  8. c++之折半查找(二分查找)递归与非递归的实现

    递归实现 template<typename T> int binary_search2(const T arr[], const int left, const int right, c ...

  9. Android 控件使用教程(三)—— NineGridImageView 九宫格展示图片

    引子 上文降到RecyclerView的使用,确实非常方便易用,而且样式多样,很灵活.但在图像展示时,经常有朋友圈和微博等9张图以内的图片展示需求,这时候,不是一个可以无限下滑的RecyclerVew ...

  10. 【LeetCode】156. Binary Tree Upside Down 解题报告(C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 迭代 日期 题目地址:https://leet ...