Carry の Blog Carry の Blog
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carry の Blog

好记性不如烂键盘
首页
  • Nginx
  • Prometheus
  • Iptables
  • Systemd
  • Firewalld
  • Docker
  • Sshd
  • DBA工作笔记
  • MySQL
  • Redis
  • TiDB
  • Elasticsearch
  • Python
  • Shell
  • MySQL8-SOP手册
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 工作笔记

  • K8S

  • Systemd

  • Nginx

  • Supervisord

  • OpenLdap

  • OpenVPN

  • GitLab

  • Sshd

  • WebDev

  • Docker

  • Prometheus

    • prometheus监控介绍
    • PromQL介绍
    • Rclone

    • Iptables

    • Firewalld

    • Linux笔记
    • Prometheus
    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#监控查询语言
    上次更新: 4/24/2025

    ← prometheus监控介绍 使用 rclone 挂载 WebDAV 服务(含 systemctl 服务与高级配置)→

    最近更新
    01
    tidb fast ddl
    04-04
    02
    TiDB配置文件调优 原创
    04-03
    03
    如何移除TiDB中的表分区 原创
    04-03
    更多文章>
    Theme by Vdoing
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式