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. MySQL 定时器

    mysql定时器是系统给提供了event,而oracle里面的定时器是系统给提供的job.废话少说,下面创建表:create table mytable (id int auto_increment ...

  2. More Effective C++ 基础议题(条款1-4)总结

    More Effective C++ 基础议题(条款1-4)总结 条款1:仔细区别pointers和references 如果有一个变量,其目的是用来指向(代表)另一个对象,但是也有可能它不指向(代表 ...

  3. JAVA中CountDownLatch的简单示例

    public static void main(String[] args) throws InterruptedException { CountDownLatch latch =new Count ...

  4. Mybatis批量插入写法

    <insert id="insertBatchList"> INSERT INTO tag ( `tag_name`, `tag_weight`, ) VALUES & ...

  5. GCD (hdu 5726)

    GCD Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submis ...

  6. 湫湫系列故事——消灭兔子(hdu4544)

    湫湫系列故事--消灭兔子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Tota ...

  7. 1018 - Brush (IV)

    1018 - Brush (IV)    PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB Muba ...

  8. Docker 与 K8S学习笔记(四)—— Dockerfile的编写

    在上一篇中我们简单介绍了Docker镜像的获取与使用,其中在镜像制作中提到在实际使用中一定要用Dockerfile方式去创建镜像而不要用docker commit方式,那么我们该如何编写Dockerf ...

  9. Python原生数据结构增强模块collections

    collections简介 python提供了4种基本的数据结构:list.tuple.dict.set.基本数据结构完全可以hold住所有的场景,但是在处理数据结构复杂的场景时,这4种数据结构有时会 ...

  10. k8s env、configmap、secret外部数据加载配置

    K8s提供了多种外部数据注入容器的方式,今天我们主要学习环境变量.ConfigMap以及Secret的使用和配置. 环境变量 在docker项目中,对一个容器添加环境变量可以在容器创建时通过-e EN ...