【分享】让prometheus支持PUSH模式,可以使用remote write协议推送数据
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协议推送数据的更多相关文章
- git本地仓库关联多个remote,怎么用本地一个分支向不同remote不同分支推送代码
我想这个问题,是大家关注的问题,这个问题,我非常关注. 背景:在公司开发项目,我们一般都要把项目推送到公司领导创建的一个远程仓库里边去,但是我们同时也有自己的小仓库,这样的话,如何方便的将我们的代码, ...
- Kafka消息是采用Pull模式,还是Push模式?
Kafka最初考虑的问题是,customer应该从brokes拉取消息还是brokers将消息推送到consumer,也就是pull还push.在这方面,Kafka遵循了一种大部分消息系统共同的传统的 ...
- 一步步教你用Prometheus搭建实时监控系统系列(二)——详细分析拉取和推送两种不同模式
前言 本系列着重介绍Prometheus以及如何用它和其周边的生态来搭建一套属于自己的实时监控告警平台. 本系列受众对象为初次接触Prometheus的用户,大神勿喷,偏重于操作和实战,但是重要的概念 ...
- iOS - Push 通知推送
1.UserNotifications 通知是 App 用来和用户交流的一种方式,特别是当 App 并没有在前台运行的时候.通知,正如它的名称所强调的,被用作向用户'通知'一个事件,或者仅仅向用户提示 ...
- Amazon SNS移动推送更新——新增百度云推送和Windows平台支持
Amazon SNS(Simple Notification Service)是一种基于云平台的消息通知和推送服务. SNS提供简单的 Web 服务接口和基于浏览器的管理控制台让用户可以简易设置.执行 ...
- ASP.NET SignaiR 实现消息的即时推送,并使用Push.js实现通知
一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...
- git push & git pull 推送/拉取分支
git push与git pull是一对推送/拉取分支的git命令. git push 使用本地的对应分支来更新对应的远程分支. $ git push <远程主机名> <本地分支名& ...
- ios远程推送和python版push server相关笔记
今天研究了下ios的远程推送,网上的相关教程很多,做了一遍下来记录一下遇到的问题和注意事项(转载请注明) 1.证书及乱七八糟的配置 公钥:app id管理那儿的“Development Push SS ...
- NET SignaiR 实现消息的推送,并使用Push.js实现通知
一.使用背景 1. SignalR是什么? ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指 ...
随机推荐
- CF1520D Same Differences 题解
Content 给定 \(n\) 个数 \(a_1,a_2,\dots,a_n\),求有多少个二元组 \((i,j)\) 满足: \(i<j\). \(a_j-a_i=j-i\). 数据范围:\ ...
- CF721B Passwords 题解
Content 有一天,小 V 突然忘记了他在 Codehorses 的网站上的密码.但是他有所有网站上的 \(n\) 个密码 \(\{s_i\}_{i=1}^n\),所以他开始一个一个试.他会先从长 ...
- js Date()获取时间,格式化输出,时间比较大小
1.获取时间并且格式化输出 new Date().toLocaleString('cn',{hour12:false}) //2018/12/6 17:57:15 new Date().toLocal ...
- XMLHttpRequest() 如何预检查CORS跨域请求的?
https://blog.csdn.net/qq_38261174/article/details/90691058
- libevent源码学习(15):信号event的处理
目录信号event处理流程与信号event相关的结构体初始化工作创建一个信号event添加一个信号event信号回调函数信号event的激活 Libevent中的event,主要分为三大类 ...
- 平衡二叉树(c++)实现(存在问题:插入节点后,问题:调整树的结构存在问题)
!!版权声明:本文为博主原创文章,版权归原文作者和博客园共有,谢绝任何形式的 转载!! 作者:mohist 更新那时间: 22:13 03-02-2020 逻辑存在问题:插入节点后,调整数的结构不 ...
- 【LeetCode】945. Minimum Increment to Make Array Unique 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 暴力求解,TLE 一次遍历 日期 题目地址:http ...
- 【C++】关键字回忆leetcode题解
20200515 前缀和 no.560 20200518 动态规划 no.152 20200520 状态压缩 no.1371 20200521 中心扩散 no.5 20200523 滑动窗口 no.7 ...
- Java程序设计基础笔记 • 【第5章 循环结构】
全部章节 >>>> 本章目录 5.1 while循环结构 5.1.1 循环简介 5.1.2 while循环 5.1.3 while循环的使用 5.1.4 while循环的注 ...
- MySQL数据库基础(1)数据库基础
目录 一.数据库简介 二.mysql数据库 三.客户端连接mysql服务 四.Navicat for mysql 一.数据库简介 1.概念 (1)数据:如文字.图形.图像.声音以及学生的档案记录等,这 ...