GitLab 整合 Prometheus 監控服務(GitLab 整合 K8S 系列之二)

Dec 23, 2021 Cheng-Yi Fang

Photo by Alvaro Reyes on Unsplash

Photo by Christian Paul Stobbe on Unsplash

我們在上一篇 GitLab 整合企業網路內的 K8S 叢集(GitLab 整合 K8S 系列之一) 談到了 GitLab.com 如何與企業網路內的 K8S 叢集介接,但沒有討論到太多整合後的功能,這篇文章主要的目的就是介紹如何透過 GitLab.com 來監控 K8S 叢集的狀態,包含叢集的基礎設施與上面運行的 Pod 狀態。

監控 K8S 叢集的相關開源工具已經有很多,包含 Kubernetes Dashboard、Grafana、Prometheus、cAdvisor、Elastic Stack (ELK)、Datadog… 等。目前 GitLab.com 有支援的監控工具包含 Prometheus 與 Elastic Stack,本篇文章的重點會介紹如何將企業網路內 K8S 叢集上的 Prometheus 與 GitLab.com 整合,以及可以呈現出的效果。

前置作業

GitLab.com 與位於企業網路內的 Prometheus 整合

要在 GitLab.com 上查看 K8S 叢集或上面運行 Pod 的健康狀態,必須透過上面 Prometheus 的監控,來取得相關資訊。

在 K8S 叢集已經與 GitLab.com 介接的情況下(可參考前一篇 “GitLab 整合企業網路內的 K8S 叢集(GitLab 整合 K8S 系列之一)”),可以透過 GitLab.com 提供的 Prometheus Helm chart,也可以用自己習慣的方式來部署。如果透過 Helm chart 可以順利安裝完成,會比較方便,因為 Prometheus 服務相關設定已經都定義在 Helm YAML 裡,但這個方式是否能成功,會取決於 K8S 叢集上的相依套件(如 K8S、Helm …版本)。透過自行安裝 Prometheus 的另一個好處,是我們可以依自己需求安裝出想要的 Prometheus 版本,因此下面我們會著重在介紹如何以自行安裝 Prometheus 的方式,來與 GitLab.com 進行整合。

相關軟體版本

網路設定

我們預期會透過 K8S NodePort 的方式,將 Prometheus 的服務開放給 GitLab.com 存取,因此依照前一篇 “GitLab 整合企業網路內的 K8S 叢集(GitLab 整合 K8S 系列之一)” 的網路設定,GitLab.com 已經可以透過 NAT 轉址後的方式,存取企業網路內 K8S 叢集的 endpoint。而防火牆的部分,除了需要開放原本 K8S API 走的埠,還需要開放 Prometheus NodePort 的埠,這樣才可以讓 GitLab.com 通過防火牆存取 Prometheus 服務。GitLab.com 的來源 IP 範圍一樣是 34.74.90.64/28 和 34.74.226.0/24。

串接

安裝 Prometheus

GitLab.com 官方所提供的 Prometheus Helm 部署方式可參考此文件。

如果無法使用官方的部署方式順利安裝,也可以在網路上找到其它將 Prometheus 部署到 K8S 叢集上的方式,例如直接透過 K8S YAML 或使用 Ansible。只要在部署過程中注意以下條件:

開啟 UI Health 監控功能

功能呈現

Infrastructure 監控

切換到 Health 頁籤,可以看 Kubernetes Cluster 整體的使用率(如下圖)。

Pod 服務監控

要觀看 K8S 叢集上的 Pod 服務狀態時,必須進入一個 GitLab project 內,並在表單中選擇 Monitor > Metrics(如下圖)。

然後在 Dashboard 的列表選擇 K8s pod health(如下圖)。

在 Environment 的列表選擇一個 environment(如下圖),詳細 environment 定義會在下一篇 “GitLab CI/CD 整合 K8S 叢集(GitLab 整合 K8S 系列之三)” 有更詳細的介紹。

最後,在Pod name列表選擇一個要查看的 Pod(如下圖)。

目前 GitLab 14.3.0-pre 版本在這個地方有問題。選擇特定 environment 之後,應該只會看到對應 namespace 底下的 Pod,但是目前會看到整個 K8S 叢集的 Pod 列表。這個問題在 GitLab 已經有相關的 issue 在追蹤。在 GitLab 介面上可以查看到以下的 Pod 相關資訊。

從上面我們可以看到已經在叢集上運行的 Pod 狀態,而要在軟體開發生命週期中更有效地善用 K8s 叢集,我們就需要導入 GitLab 的 CI/CD 與 K8s 的整合,詳細描述會在下一篇 “GitLab CI/CD 整合 K8S 叢集(GitLab 整合 K8S 系列之三)” 做更進一步的介紹。

參考資訊


雙子星雲端為 CNCF 會員,是 CNCF 所認證的 Kubernetes 服務提供商,在雲端技術擁有十多年以上的經驗,為台灣雲端技術早期>領先者。目前為國家級 AI 雲的軟體及 Kubernetes 技術與服務提供商,更是諸多企業與單位導入容器與管理平台的最佳夥伴。

Gemini AI Console 已發布最新版本,歡迎各界有興趣的朋友跟我們索取最新的產品資訊,也可以 立刻預約 Demo,我們的產品顧問將向您示範,並免費提供線上的試用!


相關文章

回雙子星技術部落格列表

Gemini AI Console

熱門文章


kubernetes professional service

關於我們

雙子星雲端是混合多雲技術的領導者,是國際認證之 KCSP - Kubernetes 服務提供商,同時也為 CNCF 雲原生計算基金會會員。

雙子星的雲端專家擁有 Kubernetes、OpenStack 與 Google Cloud Platform 等多項證照,我們的軟體至今已為上百家機構和數千台的 CPU/GPU 伺服器提供雲端服務。