惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
T
Threatpost
N
News and Events Feed by Topic
PCI Perspectives
PCI Perspectives
V2EX - 技术
V2EX - 技术
D
Docker
G
Google Developers Blog
Microsoft Security Blog
Microsoft Security Blog
N
News and Events Feed by Topic
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google Online Security Blog
Google Online Security Blog
The GitHub Blog
The GitHub Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Y
Y Combinator Blog
M
MIT News - Artificial intelligence
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
T
Troy Hunt's Blog
Webroot Blog
Webroot Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
Apple Machine Learning Research
Apple Machine Learning Research
H
Help Net Security
F
Full Disclosure
B
Blog
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
Google DeepMind News
Google DeepMind News
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
Forbes - Security
Forbes - Security
Know Your Adversary
Know Your Adversary
B
Blog RSS Feed
MongoDB | Blog
MongoDB | Blog
Scott Helme
Scott Helme
T
The Exploit Database - CXSecurity.com
博客园 - 聂微东
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
Recorded Future
Recorded Future
IT之家
IT之家
Project Zero
Project Zero
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
SecWiki News
SecWiki News
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

Hi,I`m lan

MCP协议新进展: 使用 Streamable HTTP 替换当前的 HTTP+SSE 实现。-liangyuanpeng 的博客 我的 AI 员工们开发的微信小程序上线了!-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog vercel 记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]cocos creator问题列表-liangyuanpeng 的博客 | liangyuanpeng's Blog go问题列表记录-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog node镜像的更多选择-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog containerd 中的弃用警告 - 为 2.0 做好准备!-liangyuanpeng 的博客 liangyuanpeng 的博客 | liangyuanpeng's Blog kep-1880-多服务CIDR-liangyuanpeng 的博客 | liangyuanpeng's Blog [长期更新]argoworkflow 的一些实践和思考-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 将Etcd作为一个kubernetes sig来运作-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog argoworkflow 云原生工作流引擎-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog kubecon china 2023将在上海举办-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 从零到 Kubernetes 子项目负责人-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog Kubernetes HPA:定制指标实现有效的CPU和内存扩展-liangyuanpeng 的博客 | liangyuanpeng's Blog JFrog 向 CD 基金会授予开源 Pyrsia-liangyuanpeng 的博客 helmchart发布v2.10.1-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog ingress浅试-liangyuanpeng 的博客 | liangyuanpeng's Blog gateway-liangyuanpeng 的博客 | liangyuanpeng's Blog 1.24.0发布-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 部署去ZK后的Apache Pulsar-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 用GO开发Envoy wasm filter-liangyuanpeng 的博客 | liangyuanpeng's Blog 用Rust开发Envoy wasm filter-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog v1.18.3发布-liangyuanpeng 的博客 | liangyuanpeng's Blog v1.20.0-beta.1发布-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog Bookkeeper-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog Bookkeeper开发环境搭建-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog webhook开发技巧-liangyuanpeng 的博客 | liangyuanpeng's Blog 部署在线的lank8s webhook之后,不再为k8s.gcr.io/gcr.io镜像苦恼-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 部署metrics-server,把kubectl top用起来-liangyuanpeng 的博客 | liangyuanpeng's Blog v1.9.0发布-liangyuanpeng 的博客 | liangyuanpeng's Blog v1.19.1发布-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog KubeSphere使用Contour Ingress作为项目网关-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 宣布Contour v1.13.0-liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Mark Rousskov-liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Tyler Mandry-liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Bobby Holley-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog [了解Rust基金会]介绍Shane Miller-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog prometheus-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog 使用Cloudflare pages部署静态博客-liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog liangyuanpeng 的博客 | liangyuanpeng's Blog
liangyuanpeng 的博客 | liangyuanpeng's Blog
2021-03-17 · via Hi,I`m lan

TOC

前言

Prometheus作为第二个从CNCF毕业的顶级项目,其成熟程度是毋庸置疑的,甚至推出了另一个CNCF项目OpenMetrics,希望将Prometheus的指标格式演进成为一个行业规范。

更新总览

