简单、有效、全面的Kubernetes监控方案
簡介:近年來,Kubernetes作為眾多公司云原生改造的首選容器化編排平臺,越來越多的開發和運維工作都圍繞Kubernetes展開,保證Kubernetes的穩定性和可用性是最基礎的需求,而這其中最核心的就是如何有效地監控Kubernetes集群,保證整個集群的一個良好的可觀察性。本期將為大家介紹Kubernetes的監控方案。
前言
近年來,Kubernetes作為眾多公司云原生改造的首選容器化編排平臺,越來越多的開發和運維工作都圍繞Kubernetes展開,保證Kubernetes的穩定性和可用性是最基礎的需求,而這其中最核心的就是如何有效地監控Kubernetes集群,保證整個集群的一個良好的可觀察性。本期將為大家介紹Kubernetes的監控方案。
監控方案目標
目前存在多套的Kubernetes監控方案,但實際實施起來可能會遇到很多問題,例如方案部署難、監控指標不準、沒有合適的大盤、不知道哪些指標需要哪些不需要、數據太多很卡等等。其實這些問題的本質上還是因為Kubernetes的架構相對標準的虛擬機/物理機的方式要復雜很多,而面對復雜系統,就需要我們去做非常多的工作,例如:
SLS全棧監控方案
SLS作為阿里可觀測性數據引擎,具備可觀測數據日志、指標、分布式鏈路追蹤、事件等的一站式采集和存儲。為了便于用戶快速接入和監控業務系統,SLS提供了全棧監控的APP,將各類監控數據匯總到一個實例中進行統一的管理和監控。全棧監控基于SLS的監控數據采集、存儲、分析、可視化、告警、AIOps等能力構建,詳細功能如下:
- 實時監控各類系統,包括主機監控、Kubernetes監控、數據庫監控、中間件監控等。
- 支持ECS、K8s一鍵安裝,支持圖形化的監控配置管理,無需登錄主機配置采集監控項。
- 運維老司機多年經驗的報表總結,包括資源總覽、水位監控、熱點分析、詳細指標等數十個報表。
- 支持自定義的分析,支持包括PromQL、SQL92等多種分析語法。
- 支持對接AIOps指標巡檢,利用機器學習技術自動發現異常指標。
- 支持自定義告警配置,告警通知直接對接消息中心、短信、郵件、語音(電話)、釘釘,并支持對接自定義WebHook。
Kubernetes監控最佳實踐
SLS全棧監控已經內置了對于Kubernetes監控的支持,并且解決了非常多的Kubernetes監控的痛點需求,例如:
部署
SLS全棧監控的Kubernetes部署方式相對比較簡單,只需要按照接入頁面中的提示,安裝AliyunLogConfig自定義資源和監控組件,兩個安裝步驟只需要執行兩個命令即可。
- 相關參考(1. 創建全棧監控實例;2. 創建Kubernetes監控)
使用
Kubernetes監控部署完畢后就會自動部署采集Agent并采集監控數據到云端,默認采集的監控數據有:
數據采集到云端后,SLS全棧監控會默認提供一系列的Dashboard模板,包括集群級、應用級(Deployment、StatefullSet、DaemonSet等)、Pod級各類指標,絕大部分場景的監控只需要使用內置的Dashboard大盤即可,內置大盤主要有:
| 儀表盤 | 說明 |
| 資源總覽 | 用于實時可視化展示主機配置信息和指標信息的總體情況,包括CPU核數、磁盤總空間、CPU平均使用率、內存平均使用率等。 |
| 主機列表 | 用于實時可視化展示每臺主機的配置信息和指標信息,包括CPU核數、內存、CPU使用率、內存使用率等。 |
| 熱點分析 | 用于實時可視化熱點機器的CPU、內存等資源使用情況,包括CPU熱點指標分布、內存熱點指標分布、Top CPU使用率、Top 內存使用率等。 |
| 單機指標-簡 | 用于實時可視化展示主機的CPU、內存等資源的使用趨勢,包括CPU使用率、磁盤空間使用率、內存使用率等。 |
| 單機指標-詳 | 用于實時可視化展示主機的CPU、內存等資源處于不同狀態的使用趨勢,包括CPU(處于Total、System、User、IOWait狀態的CPU使用趨勢)、內存(處于Total、Availableused、Used狀態的內存使用趨勢)等。 |
| 資源總覽 | 用于實時可視化展示Kubernetes中資源的使用情況,包括Pod、Host、Service、Deployment等。 |
| 水位監控 | 用于實時可視化展示Kubernetes中資源的水位情況,包括Pod運行數、CPU總數、文件系統使用量等。 |
| 運行時監控 | 用于實時可視化展示Kubernetes中處于運行狀態的資源信息,包括Deployment運行數量、Daemonset運行數量等。 |
| 核心組件監控 | 用于實時可視化展示Kubernetes中核心組件的相關數據,包括ETCD對象數、ETCD請求QPS等。 |
| Node列表 | 用于實時可視化展示Node的整體情況以及每個Node的配置信息和指標信息,包括Node總數、運行中的Pod總數等。 |
| Node指標 | 用于實時可視化展示Node的指標信息,包括可申請Pod數量、CPU使用率等。 |
| Pod列表 | 用于實時可視化展示Pod的整體情況以及每個Pod的配置信息和指標信息,包括可申請的Pod總數等。 |
| Pod指標 | 用于實時可視化展示Pod的指標信息,包括Pod基本信息、容器基礎信息等。 |
| Deployment列表 | 用于實時可視化展示每個Deployment的配置信息和指標信息,包括Deployment所屬命名空間、集群等。 |
| Deployment指標 | 用于實時可視化展示Deployment的指標信息,包括CPU Limit使用率、內存Limit使用率等。 |
| StatefulSet列表 | 用于實時可視化展示每個StatefulSet的配置信息和指標信息,包括StatefulSet所屬命名空間、集群等。 |
| StatefulSet指標 | 用于實時可視化展示StatefulSet的指標信息,包括CPU Limit使用率、內存Limit使用率等。 |
| DaemonSet列表 | 用于實時可視化展示每個DaemonSet的配置信息和指標信息,包括DaemonSet所屬命名空間、集群等。 |
| DaemonSet指標 | 用于實時可視化展示DaemonSet的指標信息,包括CPU Limit使用率、內存Limit使用率等。 |
1-集群級監控實踐
在K8s迭代了數十個版本后,集群本身的穩定性一般不需要關心,絕大部分情況下,都是使用的不合理影響了集群的穩定性。通常情況下,集群級別監控只需要關注集群中運行的應用數量變化以及相關的水位變化。這里最常見的是使用《資源總覽》、《水位監控》和《運行時監控》。其中
2-系統組件監控實踐
同樣,K8s的系統組件監控,通常只需要關心其中使用部分的不合理即可,因此只需要查看其中APIServer和ETCD的部分,防止有非常多的額外資源和訪問導致APIServer或ETCD請求過慢。
3-應用基礎指標監控
全棧監控默認提供了Node、Pod、Deployment、DaemonSet、StatefullSet的基礎指標監控,所有這些資源都包括列表的Overview指標以及詳情的Detail指標,而且各個相關聯的資源還支持跳轉關系,例如:所有的列表支持跳轉到詳情的Detail指標、Node中支持關聯運行的Pod指標、Deployment/DaemonSet/StatefullSet支持跳轉關聯Pod。
4-熱點監控
熱點監控主要輔助我們快速找到“離群”的機器,防止因為部分機器成為熱點,導致該機器上應用響應變慢,以至于影響整個集群的性能。在找到熱點機器后,還可以通過改機器的IP,跳轉到對應Node的詳細指標中,查看熱點具體是由該節點上哪個Pod引起。
小結
本文主要關注在Kubernetes的監控方案上(如何接入可參考《全棧監控說明》),從監控的問題發現到定位其實還有很多的工作需要做,還需要更多的可觀測性數據來支撐,后續我們會介紹,如何利用多種可觀測數據來協助排查和定位Kubernetes中的各類問題,敬請期待。
原文鏈接
本文為阿里云原創內容,未經允許不得轉載。?
總結
以上是生活随笔為你收集整理的简单、有效、全面的Kubernetes监控方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 技术解析:一文看懂 Anolis OS
- 下一篇: SmartNews:基于 Flink 加