25.1 降低采集资源消耗的收益和无用监控指标的判定依据

本节重点介绍 :

  • 降低采集资源消耗的收益
  • 哪些是无用指标,什么判定依据
    • 通过 grafana的 mysql 表获取所有的 查询表达式expr
    • 通过 获取所有的prometheus rule文件获取所有的 告警表达式expr
    • 通过 获取所有的prometheus 采集器接口 获取所有的采集metrics
    • 计算可得到现在没用到的metrics列表
      • 计算方法为 所有采集到的-(告警的+看图的)

降低采集资源消耗的收益

  • 缓存系统内存使用降低
    • 监控系统为了加快查询速度会在各个环节上设置缓存
    • 那么如果采集指标过多,无疑会使缓存内存使用变多
  • 存储系统磁盘使用降低
    • 持久话存储的磁盘使用量和监控指标的数量是成正比的
  • 组件间网络传输流量降低
    • 更多的监控指标数据意味着,组件间网络传输流量更大
  • 查询速度提升降低
    • 更多的监控指标意味着查询的速度会被拖慢

收益实例

  • 分析cadvisor 和 node_exporter中可以被drop的指标及其采集方式,去掉后 采集qps下降25%
  • drop_result.png

哪些是无用指标,什么判定依据

  • 一句话就可以总结 :always collect ,never used

指标的使用

  • 看图使用
  • 告警使用

那么系统中除了看图和告警使用的指标理论上都可以去掉

  • 但是要注意的点是,有些指标今天没用到是还没发现它的意义
  • 有可能明天就会使用

具体的判定依据

看图侧

  • 假设所有的看图都配置在grafana中
  • 通过grafana 的dashboard 接口或者 grafana的 mysql 表获取所有的 查询表达式expr
  • image.png
  • 对应就是众多的promql,在其中解析出所有的metrics
  • 就可以获得看图侧的 metrics 列表 ,可以命名为graph_metrics_set
python脚本
  • 创建db对象连接grafana 数据库
  • 查询所有的 dashboard
  • 遍历dashboard中的panel 对象获取 expr对象
  • 将expr和prometheus metric 正则匹配,匹配到就是metric
# pip install sqlalchemy PyMySQL
import re
import json
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmakerMETRIC_NAME_RE = re.compile(r'.*?([a-zA-Z_:][a-zA-Z0-9_:]*){.*?')GRAFANA_SLAVE_DB_HOST = "172.20.70.205"
GRAFANA_SLAVE_DB_PORT = 3306
GRAFANA_SLAVE_DB_USER = "root"
GRAFANA_SLAVE_DB_PASS = "123123"def init_grafana_db_session():engine = create_engine('mysql+pymysql://{}:{}@{}:{}/grafana'.format(GRAFANA_SLAVE_DB_USER,GRAFANA_SLAVE_DB_PASS,GRAFANA_SLAVE_DB_HOST,GRAFANA_SLAVE_DB_PORT))# 创建DBSession类型:dbSession = sessionmaker(bind=engine, autocommit=True)return dbSession()def get_metrics_from_grafana_db():ds = init_grafana_db_session()res = ds.execute('select  data,slug from dashboard ')exprs = set()for r in res:try:data = json.loads(r[0])panels = data.get("panels")if not panels:continuefor p in panels:if not p:continuetargets = p.get("targets")if not targets:continuefor i in targets:ee = i.get("expr")ddd = METRIC_NAME_RE.findall(ee)exprs.update(set(ddd))except Exception as e:print(e)ss = sorted(list(exprs))print(ss)return ssget_metrics_from_grafana_db()

image.png

告警侧

  • 获取所有的prometheus rule文件
  • 根据rule文件中的promql 解析出metrics,可以命名为 alert_metrics_set
python 脚本
  • 打开rule yaml 文件,逐行获取
  • 用正则匹配,匹配到的即为metric
import reMETRIC_NAME_RE = re.compile(r'.*?([a-zA-Z_:][a-zA-Z0-9_:]*){.*?')def get_metrics_from_rule_file(rule_file):exprs = set()with open(rule_file, encoding='UTF-8') as f:for i in f.readlines():if not "expr" in i:continueddd = METRIC_NAME_RE.findall(i)exprs.update(set(ddd))ss = sorted(list(exprs))print(ss)return ssget_metrics_from_rule_file("rule.yml")

