一: 介绍

PromSql是 Prometheus的数据库查询语法,可以方便的查找监控指标的值并且做一些数学运算帮助我们能快速和方便的去统计数据以及设置告警阈值,并且Promsql查询的是时序数据库就算查询历史数据都很快,相比zabbix这一点是很有优势的。

二: Promsql官方文档

官网文档

官方示例

Proms告警规则合集参考

链接: https://awesome-prometheus-alerts.grep.to

三: 表达式语言数据类型(Expression language data types)

(1)字符串面值(String literals): 字符串数值,例子如下

"this is a string"
'these are unescaped: \n \\ \t'
`these are not unescaped: \n ' " \t`

(2)浮点型数值(Float literals): 也就是我们常说的小数,比如

3.14

(3)矢量选择器(Instant vector selectors)

http_requests_total    # 矢量/向量
http_requests_total{job="prometheus",group="canary"}  #过滤指定标签的数据

它包含下面几种比较关系

  • =: Select labels that are exactly equal to the provided string。—— 等于
  • !=: Select labels that are not equal to the provided string.   ——不等于
  • =~: Select labels that regex-match the provided string. ——正则匹配
  • !~: Select labels that do not regex-match the provided string. —— 正则不匹配

例子:

http_requests_total{environment=~"staging|testing|development",method!="GET"}
{job=~".*"} # Bad!

本文博客地址: https://blog.csdn.net/knight_zhou/article/details/104422672

(4)时间选择器

  • s - seconds (秒)
  • m - minutes(分)
  • h - hours(小时)
  • d - days(天)
  • w - weeks(周)
  • y - years(年)

例子:

http_requests_total{job="prometheus"}[5m]  # 5分钟的数据

四 PromSql常用函数

(1) 取绝对值(abs函数)

go_gc_duration_seconds{quantile="0"}

(2)向上取整(ceil函数)

ceil(go_gc_duration_seconds{quantile="0"})

(3) 向下取整(floor函数),与ceil函数相反

floor(go_gc_duration_seconds{quantile="0"})

(4) 四舍五入(round函数)

round(go_gc_duration_seconds{quantile="0"})

(5) sum() 函数:求出找到所有value的值

 sum(go_gc_duration_seconds_count)

(6) avg()函数: 求平均值

avg(go_gc_duration_seconds_count)

(7) irate() 函数:统计平均速率

## 可以加减乘除
100 - (avg(irate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance) * 100) 

(8) rate()函数: 统计速率

rate(v range-vector)函数, 输入:范围向量,输出:key: value = 不带有度量指标,且只有标签列表:(last值-first值)/时间差。

rate(mysql_global_status_questions[2m])

注意: irate适合快速变化的计数器(counter),而rate适合缓慢变化的计数器(counter)

(9) by (标签名)

avg(go_gc_duration_seconds_count) by (instance)   # Element 只显示by后的标签值

(10) delta 函数

delta(v range-vector)函数,计算一个范围向量v的第一个元素和最后一个元素之间的差值。返回值:key:value=度量指标:差值,下面这个表达式例子,表示 mysql的慢查询5分钟之类的新增数。

delta(mysql_global_status_slow_queries{}[5m])

五: PromSql运算

支持 加(+) 减(-) 乘(*) 除(/)

比如: 计算内存使用率

((node_memory_MemTotal_bytes - node_memory_MemFree_bytes - node_memory_Buffers_bytes - node_memory_Cached_bytes) / (node_memory_MemTotal_bytes)) * 100

六: Promsql 写法实例

1. 计算cpu的个数

count (node_cpu_seconds_total) by (instance)

2. 判断负载

node_load5 > 5

补充

如果想匹配多张网卡:

sum by(instance, hostname) (irate(node_network_receive_bytes_total{device=~"eth0|eth3"}[1m]) / 128 / 1024)

UTC时间禁止在某个时间段告警

# 负载在某个时间段(凌晨3点到4点)的告警,
node_load5{} and hour() >19  and hour() <20 >5

