prometheus的remote write功能
处理逻辑
prometheus配置了remote write的目标地址后,它会从WAL读取数据,然后把采样数据写入各分片的内存队列,最后发起向远程目标地址的请求。
数据流的逻辑大致如下:
|--> queue (shard_1) --> remote endpoint
WAL --|--> queue (shard_...) --> remote endpoint|--> queue (shard_n) --> remote endpoint
需要注意的是:WAL是每两小时压缩一次,如果远程写入的目标地址挂了超过两个小时,就会导致这段时间没被发送的数据丢失。如果远程写入的目标地址无响应时间较短(两小时以内),prometheus是会重试的,这种情况不会造成数据丢失。
当一个分片的队列被塞满时,promtheus将阻塞继续从WAL读取数据到任意分片。
在操作过程中,prometheus根据以下条件来持续计算要是用的最佳的分片数:
- 摄入样本的速率(incoming sample rate)
- 还未发送的样本数量(number of outstanding samples not sent)
- 发送每个样本的时间(time taken to send each sample)
内存的使用
当开启remote write功能后,prometheus内存的消耗是会上涨的。大部分反馈会上涨约25%的内存消耗,但实际数据取决于数据的分片。
对于WAL中的每一个series,远程写功能会缓存一个series ID到标签值的映射,这会导致内存消耗的大量增加。
除此之外,每个分片和其队列也增加了内存的使用。分片内存与 number of shards * (capacity + max_samples_per_send)
成正比。默认的capacity
和max_samples_per_send
将限制每个分片的内存使用小于100KB。
相关参数
remote write的相关参数在queue_config
配置块
# Configures the queue used to write to remote storage.
queue_config:# Number of samples to buffer per shard before we block reading of more# samples from the WAL. It is recommended to have enough capacity in each# shard to buffer several requests to keep throughput up while processing# occasional slow remote requests.[ capacity: <int> | default = 500 ]# Maximum number of shards, i.e. amount of concurrency.[ max_shards: <int> | default = 1000 ]# Minimum number of shards, i.e. amount of concurrency.[ min_shards: <int> | default = 1 ]# Maximum number of samples per send.[ max_samples_per_send: <int> | default = 100]# Maximum time a sample will wait in buffer.[ batch_send_deadline: <duration> | default = 5s ]# Initial retry delay. Gets doubled for every retry.[ min_backoff: <duration> | default = 30ms ]# Maximum retry delay.[ max_backoff: <duration> | default = 100ms ]
capacity
用来指定每个分片队列可容纳的样本数上限。当队列达到上限后,将停止从WAL读数据。
通过设大capacity可以避免分片的阻塞,但是会导致过多的内存消耗,以及resharing时清空队列所需要的时间。
推荐是将capacity设为max_samples_per_send
的3到10倍。
max_shards
用来指定最大的分片数。当队列落后远程写模块时,prometheus将增加分片数直到最大值,来增加吞吐量。
min_shards
用来指定最小的分片数。这个参数对于大多数使用者来说不需要调整,因为当远程写落后时,prometheus会自动增加分片数。
max_samples_per_send
用来指定每次批量发送给远程写目标地址的最大samples数。如果远程写地址的后端服务,处理能力有限,或对每次处理的samples数有上限,则可以考虑设小次参数。
batch_send_deadline
指定发送一个远程写请求的最大等待时间。简单的说,,batch_send_deadline和max_samples_per_send这两个参数,有一个先达到,都会发起一个远程写请求。
min_backoff
指定当请求失败时,发起重试的最小时间间隔。增加这个值,可以使重试间隔时间更分散。每次重试后,下次重试的间隔时间将翻倍,直到达到max_backoff。
max_backoff
指定重试间隔的最大时间。
官方文档:https://prometheus.io/docs/practices/remote_write/
prometheus的remote write功能相关推荐
- 华三ap设置无线服务器,H3C无线控制器实现Remote AP功能典型配置举例(V7)
1.配置AC (1)配置AC的接口 #创建VLAN 100及其对应的VLAN接口,并为该接口配置IP地址192.1.0.1/16.AP将获取该IP地址与AC建立CAPWAP隧道. system-vie ...
- 使用vscode remote ssh功能远程连接服务器或树莓派时,报错Setting up SSH tunnel的终极解决办法,全网仅此一份
当你想用vscode remote ssh 功能远程开发linux服务器.树莓派时,.vscode-server文件创建完成,但是一直显示卡在 Setting up SSH Host <你的用户 ...
- KubeSphere 内置的 Prometheus 通过 remote write 至 Thanos 存更长期数据
KubeSphere 内置的 Prometheus 通过 remote write 至 Thanos 存长期数据 1.方案介绍 2.场景 3.架构设计 4.实践验证 4.1 环境准备 4.2 实验环境 ...
- [Reomting Debug] 巧用VS 的remote debug 功能远程调试程序 经验分享.
前言: 有时候我们Dev(开发人员)需要debug tester(测试人员)或者customer(客户)的环境,可tester的机器上没有Code,是不是有点着急? 而且是多版本应用且tester ...
- Prometheus + Grafana 实现监控功能总结
一个简洁的博客网站:http://lss-coding.top,欢迎大家来访 学习娱乐导航页:http://miss123.top/ 1. Prometheus 简介 Prometheus 是近几年比 ...
- Prometheus 有瓶颈?怎么打造企业级监控系统?
欢迎关注方志朋的博客,回复"666"获面试宝典 来源 | https://cloud.tencent.com/developer/article/1690227 Thanos[1] ...
- 基于 Prometheus 的监控系统实践
监控作为底层基础设施的一环,是保障生产环境服务稳定性不可或缺的一部分,线上问题从发现到定位再到解决,通过监控和告警手段可以有效地覆盖了「发现」和「定位」,甚至可以通过故障自愈等手段实现解决,服务开发和 ...
- 全面学习Prometheus
Prometheus是继Kubernetes后第2个正式加入CNCF基金会的项目,容器和云原生领域事实的监控标准解决方案.在这次分享将从Prometheus的基础说起,学习和了解Prometheus强 ...
- 一文详解 Prometheus 的高可用方案:Thanos
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 背景 在高可用 prometheus:问题集锦文章中有简单提到 Prome ...
- 网易云基于Prometheus的微服务监控实践
当监控遇上微服务 在过去数年里,微服务的落地一直都是业界重点关注的问题,其始终面临着部署.监控.配置和治理等方面的挑战.轻舟微服务平台是网易云为企业提供的一套微服务解决方案,其中微服务监控是其关注的重 ...
最新文章
- CentOS7下搭建Nginx+PHP7的安装配置
- 以下关于java中布局管理说法错误的是_对于 Java 中的布局管理器,以下说法中错误的是( )。_2019复习答案_学小易找答案...
- C 语言运算符优先级(记忆口诀)
- 记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
- docker 提交自定义镜像
- 定义一个Employee类并排序(完整版本)
- Acad::ErrorStatus
- 我的世界java版地牢种子_我的世界手机版地牢种子代码汇总
- [luogu3369]普通平衡树(替罪羊树模板)
- matlab 数值积分 截断误差,几种数值积分算法误差分析(10页)-原创力文档
- 【实用】Word如何转换成PDF格式,文件转换三步免费搞定
- 途家民宿VS木鸟民宿:民宿APP功能体验
- 【Linux】/bin/sh、/bin/bash、/bin/dash、init=/sysroot/bin/bash(sh) 、init=/bin/bash(sh) 的区别
- office服务器草稿位置,精确定位图片在Word文档中的位置的操作方法
- Datax-web版安装(含安装包)
- 2.2 法力池的创建和视觉特效———自制卡牌游戏之旅
- java smb删除指定文件,java 利用SMB向远道机器写文件
- Pandas二次学习- 回炉重造(进阶)
- c语言 原子 字符串,Atomic operations library(原子操作库)
- 如何阅读一个前向推理框架?以NCNN为例。
热门文章
- CSDN产品周报第31期|PC端开放账号注销功能
- ArcGIS中.shp矢量文件和.lyr图层文件的区别
- 上海南京路步行街向全球征集标识Logo及吉祥物设计
- 室内可见光定位matlab代码,visible-led-communication 这里给出了几个可见光通信的MATLAB程序...
- 神威太湖之光超级计算机搭载了40960,神威·太湖之光超级计算机上实现了千万核超大规模并行计算...
- autojs指纹验证
- VendorNPC.lua --随身商人
- Matlab动态PID仿真及PID知识梳理
- 剑指offer_3 -- 构建乘积数组
- 使用EndNote对Word论文的参考文献进行管理