address:双下划线标签,是prometheus系统的默认标签,不显示在target页面当中,只有把光标移动到label的字段上,才能显示默认标签。
匹配标签值 操作符号:
完全相等
!= 不等于,相当于取反
正则表达式匹配-
!- 正则表达式取反
数学运算:
+加法
-减法
*乘法
/除法
%取余
^幂运算
通配符:
. 任意单个字符
.* 多个任意资源
.+ 一个或者多个任意字符
数据类型:
1、瞬时向量(一组数据。每个时序只有一个采样值)
2、区间向量
3、标量数据
4、字符串
5、counter类型
总数,在promgl当中没有直接作用,rate topk increase irate函数来生成样本数据的变化情况。
increase 要结合区间向量一起使用,时间序列在一定范围内的增量
Tirate:高灵敏度的函数,计算指标是瞬时速率,基于样本范围内的最后两个样本数据进行计算。irate更使用与短时间内的变化速率分析
6、gauge类型
用于存储值可增可减的指标样本数据。求和,求平均数,取最小值和最大值,也会结合delta和predict linear函数一把使用。
delta: 计算范围向量中的每个时间序列元素的第一个值和最后一个值之间的差,展示不同时间点上样本值的差值,
predict linear: 可以预测时间序列V在T 秒之后的变化趋势,对样本数据的变化趋势做出预测。
predict linear(node filesystem filesfinstance="master01"32h],4*3600)
node filesystem_files 文件数,选择的标签是master01
2h过去两个小时,4*3600 未来4个小时
7、histogram类型
对一定时间范围内的数据进行采样,通常是请求持续的时长和响应大小的类型这一类,计入一个可配的桶(bucket),通过区间对样本进行筛选,也可以统计求和。
node authorizer graph actions duration seconds bucketlinstance="192.168.233.91:6443" le="0.0002"
观测桶的上边界,样本的统计区间,表示所有的样本值小于等于上边界值的所有样本数量.
le="+Inf”,最大区间,包含的所有样本数量。
apiserver_current inqueue requestsfinstance="192.168.233.91:6443 >=1
快速的了解监控样本的分布情况。
8、summary类型
rate(container_cpu load average_10sfinstance="node01"3[5m])
展示: container_cpu _load_average_10s指标的过去每5分钟的采样值。对应的标签是node01
sum(container_memory usage bytes instance="node01"1)/1024/1024/1024
#计算 master01 节点所有容器总计内存:
sum(container_memory_usage_bytes{instance=~"master01"})/1024/1024/1024
#计算 master01 节点最近 1m 所有容器 cpu 使用率:
sum (rate (container_cpu_usage_seconds_total{instance=~"master01"}[1m])) / sum (machine_cpu_cores{ instance =~"master01"}) * 100
#计算最近 1m 所有容器 cpu 使用率
sum by (id)(rate (container_cpu_usage_seconds_total{id!="/"}[1m]))
#查询 K8S 集群中最近 1m 每个 Pod 的 CPU 使用率
sum by (name)(rate (container_cpu_usage_seconds_total{image!="", name!=""}[1m]))
(1)每台主机 CPU 在最近 5 分钟内的平均使用率
(1 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (instance)) * 100
(2)查询 1 分钟的 load average 的时间序列是否超过主机 CPU 数量 2 倍
node_load1 > on (instance) 2 * count (node_cpu_seconds_total{mode="idle"}) by (instance)
(3)计算主机内存使用率
可用内存空间:空闲内存、buffer、cache 指标之和
node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes
已用内存空间:总内存空间减去可用空间
node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)
使用率:已用空间除以总空间
(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100
(4)计算所有 node 节点所有容器总计内存:
sum by (instance) (container_memory_usage_bytes{instance=~"node*"})/1024/1024/1024
(5)计算 node01 节点最近 1m 所有容器 cpu 使用率:
sum (rate(container_cpu_usage_seconds_total{instance="node01"}[1m])) / sum (machine_cpu_cores{instance="node01"}) * 100
#container_cpu_usage_seconds_total 代表容器占用CPU的时间总和
(6)计算最近 5m 每个容器 cpu 使用情况变化率
sum (rate(container_cpu_usage_seconds_total[5m])) by (container_name)
(7)查询 K8S 集群中最近 1m 每个 Pod 的 CPU 使用情况变化率
sum (rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m])) by (pod_name)
#由于查询到的数据都是容器相关的,所以最好按照 Pod 分组聚合