采集侧

  • 根据所有的采集器的接口获取其对应的metrics列表,对应接口如下
/api/v1/label/__name__/values
  • 意思是获取__name__标签的values列表,也就是所有的metircs_name
  • 截图
  • image.png
  • 可以命名为 scrape_metrics_set
python脚本
import requestsdef get_metrics_names(host):url = "http://{}/api/v1/label/__name__/values".format(host)res = requests.get(url)print(res.status_code)exprs = res.json().get("data")if not exprs:returnss = sorted(list(exprs))print(ss)return ssget_metrics_names("172.20.70.215:8091")

计算可得到现在没用到的metrics列表

  • 计算方法为 所有采集到的-(告警的+看图的)
scrape_metrics_set - (alert_metrics_set + graph_metrics_set)

本节重点总结 :

  • 降低采集资源消耗的收益
  • 哪些是无用指标,什么判定依据
    • 通过 grafana的 mysql 表获取所有的 查询表达式expr
    • 通过 获取所有的prometheus rule文件获取所有的 告警表达式expr
    • 通过 获取所有的prometheus 采集器接口 获取所有的采集metrics
    • 计算可得到现在没用到的metrics列表
      • 计算方法为 所有采集到的-(告警的+看图的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习、深度学习评价指标汇总:TP、TN、FP、FN、AP、mAP、IoU、mAP@3、Prec@10、 Acc@10

系列文章目录 文章目录 系列文章目录一、真正例(True Positive)、假正例(False Positive)、真负例(True Negative)和假负例(False Negative)是评估分类模型性能的重要概念。1. 定义2…

前端学习-css的元素显示模式(十五)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 什么是元素显示模式 块元素 常见的块元素 块元素的特点 注意 行内元素 行内元素的特点 注意 行内块元素 行内块元素的特点 元素显示模式的转换 语法格…

MySQL 删除数据库

1.使用命令行删除一个数据库 1.1 首先登陆进入 MySQL 操作界面,命令如下: 命令 : mysql -utest -p;1.2 登陆成功之后可以使用如下命令查看当前已有数据库: 命令 : SHOW DATABASES; 执行结果如下图: 如图所示当前已包含 MySQL 系统数据库和…

盛元广通化学实验室样品LIMS管理系统

盛元广通化学实验室样品LIMS管理系统旨在提高实验室样品管理的效率、准确性和可追溯性。通过自动化和智能化的手段,系统能够简化样品管理流程,减少人为错误,确保样品的安全性和完整性。样品管理的具体实施方法包括样品接收与登记、样品储存与…

「Ubuntu」文件权限说明(drwxr-xr-x)

我们在使用Ubuntu 查看文件信息时,常常使用 ll 命令查看,但是输出的详细信息有些复杂,特别是 类似与 drwxr-xr-x 的字符串,在此进行详细解释下 属主:所属用户 属组:文件所属组别 drwxr-xr-x 7 apps root 4…

基于SSM的商场鞋店管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 题目简介: 服装鞋帽在我国的国民经济的发展中有着重要的地位,是发展规模较为宏大的行业。随着我国制鞋企业的发展和规模的扩大,经营区域分散,传统的管理模式严重制约了企业的快速…

非洲秃鹫算法(AVOA)的MATLAB代码复现

目录 1 非洲秃鹫算法优化BP神经网络代码复现 2 非洲秃鹫算法优化支持向量机代码复现 3 非洲秃鹫算法优化长短期记忆神经网络代码复现 1 非洲秃鹫算法优化BP神经网络代码复现 1)单输出回归预测:单输出回归预测:非洲秃鹫算法优化BP神经网络…

华为Eth-trunk链路聚合加入到E-trunk实现跨设备的链路聚合

一、适用场景(注:e-trunk与eth-trunk是2个不同的概念) 1、企业中有重要的server服务器业务不能中断的情况下,可将上行链路中的汇聚交换机,通过eth-trunk链路聚合技术,实现链路故障后,仍有可用的…

灵当CRM data/pdf.php 任意文件读取漏洞复现

0x01 产品简介 灵当CRM是一款专为中小企业打造的智能客户关系管理工具,由上海灵当信息科技有限公司开发并运营。广泛应用于金融、教育、医疗、IT服务、房地产等多个行业领域,帮助企业实现客户个性化管理需求,提升企业竞争力。无论是新客户开拓、老客户维护,还是销售过程管…

