首页 > 其他分享 >如何精简 Prometheus 的指标和存储占用

如何精简 Prometheus 的指标和存储占用

时间:2022-12-29 09:23:31浏览次数:52  
标签:node kube 占用 bytes Grafana Prometheus etcd 精简 total

前言

随着 Prometheus 监控的组件、数量、指标越来越多,Prometheus 对计算性能的要求会越来越高,存储占用也会越来越多。

在这种情况下,要优化 Prometheus 性能, 优化存储占用. 第一时间想到的可能是各种 Prometheus 的兼容存储方案, 如 Thanos 或 VM、Mimir 等。但是实际上虽然集中存储、长期存储、存储降采样及存储压缩可以一定程度解决相关问题,但是治标不治本。

  • 真正的本,还是在于指标量(series)过于庞大。
  • 治本之法,应该是减少指标量。有 2 种办法:

本次重点介绍第二种办法:如何根据实际的使用情况精简 Prometheus 的指标和存储占用?

思路

  1. 分析当前 Prometheus 中存储的所有的 metric name(指标项);
  2. 分析展示环节用到的所有 metric name,即 Grafana 的 Dashboards 用到的所有指标;
  3. 分析告警环节用到的所有 metric name,即 Prometheus Rule 配置中用到的所有指标;
  4. (可选)分析诊断环境用到的所有 metric name,即经常在 Prometheus UI 上 query 的指标;
  5. 通过 relabelmetric_relabel_configswrite_relabel_configskeep 2-4 中的指标, 以此大幅减少 Prometheus 需要存储的指标量.

要具体实现这个思路, 可以通过 Grafana Labs 出品的 mimirtool 来搞定.

我这里有个前后的对比效果, 可供参考这样做效果有多惊人:

  1. 精简前: 270336 活动 series
  2. 精简后: 61055 活动 series
  3. 精简效果: 将近 5 倍的精简率!

Grafana Mimirtool

Grafana Mimir 是一款以对象存储为存储方式的 Prometheus 长期存储解决方案, 从 Cortex 演化而来. 官方号称支持亿级别的 series 写入存储和查询.

Grafana Mimirtool 是 Mimir 发布的一个实用工具, 可单独使用.

Grafana Mimirtool 支持从以下方面提取指标:

  • Grafana 实例中的Grafana Dashboards(通过 Grafana API)
  • Mimir 实例中的 Prometheus alerting 和 recording rules
  • Grafana Dashboards JSON文件
  • Prometheus记alerting 和 recording rules 的 YAML文件

然后,Grafana Mimirtool可以将这些提取的指标与Prometheus或Cloud Prometheus实例中的活动 series 进行比较,并输出一个 used 指标和 unused 指标的列表。

Prometheus 精简指标实战

假设

假定:

  • 通过kube-prometheus-stack 安装 Prometheus
  • 已安装 Grafana 且作为展示端
  • 已配置相应的 告警规则
  • 除此之外, 无其他需要额外保留的指标

前提

  1. Grafana Mimirtool 从 releases 中找到 mimirtool 对应平台的版本下载即可使用;
  2. 创建 Grafana API token
  3. Prometheus已安装和配置.

第一步: 分析 Grafana Dashboards 用到的指标

通过 Grafana API

具体如下:

# 通过 Grafana API分析 Grafana 用到的指标
# 前提是现在 Grafana上创建 API Keys
mimirtool analyze grafana --address http://172.16.0.20:32651 --key=eyJrIjoiYjBWMGVoTHZTY3BnM3V5UzNVem9iWDBDSG5sdFRxRVoiLCJuIjoibWltaXJ0b29sIiwiaWQiOjF9

标签:node,kube,占用,bytes,Grafana,Prometheus,etcd,精简,total
From: https://www.cnblogs.com/east4ming/p/17011688.html

相关文章

  • prometheus-如何监控服务
    1.Prometheus-如何监控服务Prometheus-如何监控服务自己编写metrics接口,遵循数据模型使用社区维护的exporter进行维护如何监控服务如果要想监控,前提是能获取......
  • grafana-连接prometheus添加数据可视化
    1.grafana-连接prometheus添加数据可视化grafana添加prometheus数据可视化Grafana是一个开源的度量分析和可视化系统。部署文档:https://grafana.com/grafana/dow......
  • prometheus-添加监控linux服务器
    1.prometheus-添加监控linux服务器prometheus添加监控linux服务器node_exporter:用于监控Linux系统的指标采集器。常用指标:CPU内存硬盘网络流量文件描述符系......
  • prometheus-添加被监控配置文件详解
    1.prometheus-添加被监控配置文件详解目标(targets):被监控端实例(Instances):每个被监控端称为实例作业(Job):具有相同目标的实例集合称为作业添加配置文件示例scrap......
  • IntelliJ IDEA 编译方式介绍及查看内存占用
    编译方式介绍相比较于Eclipse的实时自动编译,IntelliJIDEA的编译更加手动化,虽然IntelliJIDEA也支持通过设置开启实时编译,但是不建议,因为太占资源了。IntelliJIDEA编......
  • Prometheus的使用总结
    一、Prometheus是什么?Prometheus是一套开源的系统监控报警框架。它受启发于Google的Brogmon监控系统,由工作在SoundCloud的前google员工在2012年创建,作为社区开源......
  • 基于两大核心洞察,搞懂险企如何通过数字化经营抢占用户心智
    口碑,本质是商业竞争的产物,让你的产品在竞争中与同类建立区隔,降低用户的选择成本,提升品牌的溢价能力。保险公司如何理解消费者市场,构建数字化经营抓手、形成品牌影响力,实现用......
  • SetProcessWorkingSetSize减少内存占用?啥也不是
    结论:别用这个函数,他会把内存写不下的写到硬盘的虚拟内存中去(注:硬盘中的虚拟内存默认在系统盘里)贴一段博客园名称pdfw的代码点击查看代码[System.Runtime.InteropServ......
  • helm 部署kube-prometheus-stack
    下载helm文件promingresskind:IngressapiVersion:networking.k8s.io/v1metadata:name:prom-ingressnamespace:kube-prometheus-stacklabels:......
  • COCOS2DX WIN32 版本的CPU占用25%改良策略
    cocos2dx\platform\win32\CCApplication.cpp,大致长像如下:while(1){if(有消息){if(时间到)更新计时,call主循环函数;elseSleep(0);}//其他跳出循环判断代码}......