iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0

Prometheus

https://ithelp.ithome.com.tw/upload/images/20250920/20162800GQPNh0pglJ.png
圖 15-1 Prometheus

筆者之前建置整個架構的經驗中,Prometheus基本上就是預設建立,很少去找過相關的資料,可能也因為原始的用量並不是多到天上去,所以過了好多年服務也沒炸掉,相安無事。這次稍微找了一下資料,同時幫自己解惑。

Prometheus 是一套開源的監控與告警系統,專門用來收集、儲存和查詢各種服務的 metrics(指標資料)。它的主要用途包括:

  • 自動化監控:自動定期從各種服務(這次案例就是從KongAPI Provider)拉取 metrics 資料。
  • 時序資料儲存:將收集到的 metrics 以時序資料(time series)的方式儲存,方便後續查詢與分析。
  • 告警:根據 metrics 設定告警規則,當異常發生時自動通知相關人員。

雖說Prometheus已經可以做到不少的事情,但大多數網路上都不會直接使用,通常都是透過Prometheus儲存時序資料庫之後,再透過Grafana來做監控的儀表板,最大原因是:Grafana的儀錶板比較帥。

Grafana

https://ithelp.ithome.com.tw/upload/images/20250920/20162800Ac9PMb7IRV.png
圖15-2 Grafana

Grafana 是一套開源的資料視覺化與監控平台,能夠將來自多種資料來源(如 PrometheusInfluxDBElasticsearch 等)的 metrics 以圖表、儀表板等方式動態呈現。它的主要用途是讓使用者能夠更直觀地觀察系統狀態、分析趨勢、發現異常。

在這裡GrafanaPrometheus 是互補關係。

  • Prometheus 負責收集、儲存和查詢時序型 metrics 資料,但內建的視覺化功能真的很陽春,僅適合簡單查詢呈現的結果。
  • Grafana 則專注於資料的視覺化,能夠將 Prometheus 收集到的 metrics 以豐富的圖表和互動式儀表板呈現,讓監控資訊一目了然。

兩者搭配後,Prometheus 提供強大的資料收集與查詢能力,Grafana 則讓這些資料變得易於理解與分析,形成完整的監控解決方案。

而且Grafana真的是帥多了,讀者就可以從圖15-3 體驗一下那個帥氣的儀表板,看不懂也懂一個帥字。(謎之音:特別是長官)

https://ithelp.ithome.com.tw/upload/images/20250920/20162800RK3lwvkymm.png
圖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 .

https://ithelp.ithome.com.tw/upload/images/20250920/20162800enjq8dcB5W.png
圖 15-4 docker build finish

當docker image 被成功順利建置之後,就可以到示範目錄下(ironman2025\case_ELK_Jaeger_Promethus_Grafana)執行下列指令:

docker compose up -d

https://ithelp.ithome.com.tw/upload/images/20250920/20162800tVFJMk0CgI.png
圖 15-5 一口氣啟動所有服務

如果一切順利,就會看到圖15-5 的畫面,這表示所有的服務都正常被啟動了。

p.s 筆者的電腦是2016年出廠的Intel i5 2.8Ghz / 20 GB Ram / SSD,在這條件下跑起來還可以正常做事情,相信各位讀者一定條件都比我好。(不然就趁momo打折的時候連一台大樹藥局都可以送的PS5 一起打包買回家)。

檢查服務

Prometheus 的檢查

Prometheus啟動後監聽的服務port:9090,因此請打開瀏覽器,並連結至http://localhost:9090/targets,來確認Prometheus是否有被正常啟動。另外也能確認將prometheus\prometheus.yml所設定的target成功載入,並不斷地取得監控資料。

https://ithelp.ithome.com.tw/upload/images/20250920/20162800NSOL5Arz3Y.png
圖 15-6 Prometheus Targets

可以注意到圖 15-6,原始筆者在設定prometheus\prometheus.yml時,除了Prometheus本體的/metrics以外,分別監控:

  1. kong8001port:這是昨日所開啟的prometheus plugin 設定的效果。
  2. OTEL-Collector8889port:昨天的API Provider在撰寫時有提到會持續將monitor的資料發送到OTEL-Collector4318port。而OTEL-Collector則是透過8889提供給prometheus進行持續的資料取得。

從圖 15-6可以注意到,兩個服務的Status狀態都是UP,這表示服務都被正常啟動且可以被持續取得資料。不過這邊其實有一個雷,那就是當API Provider服務為down的時候,由於prometheus是監控OTEL-Collector的服務,因此就不能用這指標來看API Provider作為狀態正常啟動的判斷。

Grafana的檢查

接下來則是要來確認Grafana是否有被正確的啟動,請讀者一樣開啟瀏覽器,並連結至http://localhost:3000,應該會看到圖 15-7的登入畫面。

https://ithelp.ithome.com.tw/upload/images/20250920/2016280086DmrSirNR.png
圖 15-7 Grafana

Grafana的首次登入,預設帳號以及密碼都是admin,第一次Grafana會要求更改密碼,就請讀者修改成一組自己可以記憶的密碼。

登入後請注意到左側選單,找到Data sources的選單後,點選應該可以看到有一個預設的Data source,那就是被設定在grafana\provisioning\datasources\datasource.yml

https://ithelp.ithome.com.tw/upload/images/20250920/20162800iTQ49mOUvg.png
圖 15-8 Grafana Data sources

小結

到目前為止,已經將這次新增的所有服務都確認狀態正常了。但畢竟是monitor,因此還是需要做一些實驗後,再來看在Grafana 上面會如何被dashboard呈現。明天筆者會先挑選喜歡的dashboard,並進行實驗後監控相關的數值。


上一篇
Day 14:Kong + API monitor in Promethus and Grafana - 2
下一篇
Day 16:Kong + API 的 Grafana 儀表板監控與告警
系列文
解鎖API超能力:我的30天Kong可觀測性與管理實戰之旅16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言