shell查詢prometheus資料

vip發表於2022-07-18

#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="http://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
https://prometheus.io/docs/prometheus/latest/querying/api/
騰訊雲 Prometheus API概述
https://cloud.tencent.com/document/product/1416/56024

相關文章