学习总结录 学习总结录
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
首页
归档
分类
标签
  • Java基础
  • Java集合
  • MySQL
  • Redis
  • JVM
  • 多线程
  • 计算机网络
  • 操作系统
  • Spring
  • Kafka
  • Elasticsearch
  • Python
  • 面试专题
  • 案例实践
  • 工具使用
  • 项目搭建
  • 服务治理
  • ORM框架
  • 分布式组件
  • MiniSpring
  • 设计模式
  • 算法思想
  • 编码规范
友链
关于
GitHub (opens new window)
  • 案例实践

  • 工具使用

    • MyBatisPlus
    • Linux
    • RabbitMQ
    • Elasticsearch
    • JWT
    • MongoDB
    • Redis
    • Git
    • Kafka
    • Docker
    • PromQL
      • 一、prometheus
        • 1、概述
        • 2、安装
      • 二、Grafana
        • 1、概述
        • 2、安装
      • 三、PromQL基础用法
        • 1、完全匹配
        • 2、正则匹配
        • 3、范围查询
        • 4、时间位移操作
        • 5、聚合操作
        • 6、标量
        • 7、字符串
      • 四、PromQL操作符
        • 1、数字运算
        • 2、布尔运算
        • 3、集合操作
      • 五、PromQL聚合操作
        • 1、求和
        • 2、最大
        • 3、最小
        • 4、平均值
        • 5、标准差
        • 6、计数
        • 7、前后几条
      • 六、PromQL内置函数
        • 1、increase
        • 2、rate
        • 3、irate
      • 参考
    • AviatorScript
    • Java 17
    • Groovy
  • 项目搭建

  • 服务治理

  • ORM框架

  • MiniSpring

  • 案例归档
  • 工具使用
旭日
2023-05-21
目录

PromQL

# 一、prometheus

# 1、概述

prometheus是一个开源的系统监控和报警系统,PromQL是其内置的一种查询语言。

# 2、安装

安装操作

brew install prometheus

运行操作

cd /opt/homebrew/bin #根据实际homebrew安装目录
prometheus --config.file=/opt/homebrew/etc/prometheus.yml
  • --config.file 配置运行环境,请根据实际目录配置

访问终端

http://localhost:9090/

# 二、Grafana

# 1、概述

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。

# 2、安装

# 安装 grafana
brew install grafana
# 启动
brew services start grafana
# 访问
http://localhost:3000/

初次访问账号和密码都是admin。

# 三、PromQL基础用法

首先,我们访问prometheus,在输入框中输入prometheus_http_requests_total,出现如下数据:

image-20230521150151290

# 1、完全匹配

过滤掉code不为200的请求:

prometheus_http_requests_total{code!='200'}

# 2、正则匹配

匹配handler 标签以 /api/v1 开头的记录:

prometheus_http_requests_total{handler=~"/api/v1/.*"}

瞬时向量和区间向量

# 瞬时向量表达式,选择当前最新的数据
prometheus_http_requests_total{} 
# 区间向量表达式,选择以当前时间为基准,5分钟内的数据
prometheus_http_requests_total{}[5m]

# 3、范围查询

如果我们要查询一个时间段的数据,比如5分钟之内的数据:

prometheus_http_requests_total{}[5m]

s - 秒 m - 分钟 h - 小时 d - 天 w - 周 y - 年

# 4、时间位移操作

如果我们想查询 5 分钟前的瞬时样本数据,或昨天一天的区间内的样本数据:

# 查询五分钟之前
prometheus_http_requests_total{} offset 5m
# 查询前一天这个小时内的数据
prometheus_http_requests_total{}[1h] offset 1d

# 5、聚合操作

# 查询请求的总数
count(prometheus_http_requests_total)
# 查询请求的数据合
sum(prometheus_http_requests_total)

# 6、标量

通过sum(prometheus_http_requests_total)返回的仍然是一个瞬时向量,我们需要将其转换为浮点型的数字值:

scalar(sum(prometheus_http_requests_total))

# 7、字符串

字符串和我们开发过程中String类似,不过多赘述。

# 四、PromQL操作符

PromQL 还支持丰富的操作符,用户可以使用这些操作符对进一步的对事件序列进行二次加工。这些操作符包括:数学运算符,逻辑运算符,布尔运算符等等。

# 1、数字运算

prometheus_http_response_size_bytes_sum/8/1024

# 2、布尔运算

prometheus_http_requests_total > bool 20

这里注意区分和范围查询的区别:

prometheus_http_requests_total > 20

语句二是会过滤掉没有大于20的数据,但是语句一是会显示全部数据,但是对于大于20的数据为1,反之为0。

# 3、集合操作

通过集合运算,可以在两个瞬时向量与瞬时向量之间进行相应的集合操作:

prometheus_http_requests_total{code='400'} or prometheus_http_requests_total{code='302'}

and 与操作:list1为 A B C,list2为 B C D,那么 list1 and list2 的结果为:B C。 or 或操作:list1为 A B C,list2为 B C D,那么 list1 or list2 的结果为:A B C D。 unless 排除操作:list1为 A B C,list2为 B C D,那么 list1 unless list2 的结果为:A。

# 五、PromQL聚合操作

# 1、求和

sum(prometheus_http_requests_total)

# 2、最大

max(prometheus_http_requests_total)

# 3、最小

min(prometheus_http_requests_total)

# 4、平均值

avg(prometheus_http_requests_total)

# 5、标准差

stddev(prometheus_http_requests_total)

# 6、计数

count(prometheus_http_requests_total)

# 7、前后几条

# 前五条
bottomk(5, prometheus_http_requests_total)
# 后五条
topk(5, prometheus_http_requests_total)

# 六、PromQL内置函数

# 1、increase

increase(v range-vector),参数 v 是一个区间向量。该函数计算的结果是该区间的增长量。

increase(node_cpu_seconds_total{instance="172.22.21.143:9100", cpu="0", mode="idle"}[2m])

该查询的结果vaule值表示,主机 172.22.21.143 的第 0 个 CPU 在过去 2 分钟时间里,idle 状态所占时长

# 2、rate

rate(v range-vector),可以直接计算区间向量在时间窗口内平均变化率。对于快速变化的 Counter,如果使用 rate,因为其计算的是平均变化率,很容易把峰值削平。除非我们把时间间隔设置的足够小,才能够减弱这种效应。

# 3、irate

irate(v range-vector),同样用于计算区间向量的变化率,但是其表示的是瞬时增长率。会取最后两个样本值计算瞬时变化率。所以相比较 rate 具有更高的灵敏度。

# 参考

PromQL快速入门 (opens new window)

#PromQL
上次更新: 2024/06/29, 15:13:44
Docker
AviatorScript

← Docker AviatorScript→

最近更新
01
基础概念
10-31
02
Pytorch
10-30
03
Numpy
10-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 旭日 | 蜀ICP备2021000788号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式