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

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
Vercel News
Vercel News
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
M
MIT News - Artificial intelligence
The Cloudflare Blog
N
Netflix TechBlog - Medium
GbyAI
GbyAI
Help Net Security
Help Net Security
Hugging Face - Blog
Hugging Face - Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
I
Intezer
Martin Fowler
Martin Fowler
量子位
P
Palo Alto Networks Blog
Security Latest
Security Latest
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
H
Help Net Security
C
Check Point Blog
T
Troy Hunt's Blog
C
CERT Recently Published Vulnerability Notes
Y
Y Combinator Blog
NISL@THU
NISL@THU
L
LINUX DO - 最新话题
V
Visual Studio Blog
C
Cisco Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
S
Securelist
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
The Exploit Database - CXSecurity.com
人人都是产品经理
人人都是产品经理
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Recent Announcements
Recent Announcements
Forbes - Security
Forbes - Security
IT之家
IT之家
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
L
LangChain Blog
AWS News Blog
AWS News Blog
N
News and Events Feed by Topic
Stack Overflow Blog
Stack Overflow Blog
H
Hacker News: Front Page
B
Blog
W
WeLiveSecurity
罗磊的独立博客
Jina AI
Jina AI
博客园 - 【当耐特】

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 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
liangyuanpeng 的博客 | liangyuanpeng's Blog
2021-04-07 · via Hi,I`m lan

TOC

前言

上周有个网友问 springboot 程序的 metrics 越来越多了,有40W的指标,现在想清除一些没用的 metrics,要怎样做呢?!

当时我看到这个问题觉得挺有意思,因为我的线上程序也有动态 metrics,只不过指标没有达到那么大的量,所以我研究了一下这个问题可以怎么样处理.

用什么添加做的动态metrics就先看支不支持删除

动态创建 metrics 是直接用的io.micrometer.core.instrument.MeterRegistry对象,例如:registry.gauge(name,tags,valueObject).就可以将一个 name 的 gauge 类型的 metrics 添加到 registry 里面了,收集 metrics 时就可以看到这个新增的 metrics 了.

于是看看这个对象还有什么删除相关的方法:

首先尝试的时delete方法,发现没有类似的方法:
metrics-try-delete-method

然后试试remove,可以发现有两个remove方法可以用,分别传入ID对象metrics对象,但如果需要全部清理呢?有没有类似 List 的clear方法呢?

metrics-try-remove-method

再试试clear方法,发现是有这个方法的,并且我先测试了一遍,看看clear方法是否能够达到预期(清除metrics).

metrics-try-clear-method

实操测试

于是我一顿操作:
1. 写一个 API 接口,接口内容是执行meterRegistry.clear(); 2. 启动 springboot 程序
3. 浏览器看看/actuator/prometheus接口返回的内容
4. 调用清理 metrics 的接口,也就是第一步写的接口
5. 再次浏览器看看/actuator/prometheus接口返回的内容

清理 metrics 前的接口内容:
clear-metrics-before

清理了 metrics 后的接口内容:

clear-metrics-after

可以看到调用接口后 metrics 清除了信息.

方法有效✔, 可以给网友回复了.

网友实操不行

clear-method-for-metrics

网友说没这个方法? 咋回事?!

点进clear源码看了一下,方法说明描述得很清楚,1.2.0 版本发布的方法,而网友用的版本低于 1.2.0,因此没有这个方法.

/**
     * Clear all meters.
     * @since 1.2.0
     */
    @Incubating(since = "1.2.0")
    public void clear() {
        meterMap.keySet().forEach(this::remove);
    }

能不能根据根据某些标签来删除特定的metrics

clear-metrics-from-tags

当然可以!

metrics-registry-find-tags.png

可以看到每一个 metrics 的 tag 列表都可以拿得到,那就好办了,通过标签对比筛选出自己想要删除的 metrics,然后用remove方法删除就可以了.

总结

当程序有动态新增 metrics 时就要考虑无用 metrics 清除的机制,如果 metrics 数量太多的话就会影响到业务应用.

微信公众号

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

wechat-qrcode