vue3 高德地图标注(飞线,呼吸点)效果

装下这两个 npm 忘了具体命令了&#xff0c;百度一下就行 “loca”: “^1.0.1”, “amap/amap-jsapi-loader”: “^1.0.1”, <template><div id"map" style"width: 100%;height: 100%;"></div> </template><script setup> …

Cesium 区域高程图

Cesium 区域高程图 const terrainAnalyse new HeightMapMaterial({viewer,style: {stops: [0, 0.05, 0.5, 1],//颜色梯度设置colors: [green, yellow, blue , red],}});

NVIDIA Bluefield DPU上的启动流程4个阶段分别是什么?作用是什么?

文章目录 Bluefield上的硬件介绍启动流程启动流程&#xff1a;eMMC中的两个存储分区&#xff1a;ATF介绍ATF启动的四个阶段&#xff1a; 四个主要步骤&#xff1a;各个阶段依赖的启动文件 一次烧录fw失败后的信息看启动流程综述 Bluefield上的硬件介绍 本文以Bluefield2为例&a…

计算机是如何输入存储输出汉字、图片、音频、视频的

计算机是如何输入存储输出汉字、图片、音频、视频的 为了便于理解&#xff0c;先了解一下计算机的组成。 冯诺依曼计算机的五大组成部分。分别是运算器、控制器、存储器、输入设备和输出设备。参见下图&#xff1a; 一、运算器 运算器又称“算术逻辑单元”&#xff0c;是计算…

SQLI LABS | SQLI LABS 靶场初识

关注这个靶场的其它相关笔记&#xff1a;SQLI LABS —— 靶场笔记合集-CSDN博客 0x01&#xff1a;SQLI LABS 靶场简介 SQLi-Labs 靶场是一个专门用于学习和测试 SQL 注入漏洞的开源靶场&#xff0c;该靶场提供了多个具有不同漏洞类型和难度级别的 Web 应用程序的环境。这些应用…

Facebook减肥产品广告投放攻略

有不少刚开始投放facebook广告的小伙伴会感到疑惑&#xff0c;为什么别人的减肥产品跑的风生水起&#xff0c;销量羡煞旁人&#xff0c;自己的广告要不就是被拒要不就是没有流量&#xff0c;甚至还可能被封号&#xff0c;如果你也有这样的困扰&#xff0c;那一定要看完这篇文章…

图片颜色通道提取

目录 读取和显示图像分离和合并颜色通道通道分离显示总结 读取和显示图像 import cv2def img_show(name, img):"""显示图片:param name: 窗口名字:param img: 图片对象:return: None"""cv2.imshow(name, img)cv2.waitKey(0)cv2.destroyAllWindow…

机器视觉AI场景为什么用Python比C++多?

好多开发者在讨论机在机器视觉人工智能领域的时候&#xff0c;纠结到底是用Python还是C&#xff0c;实际上&#xff0c;Python 和 C 都有广泛的应用&#xff0c;选择 Python而不是 C 可能有以下一些原因&#xff1a; 语言易学性和开发效率 语法简洁&#xff1a; Python 语法简…

基于协同过滤的景区旅游可视化与景区推荐系统(自动爬虫,地点可换)

文章目录 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主项目介绍过程展示项目移植每文一语 有需要本项目的代码或文档以及全部资源&#xff0c;或者部署调试可以私信博主 项目介绍 本项目是一个综合性的旅游景区数据管理与分析推荐系统,集成了用…

《深度学习》OpenCV 风格迁移、DNN模块 案例解析及实现

目录 一、风格迁移 1、什么是风格迁移 2、步骤 1&#xff09;训练 2&#xff09;迁移 二、DNN模块 1、什么是DNN模块 2、DNN模块特点 1&#xff09;轻量 2&#xff09;外部依赖性低 3&#xff09;方便 4&#xff09;集成 5&#xff09;通用性 3、流程图 4、图像…

postman变量,断言,参数化

环境变量 1.创建环境变量 正式环境是错误的&#xff0c;方便验证环境变化 2.在请求中添加变量 3.运行前选择环境变量 全局变量 能够在任何接口访问的变量 console中打印日志 console.log(responseBody);//将数据解析为json格式 var data JSON.parse(responseBody); conso…