【grafana】创建多变量table

这个普罗米修斯的指标啊,大多数都是键值对,而且笔者如果没记错,他这个值还必须是浮点。少数可以设成离散值(Enum),但本质还是一个带翻译功能的键值对

这样的好处是,做起来非常简单,而且很容易塞到内存里,然后因为指标拿过来肯定要做进一步的计算,加减乘除之类的,也会比较方便。但是如果我们要建一个table,也就是一个固定键,后面跟多个可变量。就只能用 merge 或者 join 来做,用grafana来建表就需要多整几步。

这个帖子,笔者会展示如何在grafana里面设置一个多变量一行的表格(table)出来

本文是作者的小笔记,同时也是这篇文章的补充,如果有需要,请移步官网文档系统查看搭建一个grafana + Prometheus + node-exporter + pushgateway + alertmanager的监控解决方案-CSDN博客

Grafana documentation | Grafana documentation

一、【背景描述】

有若干个消费者(理解为客户端或者任务),每天他们会来到窗口前排队,他们每个人都有三个属性(结构体),分别是:

  •         排队号(索引,index)        
  •         健康度(status)
  •         上一次服务时间(last acc time)

分析一下,这本质是一个以消费者姓名(UUID或者name)为唯一索引,后面跟着多个变量的结构,那么我们分析如果制成表,至少有以下需求

  1. 监控的展示是一个表格,以排队号(index)做排序索引,不能是字符串排序而是数字排序(因为grafana默认是字符串排序的…)
  2. 排队号(index)每天都会产生变化,因此排队表格中,人员的位置要同时变更
  3. 消费者姓名(UUID或name)为常量,其余为变量,考虑到Prometheus指标都是键值对,我们要避免变量发生变化的时候,不产生新的行,而是在原有位置更改数据(需要新建多个指标,随后对多个指标做join或者merge操作)

 

二、【设计指标】

我们直接python写脚本,起三个指标,分别是index,status,last_time。类型笔者这里用Gauge(仪表盘)

 其中

  • status可以约定200为正常,400是没到;
  • last_time用时间戳翻译成时间(prometheus的value必须是浮点,所以用时间戳比较合适,不过注意,grafana的时间戳是13位,所以建议乘一个1000)
import prometheus_clientdef urfunction(person):passvars_dicts[f'person_index_{person}'].labels(name=person).set(2)vars_dicts[f'{person}_status'].labels(name=person).set(200)vars_dicts[f'{person}_last_time'].labels(name=person).set(1717152964000)if __name__ == "__main__":pass# 这里注意一下,如果这个laoban有时候会不来,那么要考虑他不来的情况,防止no data带崩整个程序person_List = ['laowang','xiaobaober','dahuang','heinu','laoban']## 用字典初始化变量,一来方便管理,二来方便变量回收vars_dict = {}for person in person_List:vars_dict[f'person_index_{person}'] = Gauge(f'{person}_index','index of each person', ['name'])vars_dict[f'person_status_{person}']  = Gauge(f'{person}_status', 'Status of each person', ['name'])vars_dict[f'person_lasttime_{person}']= Gauge(f'{person}_last_time', 'time of each person', ['name'])## end init vars# UP Exporterstart_http_server(8848)while True:for person in person_List:urfunction(laowang)    # 可以写一个函数更新我们的指标
# 每10秒更新一次指标,这个时间不准,就图一乐
# 想要更准确,用timer或者硬件中断做         time.sleep(10)  

然后把指标脚本跑起即可,并且在prometheus处确定exporter已成功连接

python3 ur_script.py

三、【设计图表】

设计完自定义的指标,接下来我们需要在grafana中配置一下图表,因为是多个指标我们做到一个表中,需要弄一些变换。

1. 进入你的grafana——> dashboards ——> 新建一个visualization

2. 右侧选取图表类型为Table,并添加我们之前设置的三个指标(add query)

3. 添加 transform data

(1)filter fields by name

