PromQL】的更多相关文章

0x00 概述 Prometheus 当前稳定的 HTTP API 可以通过 /api/v1 访问. 0x01 API 响应格式 Prometheus API 使用了 JSON 格式的响应内容. 当 API 调用成功后将会返回 2xx 的 HTTP 状态码. 反之,当 API 调用失败时可能返回以下几种不同的 HTTP 状态码: 404 Bad Request :当参数错误或者缺失时. 422 Unprocessable Entity : 当表达式无法执行时. 503 Service Unava…
0x00 二元运算符 Prometheus 的查询语言支持基本的逻辑运算和算术运算.对于两个瞬时向量, 匹配行为可以被改变. 算术二元运算符 在 Prometheus 系统中支持下面的二元算术运算符: + 加法 - 减法 * 乘法 / 除法 % 模 ^ 幂等 二元运算操作符支持 scalar/scalar(标量/标量).vector/scalar(向量/标量).和 vector/vector(向量/向量) 之间的操作. 在两个标量之间进行数学运算,得到的结果也是标量. 在向量和标量之间,这个运算…
0x00 概述 Prometheus 提供了一种功能表达式语言 PromQL,允许用户实时选择和汇聚时间序列数据.表达式的结果可以在浏览器中显示为图形,也可以显示为表格数据,或者由外部系统通过 HTTP API 调用. 0x01 表达式语言数据类型 在 Prometheus 的表达式语言中,表达式或子表达式包括以下四种类型之一: 瞬时向量(Instant vector) - 一组时间序列,每个时间序列包含单个样本,它们共享相同的时间戳.也就是说,表达式的返回值中只会包含该时间序列中的最新的一个样…
目录 时序 4 种类型 Counter Gauge Histogram Summary Histogram vs Summary 操作符 时序 4 种类型 Prometheus 时序数据分为 Counter, Gauge, Histogram, Summary 四种类型. Counter Counter 表示收集的数据是按照某个趋势(增加/减少)一直变化的,我们往往用它记录服务请求总量.错误总数等. 例如 Prometheus server 中 http_requests_total, 表示 P…
前言 本文来自Prometheus官网手册1.2.3 和 Prometheus简介1.2.3 PromQL操作符 一.二元操作符 Prometheus的查询语言支持基本的逻辑运算和算术运算.对于两个瞬时向量, 匹配行为可以被改变. 1.1 算术二元运算符 在Prometheus支持下面的二元算术操作符: + 加法 - 减法 * 乘法 / 除法 % 模 ^ 幂等 二元运算操作符定义在scalar/scalar(标量/标量).vector/scalar(向量/标量).和vector/vector(向…
目录 1.什么是PromQL??? 2.如何查询??? 1.什么是PromQL??? PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持.并且被广泛应用在Prometheus的日常应用当中,包括对数据查询.可视化.告警处理当中.前面的笔记当中有说道我们通过exporter采集到的数据是以时间序列(time-series)的方式保存在内存数据库中,并定时保存到硬盘.time-series是一个按照时间戳和值的顺序存放,可以说是一种矢量值…
Prometheus promQL查询语言 Prometheus提供了一种名为PromQL (Prometheus查询语言)的函数式查询语言,允许用户实时选择和聚合时间序列数据.表达式的结果既可以显示为图形,也可以在Prometheus的表达式浏览器中作为表格数据查看,或者通过HTTP API由外部系统使用. 准备工作 在进行查询,这里提供下我的配置文件如下 [root@node00 prometheus]# cat prometheus.yml # my global config globa…
常用查询: https://songjiayang.gitbooks.io/prometheus/content/exporter/nodeexporter_query.html group by 操作 sum/avg/...(子表达式) by (用于分组的字段1, 用于分组的字段2...) 或 sum/avg/... by (用于分组的字段1, 用于分组的字段2...) (子表达式) 例如 CPU 使用率 100 - (avg by (instance) (irate(node_cpu{ins…
PromQL (Prometheus Query Language) 是 Prometheus 自己开发的数据查询 DSL 语言,语言表现力非常丰富,内置函数很多,在日常数据可视化以及rule 告警中都会使用到它. 在页面 http://localhost:9090/graph 中,输入下面的查询语句,查看结果,例如: prometheus_http_requests_total{code="200"}   查询结果类型 PromQL 查询结果主要有 3 种类型: 瞬时数据 (Inst…
PromQL(Prometheus Query Language)是 Prometheus 自己开发的表达式语言,语言表现力很丰富,内置函数也很多.使用它可以对时序数据进行筛选和聚合. 1- PromQL 语法 1.1- 数据类型 PromQL 表达式计算出来的值有以下几种类型: 瞬时向量 (Instant vector): 一组时序,每个时序只有一个采样值 区间向量 (Range vector): 一组时序,每个时序包含一段时间内的多个采样值 标量数据 (Scalar): 一个浮点数 字符串…
PromQL操作符 使用PromQL除了能够方便的按照查询和过滤时间序列以外,PromQL还支持丰富的操作符,用户可以使用这些操作符对进一步的对事件序列进行二次加工.这些操作符包括:数学运算符,逻辑运算符,布尔运算符等等. 数学运算 例如,我们可以通过指标node_memory_free_bytes_total获取当前主机可用的内存空间大小,其样本单位为Bytes.这是如果客户端要求使用MB作为单位响应数据,那只需要将查询到的时间序列的样本值进行单位换算即可: node_memory_free_…
初识PromQL Prometheus通过指标名称(metrics name)以及对应的一组标签(labelset)唯一定义一条时间序列.指标名称反映了监控样本的基本标识,而label则在这个基本特征上为采集到的数据提供了多种特征维度.用户可以基于这些特征维度过滤,聚合,统计从而产生新的计算后的一条时间序列. PromQL是Prometheus内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持.并且被广泛应用在Prometheus的日常应用当中,包括对数据查询.可视化…
解析PromQL 目前对Prometheus 的promQL 的解析文章比较少,且Prometheus官方也没有提供一个公共的库来对齐进行解析.下面实现对promQL的解析,并实现注入label功能. 表达式类型 AggregateExpr 对应聚合操作,如sum without (instance) (http_requests_total),定义可以查看Aggregation operators.源码定义在prometheus/promql/parser/lex.go // Aggregat…
PromQL的简单使用 一.背景 二.PromQL的数据类型 三.字面量 1.字符串字面量 2.浮点数字面量 四.时间序列选择器 1.即时向量选择器 1.组成部分 2.指标名称和匹配器的组合 3.匹配器 2.区间向量选择器 1.时间格式 3.偏移量修改器 五.运算符 1.算术运算符 2.比较运算符 3.集合运算符 4.运算符的优先级 5.向量匹配 1.基础知识 2.示例数据 1.一对一 1.语法格式 2.示例 1.查询语句: 2.解释: 2.一对多或多对一 1.语法格式 2.示例 1.查询语句:…
Prometheus的四种数据类型 counter (只增不减 计数) Gauge (常规数值 可变化大小) histogram (柱状图 小于上边界的 总数与次数) summary (分位数  小于自定义值的百分比 总数与次数) Counter类型(只增不减 重启清空) Counter是计数器类型: 1.Counter 用于累计值,例如记录请求次数.任务完成数.错误发生次数. 2.一直增加,不会减少. 3.重启进程后,会被重置. 例如:http_response_total{method="G…
PromQL(Prometheus Query Language)为Prometheus tsdb的查询语言.是结合grafana进行数据展示和告警规则的配置的关键部分. 本文默认您已了解Prometheus的四种指标类型: counter(计数器) gauge (仪表类型) histogram(直方图类型) summary (摘要类型) 便于读者实践,本文大部分样本数据target: Prometheus node_exporter 表达式数据类型 PromQL查询语句即表达式,实现的四种数据…
数据样本 直方图类型 delta函数 运算操作 数学运算 node_disk_info / 100 当瞬时向量与标量之间进行数学运算时,数学运算符会依次作用域瞬时向量中的每一个样本值,从而得到一组新的时间序列 瞬时向量与瞬时向量之间进行数学运算 依次找到与左边向量元素匹配(标签完全一致)的右边向量元素进行运算,如果没找到匹配元素,则直接丢弃.同时新的时间序列将不会包含指标名称 布尔运算过滤时间序列 (node_memory_MemTotal_bytes - node_memory_MemFree…
Prometheus 通过指标名称(metrics name)以及对应的一组标签(label)唯一定义一条时间序列.指标名称反映了监控样本的基本标识,而 label 则在这个基本特征上为采集到的数据提供了多种特征维度.用户可以基于这些特征维度过滤.聚合.统计从而产生新的计算后的一条时间序列. PromQL 是 Prometheus 内置的数据查询语言,其提供对时间序列数据丰富的查询,聚合以及逻辑运算能力的支持.并且被广泛应用在 Prometheus 的日常应用当中,包括对数据查询.可视化.告警处…
0x00 简单的时间序列选择 返回度量指标 http_requests_total 的所有时间序列样本数据: http_requests_total 返回度量指标名称为 http_requests_total,标签分别是 job="apiserver", handler="/api/comments" 的所有时间序列样本数据: http_requests_total{job="apiserver", handler="/api/comm…
概述 Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理.某些函数有默认的参数,例如:year(v=vector(time()) instant-vector).其中参数 v 是一个瞬时向量,如果不提供该参数,将使用默认值 vector(time()).instant-vector 表示参数类型. abs() abs(v instant-vector) 返回输入向量的所有样本的绝对值. absent() absent(v instant-vector),如果传递给它的向…
Basics 即时矢量选择器 =:匹配与标签相等的内容!=:不匹配与标签相等的内容=~: 根据正则表达式匹配与标签符合的内容!~:根据正则表达式不匹配与标签符合的内容 示例: http_requests_total{environment=~"staging|testing|development",method!="GET"} #这将匹配method不等于GET,environment匹配到staging,testing或development的http_requ…
目录 说明 CPU 内存 磁盘监控 磁盘空间利用率百分比 预计饱和 说明 基于上一篇文章的基础,这里做一些关于 CPU.内存.磁盘的一些基础查询语句. CPU 通过查询 metric值为 node_cpu_seconds_total 来获取当前CPU 的所有信息 直接通过此参数参数,会查到的数据是当前CPU的所有相关的收集到的数据. 此时就需要使用 irate 函数,用于计算距离向量中的实际序列的每秒顺势增长率. 再根据标签筛选来查询如下: irate(node_cpu_seconds_tota…
Metrics类型 根据不同监控指标之间的差异,Prometheus定义了4中不同的指标类型(metric type):Counter(计数器).Gauge(仪表盘).Histogram(直方图).Summary(摘要). 最常用的两种数据类型: counter:此类型的指标其工作方式和计数器一样,只增不减(除非系统发生重置).例如 node_cpu_seconds_total{mode="idle"} cpu空闲时间. Gauge:用于反应该样本的当前状态,该样本数可增可减.例如可用…
关于Prometheus Prometheus是一套开源的监控系统,它将所有信息都存储为时间序列数据:因此实现一种Profiling监控方式,实时分析系统运行的状态.执行时间.调用次数等,以找到系统的热点,为性能优化提供依据. 监控方式 程序代码收集运行数据写入到redis,通过API接口开放给Prometheus,Prometheus定时去抓取接口上的数据,形成时间系数据存入到本地.同时通过promql与开放接口可视化数据到前端.   一.采集运行数据写入到redis 在采集数据之前,先要明白…
Prometheus 是一个开源的监控系统.支持灵活的查询语言(PromQL),采用 http 协议的 pull 模式拉取数据等特点使 Prometheus 即简单易懂又功能强大. Prometheus 由 server, client, push gateway, exporter, alertmanager 等核心组件构成.Prometheus server 主要用于抓取和存储数据.Client libraries 可以用来连接 server 并进行查询等操作.Push gateway  用…
Prometheus 是一个非常优秀的监控工具.准确的说,应该是监控方案.Prometheus 提供了监控数据搜集.存储.处理.可视化和告警一套完整的解决方案. 让我们先来看看 Prometheus 的架构. 架构 Prometheus 架构如下: 官网上的原始架构图比上面这张要复杂一些,为了集中大家的注意力,我只保留了最重要的组件. Prometheus Server Prometheus Server 负责从 Exporter 拉取和存储监控数据,并提供一套灵活的查询语言(PromQL)供用…
Prometheus有着非常高效的时间序列数据存储方法,每个采样数据仅仅占用3.5byte左右空间,上百万条时间序列,30秒间隔,保留60天,大概花了200多G(引用官方PPT). 接下来让我们看看他的原理. Prometheus内部主要分为三大块,Retrieval是负责定时去暴露的目标页面上去抓取采样指标数据,Storage是负责将采样数据写磁盘,PromQL是Prometheus提供的查询语言模块. 从最原始的抓取数据上来看,基本是这个样子: 每个Metric name代表了一类的指标,他…
1 什么是 Kubernetes? Kubernetes 是 Google 开源的容器集群管理系统,其管理操作包括部署,调度和节点集群间扩展等. 如下图所示为目前 Kubernetes 的架构图,由 master 和 node 端构成,调度部署和扩展由 master 发起,node 协助 master 实现这些功能.  使用 Kubernetes 可以做到: 自动化容器的部署和复制:随时扩展或收缩容器规模:将容器组织成组,并且提供容器间的负载均衡:提供容器弹性,如果容器失效就替换它等等. 2 P…
前言 本文主要介绍如何使用Grafana和Prometheus以及node_exporter对Linux服务器性能进行监控.下面两张图分别是两台服务器: 服务器A 服务器B 概述 Prometheus是一个开源的服务监控系统,它通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上. 多维数据模型(时序列数据由metric名和一组key/value组成) 在多维度上灵活的查询语言(PromQl) 不依赖分布式存储,单主节点工作. 通过基于HTTP的pull方式采集时序数据 可以通过pus…
前言 本文可能不会详细记录每一步实现的过程,但一定程度上可以引领小伙伴走向更开阔的视野,串联每个环节,呈现予你不一样的效果. 业务规模 8个平台 100+台服务器 10+个集群分组 微服务600+ 用户N+ 面临问题 随着分布式微服务容器技术的发展,传统监控系统面临许多问题: 容器如何监控 微服务如何监控 集群性能如何进行分析计算 如何管理agent端大量配置脚本 这些都是传统监控所要面临的棘手问题,那么如何解决当前遇到的问题,GPE横空出世,后面会重点分析. 系统监控 目标群体:系统日志.服务…