prometheus中常用的查询

本文介绍了如何使用Prometheus的HTTP API进行实时监控数据查询。主要包括直接查询特定监控指标、按标签筛选以及使用正则表达式匹配监控指标的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

prometheus server 可以通过HTTPAPI的方式进行查询,官网链接https://prometheus.io/docs/prometheus/latest/querying/basics/

 我这边主要用到的是实时查询,当然prometheus还支持历史查询,我这里 先介绍实时查询,其他的可以直接参考官方文档。

实时查询接口:

"%s/api/v1/query?query=%s"

(1) 直接查询某一监控指标:

比如查询 process_start_time_seconds,

http://localhost:9090/api/v1/query?query=process_start_time_seconds

{
    "status":"success",
    "data":{
        "resultType":"vector",
        "result":[
            {
                "metric":{
                    "__name__":"process_start_time_seconds",
                    "instance":"localhost:9090",
                    "job":"prometheus"
                },
                "value":[
                    1533194622.184,
                    "1532609170.42"
                ]
            },
            {
                "metric":{
                    "__name__":"process_start_time_seconds",
                    "instance":"localhost:9295",
                    "job":"postgres"
                },
                "value":[
                    1533194622.184,
                    "1533034386.88"
                ]
            }
        ]
    }
}

(2)根据某一字段加上标签:

比如查询job为prometheus的process_start_time_seconds指标:

http://localhost:9090/api/v1/query?query=process_start_time_seconds{job="prometheus"}

(3)正则表达式匹配前缀:

比如一些监控 指标都以pro开头,可以通过正则表达式匹配前缀的方式一把搂回来:

htp://localhost:9090/api/v1/query?query={__name__=~"pro.*"}

当然prometheus是支持各个标签 label之间通过and ,or ,unless进行组合,比如:

htp://localhost:9090/api/v1/query?query={__name__=~"pro.*"}and{job="progres"}

查询出job名为progres,标签名以pro为前缀的监控数据。

 

### Prometheus 数据查询语法使用教程 Prometheus数据查询主要依赖于其内置的查询语言 PromQL (Prometheus Query Language)[^1]。以下是关于如何在 Prometheus 中进行数据查询的相关说明: #### 1. 查询基础 PromQL 是一种强大的查询语言,专为处理时间序列数据而设计。它可以执行多种操作,包括但不限于过滤、聚合以及复杂的数据转换[^3]。 - **瞬时向量**:表示某一时刻的时间序列集合。例如,`http_requests_total` 将返回所有匹配该名称的时间序列。 - **区间向量**:表示一段时间范围内的样本集。通过指定 `[duration]` 来定义时间段,如 `http_requests_total[5m]` 表示过去五分钟内所有的请求记录[^2]。 #### 2. 基本查询结构 基本查询由以下几个部分组成: - **指标名**:这是查询的核心组件,用于定位特定的时间序列。例如,`node_cpu_seconds_total` 可以用来查询 CPU 使用情况。 - **标签过滤器**:允许进一步缩小目标范围。格式为 `{<label_name>="<value>"}` 或者 `{__name__=~"<regex_pattern>"}`。例如,`{job="node-exporter", instance="localhost:9100"}`。 #### 3. 聚合与计算 为了更好地分析数据,PromQL 提供了一系列内置函数来支持各种类型的聚合操作。常见的有求和 (`sum`)、平均值 (`avg`) 和计数 (`count`) 等。这些函数通常配合分组参数一起使用,比如按实例或作业分类汇总统计结果。 ```promql sum by(instance)(rate(http_requests_total[5m])) ``` 上述例子展示了如何基于每台主机计算 HTTP 请求速率并对其进行加总。 #### 4. 时间偏移功能 如果需要对比当前状态同历史某段时间的状态差异,则可利用 offset 关键字实现这一点。下面这个命令会显示相对于现在两小时前的错误率变化趋势: ```promql irate(node_network_receive_errs_total{device="eth0"} offset 2h) ``` 此特性对于诊断问题或者评估改进效果非常有用。 --- ### 示例代码片段 以下是一些实用的 PromQL 查询模板: ```promql // 获取最近一分钟内存利用率百分比 (1 - sum(node_memory_MemFree_bytes) / sum(node_memory_MemTotal_bytes)) * 100 // 统计过去十分钟内发生的异常事件总数 increase(job_failure_count[10m]) // 计算磁盘读写速度(单位MB/s) (sum(rate(node_disk_io_time_weighted_seconds_total[1m])) without(device) * 1e-6 ``` 以上脚本分别实现了不同维度上的性能监测需求[^4]。 ---
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值