隐藏不需要的列,我们在grafana中引用指标的时候,会额外显示Time __name__ instance job,我们这里不但用不上,他还会阻碍我们后续对指标进行合并(merge),很好理解,多余的列会让merge失效,从而产生多行而不是一行

(2)merge series/tables

直接加就好了,没什么好说的

(3)Oraganize field by name

本质就是重命名,因为prometheus的指标本质是一个键值对,值是没有名字的,只会显示val1,val2,所以我们用这个给他重新起个名字

(4)Convert field type

数值类型转换,把 prometheus 取到的浮点转化为我们需要的类型。

对index变为num方便按照数字而非字符排序;

对时间将其转换为时间格式,方便查看;

(5)sort by

排个序,如果不用这个,可以鼠标点击table的表头,也能升序降序,但是会有一个箭头在上面,不好看

 4. 效果图

5. 思考

这个监控的设计,本质是要求每天来的消费者都一样,才能正常工作,如果出现了新旧消费者变更,则会出现index混乱重复的情况,我们如何设计一个完全不受此限制的图表?

四、【参考】

  1.  client_python (prometheus.github.io)
  2.  Getting started | Prometheus

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

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

相关文章

Websocket服务端结合内网穿透发布公网实现远程访问发送信息

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

计算机毕业设计hadoop+spark+hive物流快递大数据分析平台 物流预测系统 物流信息爬虫 物流大数据 机器学习 深度学习 知识图谱 大数据

1.Python爬虫采集物流数据等存入mysql和.csv文件; 2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs; 3.使用hive数据仓库完成建库建表导入.csv数据集; 4.使用hive之hive_sql进行离线计算,使用spark之…

乡村振兴的乡村环境综合整治:加强农村环境综合整治,改善农村人居环境,打造干净整洁的美丽乡村

目录 一、引言 二、农村环境问题的现状与挑战 (一)农村环境问题的现状 (二)农村环境问题的挑战 三、加强农村环境综合整治的必要性 (一)提升农民生活质量 (二)促进农村经济发…

ClickHouse 实现用户画像(标签)系统实践

文章目录 前言用户画像概述用户画像系统介绍用户画像系统的需求描述用户画像系统的需求分析用户画像系统的架构 关键技术实现(Clickhouse SQL)分析阶段运营阶段 基于ClickHouse的用户画像系统的优点 前言 本文介绍一个ClickHouse应用案例—用户画像系统…

成功案例(IF=12.2)| 肠道代谢组、微生物组和脑功能的综合分析揭示了肠-脑轴在长寿中的作用

研究背景 人类长寿是一种受遗传、环境等多种因素影响的复杂表型。近年来,肠道微生物群被认为是长寿的一个重要因素,如Akkermansia、Alisipes和Parabacteroides已被报道与长寿有关。此外,最近的一项研究表明,百岁老人的肠道微生物群…

学习笔记——IP地址网络协议——网络掩码(Netmask)

三、网络掩码(Netmask) 1、网络掩码概述 网络掩码(Netmask)又称子网掩码(Subnet Mask)网络掩码为32 bit,与IP地址的位数一样,通常也以点分十进制数来表示。 子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用&#xf…

AI图片光影重塑 - IC Light独立安装

