Kubernetes+Promethues+Cloud Alert實踐分享

OneAPM官方技術部落格發表於2019-08-06

前言

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

enter image description here

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。

enter image description here

  1. 進入 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 的微信公眾號:雲告警,繫結後,就能接收微信通知了。更多使用參考官方文件吧。

相關文章