Prometheus-PromQL常用函数了解

一、数据格式了解

exporter暴漏的数据以下边的方式进行呈现

# HELP node_filesystem_free_bytes Filesystem free space in bytes.  #解释
# TYPE node_filesystem_free_bytes gauge  #数据类型
node_filesystem_free_bytes{device="/dev/mapper/centos_test-  root",fstype="xfs",mountpoint="/"} 1.163782144e+10  #metric和对应的值
node_filesystem_free_bytes{device="/dev/sda1",fstype="xfs",mountpoint="/boot"} 7.6972032e+07
node_filesystem_free_bytes{device="rootfs",fstype="rootfs",mountpoint="/"} 1.163782144e+10
node_filesystem_free_bytes{device="tmpfs",fstype="tmpfs",mountpoint="/run"} 9.43960064e+08
node_filesystem_free_bytes{device="tmpfs",fstype="tmpfs",mountpoint="/run/user/0"} 1.90795776e+08
# HELP node_filesystem_readonly Filesystem read-only status.
# TYPE node_filesystem_readonly gauge
node_filesystem_readonly{device="/dev/mapper/centos_test-root",fstype="xfs",mountpoint="/"} 0
node_filesystem_readonly{device="/dev/sda1",fstype="xfs",mountpoint="/boot"} 0
node_filesystem_readonly{device="rootfs",fstype="rootfs",mountpoint="/"} 0
node_filesystem_readonly{device="tmpfs",fstype="tmpfs",mountpoint="/run"} 0
node_filesystem_readonly{device="tmpfs",fstype="tmpfs",mountpoint="/run/user/0"} 0

然后prometheus拉取瞬时的(那一刻的数据)exporter暴露的数据,以时间序列的格式存储在自身的tsdb(时间序列数据库)数据库,当在prometheus web查询时,获取的数据也是那一瞬间的数据,可称作瞬时向量。存储在tsdb的数据格式如下:

<--------------- metric ---------------------><-timestamp -><-value->
up{instance="192.168.71.21:9100",job="node_exporter"}@1600572300 =>1
up{instance="192.168.71.22:9100",job="node_exporter"}@1600572300 =>0
up{instance="localhost:9090",job="prometheus"}@1600572300 =>1

二、PromQL操作符

标签匹配(瞬时向量)

根据标签进行匹配,获取的值是那一瞬间的值

  1. = :根据label进行匹配。匹配device为/dev/mapper/centos_test-root的时间序列
node_filesystem_avail_bytes{device="/dev/mapper/centos_test-root"}
  1. != :正则,不等于
node_filesystem_avail_bytes{device!="/dev/mapper/centos_test-root"}
  1. ~ :label=~regx,正则匹配。匹配挂载点为/boot、/、/run的时间序列
node_filesystem_avail_bytes{mountpoint=~"/boot|/|/run"}
  1. ~! :非。匹配除了挂载点为/boot、/、/run的时间序列
node_filesystem_avail_bytes{mountpoint=~!"/boot|/|/run"}

范围查询(区间向量查询)

查询一定时间范围内的数据

  • []:时间范围选择.查看1分钟内所有时间点的剩余内存(这个时间点是由prometheus抓取数据的频率决定,这里定义的是每15秒抓取一次数据)
node_memory_MemFree_bytes{}[1m]

时间单位有:

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

时间位移查询

查询之前某个时间点的数据,也是瞬时向量

  • offset:位移操作符,metric{label=value} offset 1d。查询1分钟前的剩余内存
node_memory_MemFree_bytes{} offset 1m

数学运算符

  • + (加法)
  • - (减法)
  • * (乘法)
  • / (除法)
  • % (求余)
  • ^ (幂运算)

布尔运算

  • == (相等)
  • != (不相等)
  • > (大于)
  • < (小于)
  • >= (大于等于)
  • <= (小于等于)

布尔操作符,改变运算行为,使结果输出为1或0,符合运算就输出0,否则输出1

metric{label=value} > bool 100

