Kubernetes+Promethues+Cloud Alert實踐分享
前言
容器叢集管理系統 Kubernetes(簡稱K8s),為容器化的應用提供部署執行、容器編排、負載均衡、服務發現和動態伸縮等一系列完整功能,Prometheus 對 K8s 支援非常棒,能夠自動發現 K8s 的監控目標!Prometheus 產生的告警,可以通過 Alertmanager 轉發到 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通知等等。
註冊 Cloud Alert 賬號,註冊地址。
建立 Prometheus 應用整合,配置 -> 應用,點選新建應用,選擇 Prometheus,儲存後,即可獲取 webhook 回撥 url。
- 進入 Prometheus 介面,修改 Alertmanager 模組的配置檔案。
receivers: - name: 'team-X-pager' webhook_configs: - url: 'http://api.onealert.com/alert/api/event/prometheus/--' send_resolved: true
- 重啟下 Alertmanager 模組,載入該配置檔案。結束。
Cloud Alert 預設所有告警均電話、郵件、簡訊通知使用者,如果想設定不同的告警分派給不同的人/團隊,可以在 配置 -> 分派策略 中設定。如果公司成員比較多,建議搭配排班功能使用,沒必要所有告警全員響應,將人力解放出來。微信通知,需要先繫結 Cloud Alert 的微信公眾號:雲告警,繫結後,就能接收微信通知了。更多使用參考官方文件吧。
相關文章
- 最佳實踐(保持、清理ORACLE alert日誌)Oracle
- WKWebView實踐分享WebView
- Laravel 編碼實踐分享Laravel
- 雲上深度學習實踐分享——雲上MXNet實踐深度學習
- DCOS實踐分享(3):基於Mesos 和 Docker企業級移動應用實踐分享Docker
- 企業安全實踐經驗分享
- 華為敏捷專案管理實踐分享敏捷專案管理
- rabbitmq 學習與實踐分享(2)MQ
- rabbitmq 學習與實踐分享(3)MQ
- ubuntu下pycharm呼叫Hanlp實踐分享UbuntuPyCharmHanLP
- 大檔案上傳實踐分享
- Scrum與OKR融合實踐經驗分享ScrumOKR
- Android元件化實踐專案分享Android元件化
- 實戰分享|雲信IM SDK介面設計實踐
- 簡單實現微服務架構的實踐分享微服務架構
- 軟體質量保障全流程實踐分享
- 阿里巴巴資料中臺實踐分享阿里
- rabbitmq 實踐與學習心得分享(1)MQ
- Laravel 5.7 最佳實踐和開發技巧分享Laravel
- 巴久靈 x Leangoo敏捷實踐案例分享Go敏捷
- 實踐分享!GitLab CI/CD 快速入門Gitlab
- 資料共享交換平臺的實踐分享
- Apache Linkis自定義變數實踐分享Apache變數
- 實踐分享:小程式自定義元件開發元件
- Vue專案全域性配置微信分享實踐Vue
- GitHub 的 MySQL 高可用性實踐分享GithubMySql
- 微服務實踐分享(2)api閘道器微服務API
- 介面自動化測試工程實踐分享
- 奈學乾貨分享:分散式CAP實踐分析分散式
- IPv6地址掃描實踐分享
- Android元件化開發實踐和案例分享Android元件化
- 泰康保險大資料應用實踐分享大資料
- 團隊分享,Bem規範調研及實踐
- 資料庫平滑遷移方案與實踐分享資料庫
- “踩坑”經驗分享:Swift語言落地實踐Swift
- 攜程MySQL遷移OceanBase最佳實踐|分享MySql
- 第三方登入/分享最佳實踐
- 《大型網站SEO優化實踐》學習分享網站優化