Log Service提供PromQL函數對時序庫中的指標進行處理。本文介紹PromQL函數常用樣本。
abs()
abs()函數會計算時序資料中所有點的絕對值,使用方式如下。
abs(container_network_receive_bytes_total{})changes()
changes()用於統計傳入的時間範圍內,數值發生改變的次數,樣本如下。
changes(demo_api_request_duration_seconds_count[1m])absent()
absent()統計對應時間下,各時間軸資料點是否缺失,如果缺失則返回 1,樣本如下。
absent(test_metrics)absent_over_time()
absent_over_time()用於統計傳入的時間範圍內,資料點是否缺失,如果缺失則返回 1,樣本如下。
absent_over_time(test_metrics[1m])ceil()
ceil()函數用於計算指定時間點下,所有時間軸資料點的向上取整值,樣本如下。
ceil(process_start_time_seconds)clamp()
clamp(v instant-vector, min scalar, max scalar)函數需要傳入一個上下限數值,如果真實指標數值超出了這個範圍,則直接取傳入的最大值和最小值,樣本如下。
clamp(process_start_time_seconds,10,20)clamp_max()
clamp_max(v instant-vector, max scalar)函數與clamp函數類似,但僅限制了最大值,樣本如下。
clamp_max(process_start_time_seconds,10)clamp_min()
clamp_min(v instant-vector, min scalar)函數與clamp函數類似,但僅限制了最小值,樣本如下。
clamp_min(process_start_time_seconds,10)day_of_month()
day_of_month()需傳入表示時間戳記的時序指標值,該函數能夠計算對應時間戳記是該月裡的第幾天,樣本如下。
day_of_month(vector(1805308033))day_of_week()
day_of_week()需傳入表示時間戳記的時序指標值,該函數能夠計算對應時間戳記是一周裡面的第幾天,樣本如下。
day_of_week(vector(1805308033))day_of_year()
day_of_year()需傳入表示時間戳記的時序指標值,該函數能夠計算對應時間戳記是該年裡的第幾天,樣本如下。
day_of_year(vector(1805308033))delta()
delta()函數用於計算所傳入時間範圍中首末兩個數值的差值,樣本如下。
delta(go_memstats_heap_released_bytes[1m])deriv()
deriv()函數用於計算一個時間區間中各個時間序列的二階導數,樣本如下。
deriv(go_memstats_heap_released_bytes[1m])exp()
exp()函數用於執行指數計算,樣本如下。
exp(go_memstats_lookups_total)floor()
floor()函數用於計算指定時間點下,所有時間軸資料點的向下取整值,樣本如下。
floor(go_memstats_heap_released_bytes)holt_winters()
holt_winters()函數會基於傳入時間範圍的資料點計算出一個平滑後的數值,計算方式基於holt_winter演算法,樣本如下。
holt_winters(go_memstats_heap_released_bytes[3m],0.2,0.5)rate()
rate函數用於計算傳入時間範圍內指標數值點的變動率,樣本如下。
rate(go_memstats_mallocs_total[3m])idelta()
idelta()函數用於計算所傳入時間範圍中末尾兩個數值的差值,樣本如下。
idelta(go_memstats_mallocs_total[3m])increase()
increase()函數用於計算所傳入時間範圍內指標數值點的增加量,樣本如下。該函數僅適用遞增型的數值指標,如果時間範圍內數值出現了下降,則會將該值累計疊加。
increase(go_memstats_mallocs_total[3m])irate()
irate函數用於計算傳入時間範圍內指標數值點的變動率,但irate函數僅會取用末尾兩個數值用於計算,樣本如下。
irate(go_memstats_mallocs_total[3m])hour()
hour()函數需傳入表示時間戳記的時序指標值,該函數能夠計算出對應時間戳記是一天內的第幾小時,樣本如下。
hour(vector[1705308033])minute()
minute()函數需傳入表示時間戳記的時序指標值,該函數能夠計算出對應時間戳記是小時內的第幾分鐘,樣本如下。
minute(vector[1705308033])month()
month()函數需傳入表示時間戳記的時序指標值,該函數能夠計算出對應時間戳記是一年內的第幾月,樣本如下。
month(vector[1705308033])resets()
resets函數用於統計傳入時間範圍內指標點數值下降的次數,樣本如下。
resets(go_memstats_heap_sys_bytes[5m])round()
round()函數需額外傳入參數值to_nearest,該函數用於計算指標數值最接近to_nearest整數倍的值,樣本如下。
round(go_memstats_heap_sys_bytes)