两个前提: 1.安装GIT (https://blog.csdn.net/qq_42372031/article/details/130676236) 2.安装ANACONDA(https://blog.csdn.net/ViatorSun/article/details/118578818) 来到IC-Light主页(https://github.…

品牌控价的同时也要做好数据分析

品牌在进行电商价格监测时,确实不应仅停留在收集低价数据的层面。在数据量巨大的今天,如何深度分析和挖掘这些数据的价值,为品牌的决策和战略提供有力支持,显得尤为重要。 首先,电商数据的监测和分析有助于品牌更全面…

函数高级:函数的默认参数|函数的占位参数|函数重载

函数的默认参数 函数占位参数 函数重载 总结: 函数的形参,有自己的参数值就用参数值,没有就用形参列表的默认值。 参数列表中,某位置有自己的默认值,从该位置起,往后就都必须设有默认值。 函数声明和函数…

详解MyBatis(二)

目录 1.MyBatis的基本操作 1.1增(Insert) 1.1.1返回主键 1.2删(Delete) 1.3改(Update) 1.4查(Select) 1.4.1起别名 1.4.2结果映射 1.4.3开启驼峰命名(推荐) 2.MyBatis XML配…

AR眼镜定制开发_在AR眼镜中实现ChatGPT功能

AR眼镜定制方案中,需要考虑到强大的算力、轻巧的设计和更长的续航时间等基本要求。然而,AR眼镜的设计方案不仅仅需要在硬件和显示技术方面取得突破,还要在用户体验方面有所进展。 过去,由于造价较高,AR眼镜的普及和商业…

按钮组切换控制统计图显示【统计图切换渲染失败】

背景 需要实现点击左上角按钮组的按钮,切换对应的统计图 点击按钮1呈现的统计图。映射的实体类Vo1 点击按钮2呈现的统计图。映射的实体类Vo2 可能会出现的问题: (1) 空白:进入页面只渲染第一个统计图,点…

TypeScript核心类型概览与应用-1

文章目录 TypeScript入门1.TypeScript介绍2.编译并运行TS代码2.1.简化运行ts步骤 3.TS中的常用类型3.1.TS中的类型注解3.2.TS中的原始类型3.3.TS中的数组类型3.4.TS中的联合类型3.5.类型别名3.6.函数类型3.6.1.单独执行参数、返回值类型3.6.2.同时指定参数,返回值类…

OpenGL系列(四)Shader

通过VBO和VAO准备好数据后,接下来要指示GPU如何通过这些数据绘制图形。类似CPU可以通过执行程序来完成特定的任务,GPU也可以执行特定的程序来完成绘制任务,GPU执行的程序称为Shader,也叫着色器。 GPU绘制图形分为不同的处理阶段&a…

文章解读与仿真程序复现思路——电力系统自动化EI\CSCD\北大核心《考虑发用电相似性的海上风电中长期双边协商交易优化决策模》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

小鸡庄园智慧农场养殖游戏开发:科技与农业的完美结合

随着科技的进步,一种全新的游戏模式——智慧农场养殖游戏,正在逐渐崭露头角。本文将深入探讨小鸡庄园智慧农场养殖游戏的开发背景、特点、技术实现方式以及未来的发展趋势,以期为游戏产业创新和农业现代化提供新的思路和启示。 一、开发背景…

Rust 性能分析

都说Rust性能好,但是也得代码写得好,猜猜下面两个代码哪个快 . - 力扣&#xff08;LeetCode&#xff09; use std::collections::HashMap; use lazy_static::lazy_static;lazy_static! {static ref DIGIT: HashMap<char, usize> {let mut m HashMap::new();for c in …

【Nacos】docker-compose启动nacos v2.2.3,启动时修改默认密码不使用naocs

1. 背景 出于安全考虑&#xff0c;我司DevOps平台自动部署的容器化nacos密码不能是弱密码或默认值 但是nacos-v2.2.3官方镜像启动后会初始化nacos用户密码为nacos&#xff0c;修改启动时的变量并没有生效。 2. 部署验证 2.1 yml文件如下 注意将derby库的初始化文件挂载出来…

Python | Leetcode Python题解之第129题求根节点到叶节点数字之和

题目&#xff1a; 题解&#xff1a; class Solution:def sumNumbers(self, root: TreeNode) -> int:if not root:return 0total 0nodeQueue collections.deque([root])numQueue collections.deque([root.val])while nodeQueue:node nodeQueue.popleft()num numQueue.p…

产品人生(9):从“波士顿矩阵”看“个人职业规划”

波士顿矩阵&#xff08;简称BCG矩阵&#xff09;是一种战略规划工具&#xff0c;由波士顿咨询公司的创始人布鲁斯亨德森&#xff08;Bruce Henderson&#xff09;于1970年代初提出的&#xff0c;它以两个关键指标作为分析维度&#xff1a;市场增长率和相对市场份额&#xff0c;…