Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • OpenClaw
  • Hermes Agent
  • Claude Code
  • MySQL8-SOP手册
  • MySQL实战45讲学习笔记
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • OpenClaw
  • Hermes Agent
  • Claude Code
  • MySQL8-SOP手册
  • MySQL实战45讲学习笔记
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作笔记

    • 实用linux命令-nc
    • 实用linux命令-lsof
    • 实用linux命令-ss
    • Bash 备忘清单
    • Ansible 备忘清单
    • linux 文件的权限和属性
    • GPT分区使用 `parted` 扩展分区的操作流程
    • 实用linux命令-sed
    • VSCode快捷键备忘录
    • 实用linux命令-curl
  • K8S

  • Nginx

  • 监控

  • 网络安全

  • 其他

  • Docker

  • Linux笔记
  • 监控
Carry の Blog
2023-06-27
目录

PromQL介绍原创

Prometheus Query Language (PromQL) 是一种功能强大的查询语言,用于在 Prometheus 中查询和分析时间序列数据。以下是一些常用的 PromQL 查询示例,帮助你在实际监控和分析中使用。

# 基本查询

  1. 简单查询: 查询某个指标的当前值。

    node_cpu_seconds_total
    
    1
  2. 带条件的查询: 查询某个指标在特定条件下的当前值。

    node_cpu_seconds_total{mode="idle"}
    
    1

# 聚合操作

  1. 求平均值: 计算某个指标在所有实例上的平均值。

    avg(node_memory_MemAvailable_bytes)
    
    1
  2. 求和: 计算某个指标在所有实例上的总和。

    sum(node_memory_MemAvailable_bytes)
    
    1
  3. 最大值: 查询某个指标在所有实例中的最大值。

    max(node_memory_MemAvailable_bytes)
    
    1
  4. 最小值: 查询某个指标在所有实例中的最小值。

    min(node_memory_MemAvailable_bytes)
    
    1

# 计算速率

  1. 计算速率: 计算某个指标在一段时间内的变化速率。
    rate(node_cpu_seconds_total{mode="idle"}[5m])
    
    1

# 分组和子查询

  1. 按标签分组: 计算某个指标在不同标签维度上的总和。

    sum(rate(node_cpu_seconds_total[5m])) by (instance)
    
    1
  2. 分组并求平均值: 按某个标签分组并计算平均值。

    avg(rate(node_cpu_seconds_total[5m])) by (instance)
    
    1

# 比率和百分比

  1. 计算CPU使用率: 计算 CPU 使用率(非空闲时间占比)。

    100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)
    
    1
  2. 内存使用百分比: 计算内存使用百分比。

    (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
    
    1

# 结合时间范围

  1. 查询过去5分钟的平均值: 计算过去5分钟某个指标的平均值。

    avg_over_time(node_load1[5m])
    
    1
  2. 查询特定时间点的值: 查询某个指标在特定时间点的值。

    node_load1 @ 1622476800
    
    1

# 常用的Prometheus报警规则

  1. CPU使用率报警: 当某个实例的CPU使用率超过80%时触发报警。

    100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
    
    1
  2. 内存使用率报警: 当某个实例的内存使用率超过90%时触发报警。

    (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 90
    
    1
  3. 磁盘使用率报警: 当某个实例的根目录磁盘使用率超过90%时触发报警。

    (node_filesystem_size_bytes{mountpoint="/"} - node_filesystem_free_bytes{mountpoint="/"}) / node_filesystem_size_bytes{mountpoint="/"} * 100 > 90
    
    1

# 高级查询

  1. 查询前N个值: 查询某个指标的前5个最大值。

    topk(5, node_load1)
    
    1
  2. 查询变化趋势: 计算某个指标在过去一小时内的变化趋势。

    delta(node_network_receive_bytes_total[1h])
    
    1
#PromQL#监控查询语言
上次更新: 7/29/2026
最近更新
01
Nginx 运维知识地图:从配置基础到反向代理实战 原创
07-29
02
MySQL 运维知识地图:从入门配置到高可用排障 原创
07-29
03
单表数据同步方案选型:为什么不该用 mysqldump 做「实时同步」 原创
07-29
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式