資料提供端在架構圖的哪邊呢
資料提供端的資料長怎樣呢
- Counter: 代表一個單調遞增的計數器
- Gauge: 表示可以任意上下的單個數值
- Histogram:直方圖對觀察結果進行採樣(通常是請求持續時間或響應大小等),並將它們計入可配置的存儲桶中。它還提供所有觀察值的總和。
- Summary: 與histogram類似,摘要對觀察結果進行採樣(通常是請求持續時間和響應大小等)。雖然它還提供了觀察總數和所有觀察值的總和,但它計算了滑動時間窗口上的可配置分位數。
查看現有的資料提供端提供了那些資訊
- 打開Prometheus面板的Targets
- 選擇要查看的目標的endpoint連結,除了node-exporter外,都會需要在k8s的內網去讀取資料,以json-exporter來說,可在namespace內部使用下面指令查看:
curl “http://127.0.0.1:7979/probe?module=default&target=http://127.0.0.1:1985/api/v1/streams/”
- 但是同時我們也會發現有許多的網址是無法連上的,因為部分的exporter若是有需要使用密鑰
取得pod-exporter所提供的資料
rancher-monitoring-kubelet可以取得在所有node裡面的Pods的運行狀態,但是在k8s取得Pods的狀態需要認證,因此需要在yaml裡面設定所需要的Secrets,指令如下:
# 取得該namespace的所有密鑰
kubectl get secret -n cattle-monitoring-system
# 取得密鑰的內容
kubectl -n cattle-monitoring-system get secret rancher-monitoring-prometheus-token-hvlqt -o jsonpath={.data.token} | base64 –d
# 將pod-exporter的網址後面加上-H並帶入密鑰
curl https://172.17.2.22:10250/metrics/cadvisor-k -H “Authorization: Bearer ${TOKEN}”
更多資訊請見:Accessing the Kubernetes API from a Pod
了解資料提供端的樣子的重要性
可了解要怎麼在Grafana搜尋目標資料,並了解有哪些資料是可以取得的
上面的資料可用以下的PromQL來撈出,sum代表所有串流的數字加總,並以pod label做資料加總分組的依據。
(sum(stream_clients_clients{namespace=~”namespace_name”, pod=~”pod_name.+”, name=~”.+”}) by (pod))
因此了解有哪些資料,才能夠使用PromQL撈出所需資料
如何產生這些資料
官方提供許多各種語言可使用的函式庫
https://prometheus.io/docs/instrumenting/clientlibs/
以下為幾個我嘗試過的exporter:
- Node.js的swagger-stats: https://github.com/slanatech/swagger-stats
- 將JSON轉為exporter格式: json-exporter
- 使用Pushgateway: https://github.com/prometheus/pushgateway
不論使用上面哪個方法,最終都需要有一個類似這個頁面的產出,一個靜態的純文字頁面,上面有著我們要觀察的值