從離題回到原本的題目:監控面向
今晚來說Kubernetes的監控主角:Prometheus
Prometheus
我是透過 HELM Stable repo 中安裝stable/prometheus-operator 有關安裝方式,可參考此篇arrow-up-right內容。 HELM repo list
stable/prometheus-operator
$ helm repo list NAME URL stable https://kubernetes-charts.storage.googleapis.com
一個已時間時序為主的多維度資料模型,以Metric資料名稱與key/values來呈現。
Metric
key/values
透過PromQL查詢語言,取得時序資料。
PromQL
不需依賴分佈式存儲,單節點儲存即可。
透過HTTP協定pull模式收集時序資料。
HTTP
pull
透過PushGateway角色,支持推送時序資料。
PushGateway
通過 "服務發現" 或 "靜態配置" 去確認監控Targets。
Targets
支援多種圖形和儀表板。
Prometheus Server:主要服務角色,收集與儲存時序資料,藉由提供PromQL語言支援資料查詢。
PushGateway:主要用於臨時性 Job 推送。這類 Job 存在期間較短,有可能Prometheus 來 Pull 時就消失,因此透過一個PushGateway來推送。適合用於服務層面的 Metrics。
Exporter:針對特定應用程式而開發的Exporter,用來曝露該應用程式的Metric給 Prometheus Server,即以 Client Library 開發的 HTTP server。縱多的官方、第三方exporter可參考官方 Exporters and integrationsarrow-up-right。
Exporter
Prometheus Server
AlertManager:收集來自Prometheus Server的Alert event,並可整合第三方、自訂的告警模式來發送警報,例如:Slack、E-mail、與其他 Webhook 等等。
Alert event
Prometheus Server 獲取的時序資料來源有:ServiceDiscovery、PushGateway、Exporter。
ServiceDiscovery
獲取到的Metric資料,儲存在本機磁碟中,此資料稱為時序資料庫TSDB。
TSDB
Prometheus Server 可定義PrometheusRules作為判斷時序資料內容、數值,如有符合規則即可發出告警事件給予 AlertManager。
AlertManager 可定義收到的告警事件如何分類、處理重複性告警、發送管道等等。
Prometheus Server 本身提供http服務,可讓支援PromQL的查詢者取得所需的時序資料。
http
承上,例如 Grafana 即透過PromQL語言查詢時序資料,並且繪製圖表。
Last updated 6 years ago