在昨天的 Day 27,我們成功地讓 Prometheus 開始從我們的服務網格中拉取指標數據,並學會了用 PromQL 進行基本查詢。但面對一堆冰冷的數字,我們很難快速洞察系統的健康狀況。
今天,我們就要來認識 Prometheus 最好的朋友 Grafana,將 Prometheus 中的數據,變成一張張精美、直觀的儀表板 (Dashboard)。
Grafana 的第一步,也是最關鍵的一步,就是告訴它「數據從哪裡來」。這個過程,就是設定資料來源 (Data Source)。
在 K8s 環境中,這通常有兩種做法:
kube-prometheus-stack
或 Istio 的 demo
profile 時,通常可以透過 Helm values.yaml
預先配置好,Grafana 啟動時就會自動連上 Prometheus。讓我們來看看手動配置的流程:
Configuration > Data sources
。Add new data source
。Connection
區塊的 URL
欄位,填入 Prometheus 服務的內部叢集位址。在 K8s 中,這通常是 http://<prometheus-service-name>.<namespace>.svc.cluster.local:<port>
。例如:http://prometheus.istio-system.svc.cluster.local:9090
。Save & test
。如果看到一個綠色的勾勾,就代表 Grafana 已經成功地與 Prometheus 建立了連線!連上數據後,我們有三種主流的方式可以快速獲得儀表板。
這是最快、也最常見的方式!在 Grafana.com/dashboards 上,有成千上萬由官方或社群貢獻的、現成儀表板可以使用。
我們只需要找到適用於我們場景的儀表板 ID,然後匯入即可。
Dashboards
。New > Import
。Import via grafana.com
欄位,輸入儀表板的 ID。Load
,並在下一個頁面選擇剛剛設定好的 Prometheus Data Source。Import
。當你的同事分享給你一個儀表板,或是你想將儀表板的設定檔用 Git 進行版本控制時,就會用到這個方法。每一個 Grafana 儀表板,都可以被匯出成一個 JSON 檔案。
Dashboards > New > Import
頁面。Upload JSON file
按鈕,或是直接將 JSON 內容貼到下方的文字框中。Import
。當現成的儀表板無法滿足你的特定需求時,我們就需要學會自己動手。這邊就要用到 PromQL。
Dashboards
頁面,點擊 New > New Dashboard
。Add visualization
。Data source
下拉選單中,選擇 Prometheus
。Panel options
中,你可以設定圖表的標題、圖表類型(Time series
是預設值)、單位等。Apply
。我們現在已經能夠「看見」系統的狀態了。但下一個更重要的問題是:當問題發生時,我們能不能讓系統「主動」來通知我們,而不是等我們自己 24 小時盯著儀表板?
接下來我們就要來認識 告警中心 Alertmanager!明天見!