圖 15-1 Prometheus
筆者之前建置整個架構的經驗中,Prometheus
基本上就是預設建立,很少去找過相關的資料,可能也因為原始的用量並不是多到天上去,所以過了好多年服務也沒炸掉,相安無事。這次稍微找了一下資料,同時幫自己解惑。
Prometheus
是一套開源的監控與告警系統,專門用來收集、儲存和查詢各種服務的 metrics(指標資料)。它的主要用途包括:
Kong
與API Provider
)拉取 metrics 資料。雖說Prometheus
已經可以做到不少的事情,但大多數網路上都不會直接使用,通常都是透過Prometheus
儲存時序資料庫之後,再透過Grafana
來做監控的儀表板,最大原因是:Grafana
的儀錶板比較帥。
圖15-2 Grafana
Grafana
是一套開源的資料視覺化與監控平台,能夠將來自多種資料來源(如 Prometheus
、InfluxDB
、Elasticsearch
等)的 metrics
以圖表、儀表板等方式動態呈現。它的主要用途是讓使用者能夠更直觀地觀察系統狀態、分析趨勢、發現異常。
在這裡Grafana
與 Prometheus
是互補關係。
Prometheus
負責收集、儲存和查詢時序型 metrics
資料,但內建的視覺化功能真的很陽春,僅適合簡單查詢呈現的結果。Grafana
則專注於資料的視覺化,能夠將 Prometheus 收集到的 metrics 以豐富的圖表和互動式儀表板呈現,讓監控資訊一目了然。兩者搭配後,Prometheus
提供強大的資料收集與查詢能力,Grafana
則讓這些資料變得易於理解與分析,形成完整的監控解決方案。
而且Grafana
真的是帥多了,讀者就可以從圖15-3 體驗一下那個帥氣的儀表板,看不懂也懂一個帥字。(謎之音:特別是長官)
圖15-3 Dashboard Demo
請讀者到這次的示範目錄,ironman2025\case_ELK_Jaeger_Promethus_Grafana
,由於這次是新的目錄,因此還是要讀者把API Provider
的docker image先建置出來,因此請到找到示範目錄的2.api_provider\case_withelk_jaeger_promethus_grafana\Dockerfile
,並執行:
docker build -t case_withelk_jaeger_promethus_grafana:latest .
圖 15-4 docker build finish
當docker image 被成功順利建置之後,就可以到示範目錄下(ironman2025\case_ELK_Jaeger_Promethus_Grafana
)執行下列指令:
docker compose up -d
圖 15-5 一口氣啟動所有服務
如果一切順利,就會看到圖15-5 的畫面,這表示所有的服務都正常被啟動了。
p.s 筆者的電腦是2016年出廠的Intel i5 2.8Ghz / 20 GB Ram / SSD,在這條件下跑起來還可以正常做事情,相信各位讀者一定條件都比我好。(不然就趁momo打折的時候連一台大樹藥局都可以送的PS5 一起打包買回家)。
Prometheus
啟動後監聽的服務port:9090
,因此請打開瀏覽器,並連結至http://localhost:9090/targets
,來確認Prometheus
是否有被正常啟動。另外也能確認將prometheus\prometheus.yml
所設定的target
成功載入,並不斷地取得監控資料。
圖 15-6 Prometheus Targets
可以注意到圖 15-6,原始筆者在設定prometheus\prometheus.yml
時,除了Prometheus
本體的/metrics
以外,分別監控:
kong
的8001
port:這是昨日所開啟的prometheus
plugin 設定的效果。OTEL-Collector
的8889
port:昨天的API Provider
在撰寫時有提到會持續將monitor
的資料發送到OTEL-Collector
的4318
port。而OTEL-Collector
則是透過8889
提供給prometheus
進行持續的資料取得。從圖 15-6可以注意到,兩個服務的Status
狀態都是UP
,這表示服務都被正常啟動且可以被持續取得資料。不過這邊其實有一個雷,那就是當API Provider
服務為down
的時候,由於prometheus
是監控OTEL-Collector
的服務,因此就不能用這指標來看API Provider
作為狀態正常啟動的判斷。
接下來則是要來確認Grafana
是否有被正確的啟動,請讀者一樣開啟瀏覽器,並連結至http://localhost:3000
,應該會看到圖 15-7的登入畫面。
圖 15-7 Grafana
Grafana
的首次登入,預設帳號以及密碼都是admin
,第一次Grafana
會要求更改密碼,就請讀者修改成一組自己可以記憶的密碼。
登入後請注意到左側選單,找到Data sources
的選單後,點選應該可以看到有一個預設的Data source
,那就是被設定在grafana\provisioning\datasources\datasource.yml
圖 15-8 Grafana Data sources
到目前為止,已經將這次新增的所有服務都確認狀態正常了。但畢竟是monitor
,因此還是需要做一些實驗後,再來看在Grafana
上面會如何被dashboard
呈現。明天筆者會先挑選喜歡的dashboard
,並進行實驗後監控相關的數值。