我们现在要找出K8s集群中所有node节点的内存使用率的分布情况
quantile (0.8, ( 1 - node_memory_MemAvailable_bytes{job="kubernetes-service-endpoints"} / node_memory_MemTotal_bytes{job="kubernetes-service-endpoints"} ) * 100 )直接可以看出80%的节点内存使用率在68%以下
函数 值取整ceil()
ceil(v instant-vector)样本数据向上取整。
ceil(node_load1) #1.2-->2floor()
floor(v instant-vector)与ceil()相反,floor()样本值向下取整。
round()
round(v instant-vector, to_nearest=1 scalar) 对样本值四舍五入取整。to_nearest 参数是可选的,默认为 1,表示样本返回的是最接近 1 的整数倍的值,参数可以为分数。
取整
round(prometheus_engine_query_duration_seconds_sum)取整到最近的5的倍数
round(prometheus_engine_query_duration_seconds_sum,5) 值截取clamp()
clamp(v instant-vector, min scalar, max scalar) 截取所有元素的样本值在 [min,max]集合内的样本,如果min>max返回NaN
放回样本值在10到20的样本
clamp(prometheus_http_requests_total,10,20)clamp_max()
clamp_max(v instant-vector, max scalar) 同clamp(),不过只限定样本最大值
clamp_min()
clamp_min(v instant-vector, min scalar) 同clamp(),不过只限定样本最小值
值变化统计changes()
changes(v range-vector)返回某段时间内样本值改变的次数
changes(node_load1[1m]) 复位统计resets()
resets(v range-vector) 返回样本范围时间内的复位次数。与counter使用,两个连续样本之间值如有减少则被视为计数器复位。
查看上下文交换次数计数器在5分钟内复位次数
resets(node_context_switches_total[5m]) 日期与时间管理day_of_month()
day_of_month(v=vector(time()) instant-vector)如果样本值是utc时间,则返回这个时间所属月份中的日期(1-31)
v=vector(time()) 为默认参数
day_of_month(node_boot_time_seconds)day_of_week()
day_of_week(v=vector(time()) instant-vector) 同上,如果样本值是utc时间,则返回这个时间所属星期几(0-6)
days_in_month()
days_in_month(v=vector(time()) instant-vector) 如果样本值是utc时间,则返回这个时间所属月份的天数(28-31)
hour()
hour(v=vector(time()) instant-vector)如果样本值是utc时间,则返回这个时间所属一天中的第几个小时(1-13)
minute()
minute(v=vector(time()) instant-vector) 如果样本值是utc时间,则返回这个时间所属小时中的第几分钟(1-59)
month()
month(v=vector(time()) instant-vector)如果样本值是utc时间,则返回这个时间所属的月份(1-12)
year()
year(v=vector(time()) instant-vector)如果样本值是utc时间,则返回这个时间所属的年份
time()
返回自1970 年 1 月 1 日 UTC 以来的秒数,不是系统时间,而是表达式计算时那一刻的时间。
timestamp()
timestamp(v instant-vector)返回每个样本值的时间戳,自 1970 年 1 月 1 日 UTC 以来的秒数。
直方图分位数histogram_quantile()
histogram_quantile(φ float, b instant-vector) 从 bucket 类型的向量 b 中计算 φ (0 ≤ φ ≤ 1) 分位数的样本的最大值,与聚合运算符quantile相似。
计算80%请求的持续时间最大值。
histogram_quantile(0.8,rate(prometheus_http_request_duration_seconds_bucket[1d])) 差异与增长率delta()
delta(v range-vector)计算范围向量中每个时间序列元素的第一个值和最后一个值之间的差。与指标类型gauge一起使用
计算一天内内存可用量的变化
delta(node_memory_MemAvailable_bytes[1d])idelta()
idelta(v range-vector)计算范围向量中最后两个样本之间的差异。与指标类型gauge一起使用
idelta(node_memory_MemAvailable_bytes[1m])increase()
increase(v range-vector) 计算时间范围内的增量,与counter一起使用。它是速率rate(v)乘以时间范围内秒数的语法糖,主要用于人类可读性。
计算10分钟内请求增长量
increase(prometheus_http_requests_total[10m])rate()
rate(v range-vector)计算范围向量中时间序列的平均每秒增长率。
过去10分钟请求平均每秒增长率,与counter一起使用。
rate(prometheus_http_requests_total[10m])irate()
irate(v range-vector) 通过时间范围的最后两个点来计算每秒瞬时增长率。
irate(prometheus_http_requests_total[10m]) label管理label_join()