^ │ . . . . . . . . . . node_load1{host="host01",zone="bj"}│ . . . . . . . . . . node_load1{host="host02",zone="sh"}│ . . . . . . . . . . node_load1{host="host11",zone="sh"}v<------- 時(shí)間 ---------->
每個(gè)點(diǎn)為: 一個(gè)樣本(sample),樣本由三部分組成
指標(biāo) (metric): 描述當(dāng)前樣本特征的 labelsets
時(shí)間戳 (timestamp): 一個(gè)精確到毫秒的時(shí)間戳
值 (value): 該時(shí)間樣本的值
過濾
過濾選擇,兩個(gè)需求 :
-- 查詢上海所有機(jī)器 1 分鐘的負(fù)載node_load1{zone="sh"}-- 查詢所有以 host0 為前綴的機(jī)器 1 分鐘的負(fù)載node_load1{host=~"host0.*"}
標(biāo)簽過濾的操作符 :
不等于
!=
正則非
!~
對(duì) metric 名metric 過濾
{__name__=~"node_load.*", zone="sh"}
3 條 PromQL 都是即時(shí)查詢(Instant Query),返回即時(shí)向量( Instant Vector)
返回當(dāng)前時(shí)間內(nèi)的最新值
Prometheus 控制當(dāng)前時(shí)間內(nèi)的最長(zhǎng)時(shí)間
默認(rèn): 5 分鐘
建議調(diào)短為 1 分鐘
--query.lookback-delta=1m
--query.lookback-delta
范圍查詢(Range Query),返回 Range Vector
多加了時(shí)間范圍 1 分鐘,會(huì)返回多個(gè)點(diǎn)
當(dāng)數(shù)據(jù) 10 秒鐘采集一次,1 分鐘有 6 個(gè)點(diǎn),都會(huì)返回
{__name__=~"node_load.*", zone="sh"}[1m]
運(yùn)算符
算術(shù)
-- 計(jì)算內(nèi)存可用率: 內(nèi)存可用量/內(nèi)存總量,就 * 100 (百分比呈現(xiàn))mem_available{app="clickhouse"} / mem_total{app="clickhouse"} * 100-- 計(jì)算北京區(qū)網(wǎng)口出向的速率,原始數(shù)據(jù)的單位: byte,網(wǎng)絡(luò)流量單位用bit,就 * 8irate(net_sent_bytes_total{zone="beijing"}[1m]) * 8
比較
比較運(yùn)算符: 大于、小于、等于、不等于
一般用來配置告警規(guī)則
mem_available{app="clickhouse"} / mem_total{app="clickhouse"} * 100 < 20irate(net_sent_bytes_total{zone="beijing"}[1m]) * 8 / 1024 / 1024 > 700
expr
: 指定查詢 PromQL, 當(dāng)查到幾條,就觸發(fā)幾條告警for: 1m
: 連續(xù) 1 分鐘都查詢才會(huì)告警
groups:- name: host rules: - alert: MemUtil expr: mem_available{app="clickhouse"} / mem_total{app="clickhouse"} * 100 < 20 for: 1m labels: severity: warn annotations: summary: Mem available less than 20%, host:{{ $labels.ident }}
邏輯
邏輯運(yùn)算符有 3 個(gè),用于 instant-vector 運(yùn)算
and : 求交集
or : 求并集
unless : 求差集
只有< 200G 的硬盤, 并使用率超過 70% :
disk_used_percent{app="clickhouse"} > 70 and disk_total{app="clickhouse"}/1024/1024/1024 < 200
向量匹配
該 MySQL 實(shí)例是個(gè) slave (master_server_id>0) ,就檢查 slave_sql_running 值
當(dāng)
slave_sql_running==0
: slave sql 線程沒有運(yùn)行
mysql_slave_status_slave_sql_running == 0and ON (instance)mysql_slave_status_master_server_id > 0
## example seriesmethod_code:http_errors:rate5m{method="get", code="500"} 24method_code:http_errors:rate5m{method="get", code="404"} 30method_code:http_errors:rate5m{method="put", code="501"} 3method_code:http_errors:rate5m{method="post", code="500"} 6method_code:http_errors:rate5m{method="post", code="404"} 21method:http_requests:rate5m{method="get"} 600method:http_requests:rate5m{method="del"} 34method:http_requests:rate5m{method="post"} 120## promqlmethod_code:http_errors:rate5m{code="500"}/ ignoring(code)method:http_requests:rate5m## result{method="get"} 0.04 // 24 / 600{method="post"} 0.05 // 6 / 120
sum( rate(http_request_count{code=~"^(?:5..)$"}[5m])) by (pod) * on (pod) group_left(label_version) kube_pod_labels
聚合
聚合:
-- 求 clickhouse 機(jī)器的平均內(nèi)存可用率avg(mem_available_percent{app="clickhouse"})-- 對(duì) clickhouse 機(jī)器的內(nèi)存可用率排序,取最小的兩條記錄bottomk(2, mem_available_percent{app="clickhouse"})
分別統(tǒng)計(jì) clickhouse 和 canal 的機(jī)器內(nèi)存可用率
-- by:分組統(tǒng)計(jì)的維度 (相反: without)avg(mem_available_percent{app=~"clickhouse|canal"}) by (app)
對(duì)范圍時(shí)段內(nèi)求聚合:
target_up[2m]
: 獲取該指標(biāo)最近 2 分鐘的所有數(shù)據(jù)點(diǎn)max_over_time
:求時(shí)間內(nèi)所有點(diǎn)的最大值
max_over_time(target_up[2m])
increase
increase 函數(shù) : 求增量,接收 range-vector
range-vector 會(huì)返回多個(gè) value+timestamp 的組合
net_bytes_recv{interface="eth0"}[1m] @ 1661570908965304237246 @1661570850965307953982 @1661570860965311949925 @1661570870965315732812 @1661570880965319998347 @1661570890965323899880 @1661570900increase(net_bytes_recv{interface="eth0"}[1m]) @166157090923595160.8
計(jì)算公式 : 最后個(gè)點(diǎn)值 - 第一個(gè)點(diǎn)值 / 時(shí)間差 * 60
(965323899880.0?965304237246.0)÷(1661570900.0?1661570850.0)×60=23595160.8
rate
rate 函數(shù) : 求每秒變化率
increase 結(jié)果 / range-vector 時(shí)間段大小
rate(net_bytes_recv{interface="eth0"}[1m]) == bool increase(net_bytes_recv{interface="eth0"}[1m])/60.0
rate 函數(shù) : 求變化率,相對(duì)平滑
irate 函數(shù) : 拿時(shí)間范圍內(nèi)的最后兩個(gè)值做計(jì)算,變化更劇烈文章來源:http://www.zghlxwxcb.cn/news/detail-420044.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-420044.html
到了這里,關(guān)于Prometheus PromQL查詢語言指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!