PromSql的写法详解相关推荐

  1. android 最新写法,详解Android 硬布局item的高级写法

    本文主要介绍了Android 硬布局item的高级写法,分享给大家,具体如下: 效果: 这种布局应该是非常常见了,且写的比较多. 今天简单探讨一下效果图中上下两种布局的写法. 比较 上下效果一致 行数 ...

  2. java中synchronized的三种写法详解

    预备知识 首先,我们得知道在java中存在三种变量: 实例变量 ==> 存在于堆中 静态变量 ==> 存在于方法区中 局部变量 ==> 存在于栈中 然后,我们得明白,合适会发生高并发 ...

  3. Selenium的元素八大定位写法详解-图文并茂

    Selenium的元素八大定位详解 老鸟有兴趣可以移步Selenium元素定位神器工具谷歌浏览器插件-SelectorsHub介绍.安装和使用 目录 Selenium的元素八大定位详解 1.id定位 ...

  4. java map 输入 查询 修改_Mybatis增删改查mapper文件写法详解

    1. 插入 INSERT sql命令(命令里通过#{}获取对象属性) EG: INSERT INTO PRAC_PERSON(p_NAME,P_PASSWORD) VALUES(#{name},#{p ...

  5. Flex布局新写法兼容写法详解

    很久之前用过flex,但是没有考虑过兼容性问题,为了兼容ios一定要加上-webkit前缀: ul{display: flex; /* 新版本语法: Opera 12.1, Firefox 22+ * ...

  6. Flex布局新旧混合写法详解

    flex是个非常好用的属性,如果说有什么可以完全代替 float 和 position ,那么肯定是非它莫属了(虽然现在还有很多不支持 flex 的浏览器).然而国内很多浏览器对 Flex 的支持都不 ...

  7. 网络爬虫排除协议robots.txt介绍及写法详解.

    以上内容转载自:http://www.xgezhang.com/serach_engine_robots.html Robots协议的全称是"网络爬虫排除标准"(Robots Ex ...

  8. 切入点表达式的写法详解

    切入点表达式的写法 execution( [权限修饰符] 返回值类型 包名.类名.方法名(参数列表)) 修饰符:可以省略 返回值类型:可以指定类型.比如 String,Integer等 * ,表示任意 ...

  9. .htaccess中的apache rewrite规则写法详解

    .htaccess中的apache rewrite写法: 1 RewriteEngine On 2 RewriteCond %{HTTP_HOST} ^(www\.)?xxx\.com$ 3 Rewr ...

最新文章

  1. 参加UI培训后可以找什么工作
  2. Ext.data-Store
  3. P3527 [POI2011]MET-Meteors 整体二分 + 树状数组
  4. 2021 CCPC E. 被遗忘的计划(循环卷积+快速幂)
  5. tp5 php跨域,TP5.1解决跨域
  6. 《我的WCF之旅》博文系列汇总
  7. 梯度下降算法总结 (FG,SG,SAG,mini-batch,Momentum等等)
  8. 国寿鸿寿年金保险(分红型)
  9. android逆向工程dex2jar使用
  10. W型加密栅栏密码解密
  11. 钉钉日志范文100篇_钉钉怎么添加日志模板 几步轻松添加
  12. 大数运算:Barrett And Montgomery
  13. 2017年10月30日360最新虚拟壳脱壳后完全修复
  14. 【Love2d从青铜到王者】第十二篇:Love2d之碰撞检测(Detecting collision)
  15. 用c 语言的英文标识 阶乘,求10000的阶乘(c语言代码实现)
  16. 2017 ECNA Regional Contest-G:Question of Ingestion(dp)
  17. 欧洲急了,正式发起 2nm 芯片总攻
  18. LeetCode刷题框架总结
  19. 物联网通信技术 第6章 电信网络
  20. Gox语言中的映射类型(字典类型)及其操作-GX8.1

热门文章

  1. ---------------------------SQL之机选大乐透,双色球算法-----------------------------
  2. R语言程序逻辑验证判断
  3. 解决小程序自定义底部菜单切换闪动
  4. 【MAX78000基础案例演示】
  5. CF 472D Riverside Curio
  6. 微信趣味测评小程序独立版源码
  7. python英语词汇读音_利用Python制作查单词小程序(一):抓取来自百度翻译的单词释义和音标...
  8. 中大计算机考研复试刷人太狠,为何考研初试分数很高的人在复试中被刷?这4个致命失误你犯了?...
  9. 华为云申请SSL HTTPS
  10. AttributeError: module ‘tensorflow_core.compat.v1‘ has no attribute ‘contrib‘