0x00 简单的时间序列选择

返回度量指标 http_requests_total 的所有时间序列样本数据:

http_requests_total

返回度量指标名称为 http_requests_total,标签分别是 job="apiserver", handler="/api/comments" 的所有时间序列样本数据:

http_requests_total{job="apiserver", handler="/api/comments"}

返回度量指标名称为 http_requests_total,标签分别是 job="apiserver", handler="/api/comments",且是 5 分钟内的所有时间序列样本数据:

http_requests_total{job="apiserver", handler="/api/comments"}[5m]

[info] 注意

一个区间向量表达式不能直接展示在 Graph 图表中,但是可以展示在 Console 视图中。

使用正则表达式,你可以通过特定模式匹配标签为 job 的特定任务名,获取这些任务的时间序列。在下面这个例子中, 所有任务名称以 server 结尾。

http_requests_total{job=~".*server"}

Prometheus中的所有正则表达式都使用 RE2 语法

返回度量指标名称是 http_requests_total, 且 http 返回码不以 4 开头的所有时间序列数据:

http_requests_total{status!~"4.."}

0x01 使用函数,操作符等

返回度量指标 http_requests_total 过去 5 分钟内的 http 请求数的平均增长速率:

rate(http_requests_total[5m])

返回度量指标 http_requests_total 过去 5 分钟内的 http 请求数的平均增长速率总和,维度是 job

sum(rate(http_requests_total[5m])) by (job)
 
结果:
{job="apiserver"} 0.16666666666666666
{job="kubelet"} 0.49999876544124355

如果两个指标具有相同维度的标签,我们可以使用二元操作符计算样本数据,返回值:key: value=标签列表:计算样本值。例如,以下表达式返回每一个实例的空闲内存,单位是 MiB。

(instance_memory_limit_bytes - instance_memory_usage_bytes) / 1024 / 1024

如果想知道每个应用的剩余内存,可以使用如下表达式:

sum(
instance_memory_limit_bytes - instance_memory_usage_bytes
) by (app, proc) / 1024 / 1024

如果相同的集群调度群显示如下的每个实例的 CPU 使用率:

instance_cpu_time_ns{app="lion", proc="web", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="elephant", proc="worker", rev="34d0f99", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="turtle", proc="api", rev="4d3a513", env="prod", job="cluster-manager"}
instance_cpu_time_ns{app="fox", proc="widget", rev="4d3a513", env="prod", job="cluster-manager"}
...

我们可以按照应用和进程类型来获取 CPU 利用率最高的 3 个样本数据:

topk(3, sum(rate(instance_cpu_time_ns[5m])) by (app, proc))

假设一个服务实例只有一个时间序列数据,那么我们可以通过下面表达式统计出每个应用的实例数量:

count(instance_cpu_time_ns) by (app)

Prometheus监控学习笔记之PromQL简单示例的更多相关文章

  1. Prometheus监控学习笔记之PromQL 内置函数

    概述 Prometheus 提供了其它大量的内置函数,可以对时序数据进行丰富的处理.某些函数有默认的参数,例如:year(v=vector(time()) instant-vector).其中参数 v ...

  2. Prometheus监控学习笔记之PromQL操作符

    0x00 二元运算符 Prometheus 的查询语言支持基本的逻辑运算和算术运算.对于两个瞬时向量, 匹配行为可以被改变. 算术二元运算符 在 Prometheus 系统中支持下面的二元算术运算符: ...

  3. Prometheus监控学习笔记之全面学习Prometheus

    0x00 概述 Prometheus是继Kubernetes后第2个正式加入CNCF基金会的项目,容器和云原生领域事实的监控标准解决方案.在这次分享将从Prometheus的基础说起,学习和了解Pro ...

  4. Prometheus监控学习笔记之Prometheus不完全避坑指南

    0x00 概述 Prometheus 是一个开源监控系统,它本身已经成为了云原生中指标监控的事实标准,几乎所有 k8s 的核心组件以及其它云原生系统都以 Prometheus 的指标格式输出自己的运行 ...

  5. Prometheus监控学习笔记之360基于Prometheus的在线服务监控实践

    0x00 初衷 最近参与的几个项目,无一例外对监控都有极强的要求,需要对项目中各组件进行详细监控,如服务端API的请求次数.响应时间.到达率.接口错误率.分布式存储中的集群IOPS.节点在线情况.偏移 ...

  6. Prometheus监控学习笔记之容器监控Grafana模块

    0x00 概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警.基于友好的 Apache License 2.0 开源协议,目前是prometheus监控展示 ...

  7. Prometheus监控学习笔记之教程推荐

    最近学习K8S和基于容器的监控,发现了如下的教程质量不错,记录下来以备参考 1. K8S最佳实战(包括了K8S的Prometheus监控和EFK日志搜集) https://jimmysong.io/k ...

  8. Prometheus监控学习笔记之prometheus的federation机制

    0x00 概述 有时候对于一个公司,k8s集群或是所谓的caas只是整个技术体系的一部分,往往这个时候监控系统不仅仅要k8s集群以及k8s中部署的应用,而且要监控传统部署的项目.也就是说整个监控系统不 ...

  9. Prometheus监控学习笔记之Prometheus监控简介

    0x00 Prometheus容器监控解决方案 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的.它是一个独立的开放源码项目,并且独立于任何公司.不同 ...

随机推荐

  1. 银联卡中关于CVN/CVN2/ICVN的区别

    银联China Union Pay,是中国唯一合法的卡组织机构,同时也是EMVCo成员.关于银联卡中CVN/CVN2/ICVN的区别,刚开始我自己不了解,但经过查找资料和请教其他人,对它们的概念也渐渐 ...

  2. WireShark过滤器选项

    首先说几个最常用的关键字,"eq" 和 "=="等同,可以使用 "and" 表示并且,"or"表示或者."!& ...

  3. 21-Python3 模块

    fibo.py文件 def fib(n): a,b = 0,1 while b<n: print(b,end='') a,b = b,a+b print() def fib2(n): resul ...

  4. mac date

    格式化UTC为可读格式 mbp:~ gavin$ date -r 1546848158 2019年 1月 7日 星期一 16时02分38秒 CST 获取当前 UTC mbp:~ gavin$ date ...

  5. php curl POST multipart/form-data与application/x-www-form-urlencode的区别

    背景 CURL在 a.php 中以 POST方式向 b.php 提交数据,但b.php无法接收到数据,而 CURL 操作显示成功. 原来,"传递一个数组到CURLOPT_POSTFIELDS ...

  6. SEO--网站流量提升

    话术设置,提炼优质的话术 关键词的挖掘 1.头脑风暴 (开晨会,一堆人坐在一起聊.) 2.利用搜索引擎相关搜索(将关键词设置为搜索热词,利用工具:百度指数,查看关键词) 3.工具 4.长尾关键词(词比 ...

  7. svn加锁设置

    SVN 的锁定与解锁 简单的说,如果压根没有锁lock,那么每个人都拥有一个本地copy,每个人都能自由地对本地copy编辑edit并提交commit,这样可能会导致冲突conflict,最后不得不合 ...

  8. cocos2d-x C++ (利用定时器自定义屏幕双击事件函数)

    //GameScene.h #include "cocos2d.h" USING_NS_CC; class GameScene : public cocos2d::Layer { ...

  9. HAProxy实现mysql负载均衡

    安装 yum install haproxy 修改配置 vi /etc/haproxy/haproxy.cfg   配置如下 global daemon nbproc 1 pidfile /var/r ...

  10. 反射--> 解析JSON数据

    方法一 Persons.json文件 [ { "name": "Chris", "age": 18, "city": & ...