在Prometheus-v2.25.0版本中更新一览:

  1. [实验性功能]支持remote_write请求,默认不启用,启用需要启动参数指定–enable-feature = remote-write-receiver
  2. [实验性功能]新增’@‘修饰符,默认不启用,启用需要启动参数指定–enable-feature = promql-at-modifier
  3. [增强]完善测试案例testgroup添加name属性
  4. [增强]UI界面上添加警告相关信息
  5. [增强]加大压缩Histogram类型metrics的存储存储桶数,由512增大到8192
  6. [增强]允许设置自定义的header在远程写请求中
  7. [增强]将dashboard和config的libsonnet中的grafana替换成了grafanaPrometheus
  8. [增强]kubernetes服务发现中添加ndponits labels的metadata
  9. [增强]UI界面添加显示TSDB标签对的总数数据
  10. [增强]TSDB每分钟加载块数据,如果检测到有更新就执行保留数据操作.(这个PR标记成了#8243 应该是写错了,看了下这个PR 和块数据没关系)
  11. [BugFix]修复启动时web.listen-address参数没有传递端口报错问题
  12. [BugFix]完善一个错误处理,打开Mmap文件时继续走逻辑而不是立刻返回错误
  13. [BugFix]弃用未使用的参数–alertmanager.timeout
  14. [BugFix]Mixins:支持在警报中的v2.23中重命名的远程写入指标
  15. [BugFix]远程写请求写入错误日志修改为警告
  16. [BugFix]启动时删除2.21之前版本的临时块数据
    17-20 …

总共是2个实验性功能8个增强10个BugFix

https://github.com/prometheus/prometheus/pull/8424 本文会主要讲解两个实验性功能和两个增强和一个BUGFIX

官方地址是:https://github.com/prometheus/prometheus/releases/tag/v2.25.0

实验性功能

默认关闭的功能列表在这里可以找到:https://github.com/prometheus/prometheus/blob/main/docs/feature_flags.md

prometheus命令help中也可以找到:

      --enable-feature= ...      Comma separated feature names to enable. Valid options: 'promql-at-modifier' to enable the @
                                 modifier, 'remote-write-receiver' to enable remote write receiver. See
                                 https://prometheus.io/docs/prometheus/latest/disabled_features/ for more details.

prometheus可以作为另一个prometheus的远程存储

也就是说可以支持Prometheus将拉取到的数据写入到另一个Prometheus.

想象一下这样一个场景:监控中心的Prometheus部署在服务器A,而业务程序部署在服务器B并且由于网络安全等问题服务器B不能开放Exporter端口或路径到外部访问,这时候一般会加一个PushGateway,由业务程序主动将Metrics推送到PushGateway,Prometheus再从PushGateway拉取Metrics.

但这种方式并不是很好,PushGateway没有收到业务程序最新的Metrics了,但Prometheus依然能够从PushGateway拉取到数据,并且这还存在PushGateway单点问题.

现在Prometheus支持作为远程存储后可以怎么玩呢?在业务程序网络覆盖的范围内部署一个Prometheus,再由这个Prometheus将数据远程存储到监控中心的Prometheus.

这就是一个典型的SideCar模式.

这让我想到一个套娃的Prometheus,比如现在有两个Prometheus,他们都设置对方为远程存储,那么是不是就无限循环了呢?感兴趣的可以试试!

PR地址:https://github.com/prometheus/prometheus/pull/8424

新增’@‘修饰符

简单来说就是多了一个’@‘的语法,在v2.25.0之前topk()只支持及时查询,也就是无法查询某段时间内的topk,当你使用topk查询图表时,会查询出不符合预期的结果,比如topk(2, rate(jvm_memory_used_bytes[10m]))希望查询出10分钟内jvm_memory_used_bytes指标的平均速率增长趋势最大的2个指标,但是查询的结果会多余预期的2个.

说明: Graph(图表)即某段时间范围内的结果,Table即实时查询.可以看看下面两个图再进一步理解.

table

graph

一起来看看下面的PromQL:

rate(jvm_memory_used_bytes[1m])
and 
topk(2, rate(jvm_memory_used_bytes[30m] @ end())) 

rate(jvm_memory_used_bytes[1m])是希望查询的实际数据,topk(2, rate(jvm_memory_used_bytes[30m] @ end())) 意思是筛选出最近时间段内(如果是Table则是实时)30分钟平均速率趋势最大的2个指标,然后展示他们在时间段内1分钟的平均速率数据.

相关PR有三个,分别是:#8121 #8436 #8425

增强

只需要在remote_writeurl配置下添加一个headers的参数即可,填充map类型内容,如果版本在v2.25以下时填写了header内容会报错

remote_write:
  - url: http://192.168.3.75:9494/api/v1/write
    headers:
      key: value

当然了,一些HTTP自身的Header是不允许覆盖内容的,贴一下源码:

	unchangeableHeaders = map[string]struct{}{
		// NOTE: authorization is checked specially,
		// see RemoteWriteConfig.UnmarshalYAML.
		// "authorization":                  {},
		"host":                              {},
		"content-encoding":                  {},
		"content-type":                      {},
		"x-prometheus-remote-write-version": {},
		"user-agent":                        {},
		"connection":                        {},
		"keep-alive":                        {},
		"proxy-authenticate":                {},
		"proxy-authorization":               {},
		"www-authenticate":                  {},
	}

毕竟这是HTTP自带的header,如果覆盖了会引起一些未知的错误.

PR地址:https://github.com/prometheus/prometheus/pull/8273

在UI界面上添加TSDB标签对的总数

这算一个TSDB数据基本信息完善,把标签对总数数据显示了出来

add-label-pair

BugFix

在启动时删除2.21以前版本的临时数据

这个Issue在https://github.com/prometheus/prometheus/issues/8180

是一位用户在2.15.2时遇到的一个问题,后来升级到了2.22.1版本.

在Prometheus压缩或保留失败时产生了一些*.tmp文件,例如01EQ0DZ14E04F7P51Q3NA1562G.tmp,而且prometheus永远也没有清理这些文件,导致这些临时文件越来越多.如果你已经在生产环境看到了一些tmp文件并且越来越多的话,是时候升级prometheus了,否则这些临时文件会越来越多,直到磁盘空间满载.

PR地址:https://github.com/prometheus/prometheus/pull/8353

总结

prometheus社区非常活跃,v2.25.0到v2.26.0只用了一个半月,并且更新点也不少.偶尔关注一下新版本的一些更新点还是很有用的,可以了解社区发展方向的同时也可以看看社区的活跃程度.当然,官方推出的更新内容说明都是英文的,也可以等待本系列文章,发布中文版本说明.

系列文章

将会持续发布prometheus版本发布中文说明,欢迎关注系列文章目录

微信公众号

扫描下面的二维码关注我们的微信公众号,第一时间查看最新内容。同时也可以关注我的Github,看看我都在了解什么技术,在页面底部可以找到我的Github。

wechat-qrcode