Kubernetes+Promethues+Cloud Alert實踐分享

前言

容器集羣管理系統 Kubernetes(簡稱K8s),爲容器化的應用提供部署運行、容器編排、負載均衡、服務發現和動態伸縮等一系列完整功能,Prometheus 對 K8s 支持非常棒,能夠自動發現 K8s 的監控目標!Prometheus 產生的告警,可以通過 Alertmanager 轉發到 Cloud Alert,實現告警的降噪、分派和通知。

Kubernetes+Promethues+Cloud Alert實踐分享


Kubernetes

K8s 是 Google 開源的容器集羣管理系統。用於管理雲平臺中多個主機上的容器化的應用,K8s的目標是讓部署容器化的應用簡單並且高效(powerful),K8s 提供了應用部署,規劃,更新,維護的一種機制。(選取自爲K8s中文文檔)

Master:k8s 集羣的管理節點,負責管理集羣,提供集羣的資源數據訪問入口。包含四個模塊:kube-apiserver、kube-controller-manager 和 kube-scheduler。

Node:k8s 集羣架構中運行 Pod 的服務節點,每個 Node 至少運行 container runtime(比如 docker 或者 rkt)、kubelet 和 kube-proxy 服務。

更多K8s的安裝及使用,詳見K8s中文文檔。K8s 解決了傳統IT系統中服務擴容和升級的兩大難題,提高了大規模容器集羣管理的便捷性。K8s 通常會搭配 promethues 進行監控。


Prometheus

Prometheus 是一個開源和社區驅動的監控&報警&時序數據庫的項目。由於其從推出就提供了完整的基於容器的部署方式,開發者可以快速的基於容器搭建自己的監控平臺。

Prometheus 監控 K8s 兼容很好,主要可監控 K8s:

Node: 如主機 CPU,內存,網絡吞吐和帶寬佔用,磁盤 I/O 和磁盤使用等指標。node-exporter 採集。

容器關鍵指標:集羣中容器的 CPU 詳細狀況,內存詳細狀況,Network,FileSystem和Subcontainer 等。通過 cadvisor 採集。

K8s 集羣上部署的應用:監控部署在 K8s 集羣上的應用。主要是 pod,service,ingress 和 endpoint。通過 black-box 和 kube-apiserver 的接口採集。

產生的告警,promethues 支持 Email 推送和 webhook 推送,如果要實現電話、短信、微信的推送,如果不想再造輪子,可以配合 Cloud Alert(原OneAlert)或 pagerduty 使用。本文以Cloud Alert 爲例詳細描述集成步驟,pagerduty的集成方式類似。


Cloud Alert

Cloud Alert(原OneAlert)是免費 SaaS 雲告警監控項目,可以實現告警的降噪、分派、通知。通知方式支持電話、短信、微信、郵件、APP、釘釘、Slack通知等等。

  1. 註冊 Cloud Alert 賬號,註冊地址

  2. 創建 Prometheus 應用集成,集成 -> 監控工具,選擇 Prometheus,保存後,即可獲取 webhook 回調 url。
    Kubernetes+Promethues+Cloud Alert實踐分享

  3. 進入 Prometheus 界面,修改 Alertmanager 模塊的配置文件。

receivers:
-name: 'team-X-pager'
webhook_configs:
-url: 'http://api.onealert.com/alert/api/event/prometheus/--'
send_resolved: true

  1. 重啓下 Alertmanager 模塊,加載該配置文件。結束。

Cloud Alert 默認所有告警均電話、郵件、短信通知用戶,如果想設置不同的告警分派給不同的人/團隊,可以在 配置 -> 分派策略 中設置。如果公司成員比較多,建議搭配排班功能使用,沒必要所有告警全員響應,將人力解放出來。微信通知,需要先綁定 Cloud Alert 的微信公衆號:雲告警,綁定後,就能接收微信通知了。更多使用參考官方文檔吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章