shell查詢prometheus數據

#shell查詢prometheus數據

shell使用curl調用HTTP API執行PromQL

/api/v1/query查詢某一時刻的數據

查詢條件PromSQL複雜時, 傳入介面/api/v1/query需要URL轉碼

使用prometheus的web介面Graph執行查詢, 瀏覽器開發工具可獲取請求URL

#獲取PromSQL轉碼, 步驟如下:

1、打開prometheus的Graph頁面
2、輸入查詢語句PromSQL
3、瀏覽器按F12 ->開發工具 ->Network欄目
4、點擊”Execute”按鈕執行查詢
5、點擊”開發工具”的”Network”頁面”query?query=”條目
6、複製”Headers”下的”Request URL”, 刪除末尾時間戳「&time=16×××」部分

#shell查詢實例如下 :

# 查看k8s pod記憶體使用率大於80%的Pod
# round(sum by( pod, instance, container) (container_memory_working_set_bytes{image!=""}) / sum by( pod, instance, container) (container_spec_memory_limit_bytes{image!=""}) * 100 != +Inf) > 80

#Prometheus網站
PrometheusUrl="//prometheus.xxx.com"

#資源使用百分比
Limit=${Limit:=80}

#獲取PromQL查詢api url
getMemUrl="/api/v1/query?query=round%28sum+by%28+pod%2C+instance%2C+container%29+%28container_memory_working_set_bytes%7Bimage%21%3D%22%22%7D%29+%2F+sum+by%28+pod%2C+instance%2C+container%29+%28container_spec_memory_limit_bytes%7Bimage%21%3D%22%22%7D%29+*+100+%21%3D+%2BInf%29+%3E+${Limit}"

#查詢記憶體使用率大於80%的容器
#查詢結果是json格式, 使用jq命令篩選json內容
curl -ks -m 2 "${PrometheusUrl}${getMemUrl}" | jq -r ".data.result[].metric.container"

#執行效果如下:


參考文檔
官網文檔 Prometheus
//prometheus.io/docs/prometheus/latest/querying/api/
騰訊雲 Prometheus API概述
//cloud.tencent.com/document/product/1416/56024