集合运算符

  • vector1 and vector2
  • vector1 or vector2
  • vector1 unless vector2

操作符优先级

^
*, /, %
+, -
==, !=, <=, <, >=, >
and, unless
or

向量与向量之间的计算

  • ignoring:在匹配时忽略某些标签
  • on:将匹配限定在某些标签之内
  • group_left:如果左边标签多的话,也就是多对一,使用group_left
  • group_right:如果右边标签多的话,也就是一对多,使用group_right
  1. 一对一匹配(标签数量相同,排除不同的标签或限制指定的标签进行匹配)
    vector1 / ignoring(code) vector2
  2. 多对一匹配和一对多
    vector1 on(label) group_left vector2
    vector1 on(label) group_right vector2


node_filesystem_avail_bytes / ignoring(device,fstype,mountpoint) group_left up

三、PromQL聚合操作

  • sum (求和)
  • min (最小值)
  • max (最大值)
  • avg (平均值)
  • stddev (标准差)
  • stdvar (标准方差)
  • count (计数)
  • count_values (对value进行计数)
  • bottomk (后n条时序)
  • topk (前n条时序)
  • quantile (分位数)

1. 按照mode计算cpu平均使用时间

avg(node_cpu_seconds_total) by (mode)

2. 计算http请求数前5位的时间序列

topk(5,prometheus_http_requests_total)

四、PromQL内置函数

  • up:查看exporter状态,正常为1,异常为0
  • rate:计算增长率
  • irate:跟rate一样,但是irate是根据区间向量最后两个数据进行计算,更加灵敏
  • predict_linear:预测函数,根据简单线性回归进行计算。
  • label_replace:标签替换

1. 根据2小时内的数据,计算未来4个小时,磁盘剩余空间是否为0

predict_linear(node_filesystem_files_free{device="/dev/mapper/centos_test-root"}[2h],4*3600)<0

2. 标签替换

格式

label_replace(v,dest_label,dest_value,replace_label,regx)

没有替换时
在这里插入图片描述

替换之后
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
prometheus-webhook-dingtalk 是一个用于将 Prometheus 监控告警消息发送到钉钉的 Webhook 工具。它可以帮助你将 Prometheus 监控告警通过钉钉机器人发送到指定的群组或用户。 你可以通过以下步骤来配置和使用 prometheus-webhook-dingtalk: 1. 安装 prometheus-webhook-dingtalk:你可以使用 Go 工具链来安装 prometheus-webhook-dingtalk,运行以下命令: ``` go get github.com/timonwong/prometheus-webhook-dingtalk/cmd/dingtalk ``` 2. 创建钉钉机器人:在钉钉中创建一个自定义机器人,并获取到它的 Webhook 地址,用于将告警消息发送到指定的群组或用户。 3. 创建配置文件:在 prometheus-webhook-dingtalk 的配置文件中,你需要指定钉钉机器人的 Webhook 地址以及其他相关参数。你可以创建一个名为 config.yml 的配置文件,并将以下示例内容填入: ```yaml listen: 0.0.0.0:8060 dingtalk: webhook: https://oapi.dingtalk.com/robot/send?access_token=your_webhook_token ``` 4. 启动 prometheus-webhook-dingtalk:运行以下命令来启动 prometheus-webhook-dingtalk: ``` dingtalk -config.file=config.yml ``` 5. 配置 Prometheus:在 Prometheus 的配置文件中,添加以下内容来指定告警消息的接收端: ```yaml receivers: - name: 'dingtalk' webhook_configs: - url: 'http://prometheus-webhook-dingtalk:8060/dingtalk/webhook' ``` 6. 重新启动 Prometheus:确保 Prometheus 已经重新加载了配置文件,并重启 Prometheus 服务。 现在,当 Prometheus 监控触发告警时,prometheus-webhook-dingtalk 将会将告警消息发送到钉钉机器人的 Webhook 地址,从而通知到指定的群组或用户。 请注意,以上步骤仅为一般示例,实际操作可能会因环境和需求而有所不

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

real向往

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值