Prometheus+Grafana构建云原生分布式监控系统(十五)_Prometheus中PromQL使用(二) 📅 发布时间:2026/7/8 3:30:37 👁️ 浏览次数: PrometheusGrafana构建云原生分布式监控系统十四_Prometheus中PromQL使用(一)https://blog.csdn.net/xiaochenXIHUA/article/details/157615417一、集合操作与排序1.1、集合运算prometheus支持的集合运算有时候需要过滤或将一组时间序列与另一组时间序列进行合并Prometheus 提供了 3 个在瞬时向量之间操作的集合运算符。序号集合运算符说明1交集and如对较高错误率触发报警但是只有当对应的总错误率超过某个阈值的时候才会触发报警2并集or对序列进行并集计算3除非unless如要对磁盘空间不足进行告警除非它是只读文件系统与算术和过滤二元运算符类似这些集合运算符会尝试根据相同的标签集在左侧和右侧之间查找来匹配序列除非你提供on()或ignoring()修饰符来指定应该如何找到匹配。#集合运算示例 #示例1-【or】列出所有低于 10 或者高于 50 的请求率 rate(prometheus_http_request_duration_seconds_count[5m])10 or rate(prometheus_http_request_duration_seconds_count[5m])50 #示例2-【and】关于磁盘的使用率有的磁盘分区很大比如 10T有的分区很小比如 100G像这种情况如果只是用磁盘的使用率做告警就不太合理比如 disk_used_percent{jobdockerserver} 70 表示磁盘使用率大于 70% 就告警。对于小盘这个策略是合理的但对于大盘70% 的使用率表示还有非常多的空间就不太合理。这时我们希望给这个策略加一个限制只有小于 200G 的硬盘在使用率超过 70% 的时候才需要告警这时我们就可以使用 and 运算符 ((node_filesystem_size_bytes{fstype~xfs|ext4}-node_filesystem_avail_bytes{fstype~xfs|ext4})/node_filesystem_size_bytes{fstype~xfs|ext4})0.7 and on(addr,app,device,fstype,instance,job,mountpoint) node_filesystem_size_bytes{fstype~xfs|ext4}/1024^3100 (node_filesystem_avail_bytes{fstype~xfs|ext4}/node_filesystem_size_bytes{fstype~xfs|ext4})0.3 and on(addr,app,device,fstype,instance,job,mountpoint) node_filesystem_size_bytes{fstype~xfs|ext4}/1024/1024/10241001.2、对查询结果进行排序可以使用【sort()升序】或者【sort_desc()降序】函数来实现对输出结果进行排序。有时候只对最大或最小的几个序列感兴趣可以使用【topk()】和【bottomk()】这两个运算符来操作可以返回K个最大或最小的序列。#对查询结果进行排序示例 #1-示例1-按值对系统可用空间按照从大到小排序 sort_desc(node_filesystem_avail_bytes) sort_desc(node_filesystem_avail_bytes{fstype~xfs|ext4}) #2-示例2-按值显示最大的前三个内容 topk(3,node_filesystem_avail_bytes) topk(3,node_filesystem_avail_bytes{fstype~xfs|ext4})二、直方图prometheus 中的直方图指标用来记录某个服务一系列数值的分布。直方图通常用于跟踪请求的延迟或响应大小等指标值。直方图是如何记录数值分布的?比如有个web api接口服务监控到的样本的响应时间范围为 200ms~3s大致的分布区间是大部分接口延迟最小在一两百毫秒最大的通常在 1 秒如果超过 3 秒就意味着系统不正常了。直方图的做法是根据数据的范围规划多个桶bucket把样本数据点放入不同的桶来统计。根据web api接口服务的情况可以规划 4 个桶假设有 1000 个请求来看下各个桶和对应的样本统计值情况如下《1》延迟小于 200 毫秒的有 600 个请求落到了这个区间。《2》延迟小于 1 秒的有 850 个请求落到了这个区间其中大于 200 毫秒的有 250 个请求。《3》延迟小于 3 秒的有 1000 个请求落到了这个区间其中大于 1 秒的有 150 个请求。《4》延迟小于正无穷的也就是总量有 1000 个请求落到了这个区间说明没有大于 3 秒的请求。现在来计算 90 分位值也就是第 900 个请求说明这个值落到了第 3 个桶延迟小于 3 秒的桶于是我们可以得出结论90 分位的延迟大小是 1~3 秒之间。虽然知道了区间范围但是还无法得出具体的值。为了计算出具体的值prometheus 有个假设它认为各个桶里的样本数据是均匀分布的即第三个桶的这 150 个请求延迟最小的请求恰好延迟了 1 秒延迟最大的恰好延迟了 3 秒总量的第 900 个请求是这个桶里的第 50 个请求最终 90 分位的延迟数据计算方法是3−1×50÷15011.67秒。这就是 histogram_quantile函数的计算方法。【histogram_quantile】是 Prometheus 的一个函数。用来计算分位数而且是一个预估值并不完全准确因为这个函数是假定每个区间内的样本分布是线性分布来计算结果值的。预估的准确度取决于 bucket 区间划分的粒度粒度越大准确度越低。在 prometheus 内部直方图被实现为一组时间序列每个序列代表指定桶的计数例如10ms以下的请求数、25ms以下的请求数、50ms以下的请求数等。在 prometheus 中每个 bucket 桶的计数器是累加的这意味着较大值的桶也包括所有低数值的桶的计数。在作为直方图一部分的每个时间序列上相应的桶由特殊的le标签表示。le代表的是小于或等于。prometheus_http_request_duration_seconds_bucket{handler/metrics}直方图可以帮助我们了解这样的问题如我有多少个请求超过了100ms的时间(当然需要直方图中配置了一个以 100ms 为边界的桶)又比如我99%的请求是在多少延迟下完成的这类数值被称为百分位数或分位数。在 prometheus 中这两个术语几乎是可以通用只是百分位数指定在 0-100 范围内而分位数表示在 0 和 1 之间所以第 99 个百分位数相当于分位数 0.99。#直方图示例 #示例计算过去5分钟内第90个百分位数的API延迟 histogram_quantile(0.9,rate(prometheus_http_request_duration_seconds_bucket{handler/metrics}[5m]))三、实例状态监测3.1、检查实例抓取状态每当 prometheus 抓取一个目标时它都会存储一个合成的样本其中包含指标名称up和被抓取实例的job和instance标签如果抓取成功则样本的值被设置为 1如果抓取失败则设置为 0因此可以通过下面的查询来获取当前哪些实例处于正常或挂掉的状态#检查实例抓取状态示例 #1-示例1获取所有掉线的实例 up0 #2-示例2获取挂掉实例的总数 sum by(instance)(up0)3.2、检查序列数据在某些情况下只查看实例的状态是不够的有时还需要检测是否存在某些序列上面我们用【up 0】语句来查询所有无法抓取的实例服务但是只有已经被抓取过的目标才会被加上up指标如果 Prometheus 都没有抓取到任何的实例服务目标应该怎么办呢【此时absent()函数就非常有用了absent()将一个瞬时向量作为其输入当输入一个已存在的序列时将返回一个空结果不存在时将返回单个输出序列而且样本值为1】。此外还有一个 函数【absent_over_time()】它接受一个区间向量告诉我们在该输入向量的指定时间范围内是否有样本当输入一个已存在的序列时将返回一个空结果不存在时将返回单个输出序列而且样本值为1。#检查序列数据示例 #示例1-检查指定指标存在且掉线 up{jobnode_service_discovery}0 absent(up{jobnode_service_discovery}0) #示例2-检查指定指标不存在 up{job666}0 absent(up{job666}0) #示例3-检查 up{job666}[12h] absent_over_time(up{job666}[12h])
【贝壳找房API】贝壳找房 (Beike) 数据采集指南 贝壳找房数据采集有两种主要路径:官方开放平台 API 接入(推荐,合法合规)和非官方爬虫采集(存在法律与技术风险)。以下是完整方案与注意事项。 一、官方推荐:贝壳开放平台 API 接入 1. 平台简介… 2026/7/6 16:51:13
打卡信奥刷题(2790)用C++实现信奥题 P3941 入阵曲 P3941 入阵曲 题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠。 无悔少年枉,只愿壮志狂。 题目描述 小 F 很喜欢数学,但是到了高中以后数学总是考不好。 有一天&… 2026/7/3 13:18:55
打卡信奥刷题(2788)用C++实现信奥题 P3938 斐波那契 P3938 斐波那契 题目背景 大样例可在页面底部「附件」中下载。 题目描述 小 C 养了一些很可爱的兔子。 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都… 2026/7/7 23:01:27
2026抖音实况动图去水印方法:实况图无水印保存手机教程 抖音实况动图凭借动态鲜活的视觉效果,成为很多人日常收藏、素材整理、个人作品备份的常用内容形式。但平台默认保存的实况图、动态素材,几乎都会自带官方水印、角标、飘字标识,不仅影响画面整洁度,也不利于个人素材的规整收藏与二… 2026/7/8 6:14:50
10-30V直流,每轴1.9A RMS——六轴控制集成度做到这个水平,只需一块TMCM-6214 在多轴运动控制领域,工程师们经常面临一个两难的选择:是忍受多个单轴驱动板带来的复杂布线和庞大电控箱,还是为了体积而牺牲电流和闭环功能?今天我们要聊的这款六轴步进电机控制模块——TMCM-6214,试图用极高的集成度来… 2026/7/8 6:10:50
从曝光、触达到留存:现代企业必备的全链路商务营销工具 当下多数企业营销都存在明显短板:只做曝光引流,缺少承接、沉淀与复盘,流量看似不少,实际转化极低、线索大量浪费。传统碎片化营销模式,早已满足不了企业长效拓客需求。现代企业想要稳定获客,必须打通曝光、… 2026/7/8 6:08:49
零知派——STM32智能小车系列教程(三):红外双目跟随模块原理与调试 引言:智能小车要实现的功能很多——避障、跟随、贴边、灭火、直线行驶,每一个模块单独调试起来都有自己的难点。如果一开始就把所有模块塞进一个工程里联调,出了问题很难分清到底是传感器硬件的问题、电平极性的问题,还是上层控制… 2026/7/8 6:06:49
从零构建轻量级RAG知识库问答系统 从零构建轻量级 RAG 知识库问答系统:多供应商适配 答案溯源实战 本文完整记录了一个轻量级 RAG(检索增强生成)知识库问答系统的设计与实现过程。从文档上传到智能问答,从多供应商模型适配到答案引用溯源,带你一站式跑… 2026/7/8 6:06:49
2026蚌埠黄金回收白银回收铂金回收工商备案可查全城上门回收旧金老店联系方式推荐 2026蚌埠黄金白银铂金回收实测榜单|工商备案可查全城上门回收旧金老店联系方式推荐 蚌埠黄金回收哪家靠谱|工商公安双备案中检认证实体门店 蚌埠本地贵金属回收店铺遍地丛生,行业套路层出不穷,不少市民变现遭遇虚高报价、克扣损耗… 2026/7/8 6:06:49
BetterNCM安装器:高效管理网易云插件的最佳选择 BetterNCM安装器:高效管理网易云插件的最佳选择 【免费下载链接】BetterNCM-Installer 一键安装 Better 系软件 项目地址: https://gitcode.com/gh_mirrors/be/BetterNCM-Installer 还在为网易云音乐插件的繁琐安装流程而烦恼吗?BetterNCM安装器是… 2026/7/8 0:02:48
运动控制系统安全设置对比:ECI3808的3种限位保护与急停逻辑实现 运动控制系统安全机制深度解析:限位保护与急停逻辑的设计哲学在精密制造与自动化领域,运动控制系统的安全设计绝非简单的功能堆砌,而是一套融合了机械工程、电气原理和软件算法的防御体系。当一台数控机床以每分钟数万转的速度运转࿰… 2026/7/8 0:06:48
AI大模型应用开发:小白也能抓住的红利风口,收藏这篇入门指南! 文章指出,虽然微软等科技巨头在裁员,但英伟达等公司却在积极扩招AI相关人才,尤其是具身智能、仿真等领域。AI行业正在经历结构性调整,传统岗位被淘汰,而大模型应用开发等新岗位需求旺盛。对于想转行或学习AI的普通人来… 2026/7/8 0:10:49
6个月转型AI工程师:实战路径与核心技能 1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公… 2026/7/7 11:26:57
TPAFE0808与PIC18F87K22的多通道信号采集方案 1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是基础且关键的技术需求。传统方案往往面临通道数量不足、信号调理复杂、系统集成度低等问题。TPAFE0808作为一款8通道模拟前端芯片,与PIC18F87K22微控制器的组合… 2026/7/7 11:26:57
STC3115与PIC18LF26K80构建高精度电池管理系统 1. STC3115与PIC18LF26K80在电池管理系统中的核心价值在现代电子设备中,电池管理系统(BMS)的重要性不亚于设备的核心处理器。STC3115作为一款高精度电池电量监测IC,与PIC18LF26K80微控制器的组合,构成了一个既能精确监控又能智能管理的完整解… 2026/7/7 11:26:58