【公開課】Kubernetes 日誌採集與監控告警

【百度雲原生導讀】本節課是 Kubernetes 入門課程的最後一課,關注『雲原生計算』公衆號,回覆"k8s",獲取課程配套pdf。html

本節課主要分爲如下四個部分:docker

1.  容器日誌採集與管理後端

     Kubernetes 日誌處理方案api

2. 容器監控指標的採集與管理安全

    以Prometheus 爲核心的統一監控方案微信

3. Demo網絡

   演示雲原生環境日誌採集與指標監控架構

4. 總結運維

    總結日誌採集與指標監控要點ide

 

1. 容器日誌採集與管理

 

日誌採集場景

 

日誌採集場景主要分爲如下四種:

 

集羣核心組件日誌:
審計須要 kube-apiserver 日誌,診斷調度須要 kube-scheduler 日誌,接入層流量分析須要 Ingress 日誌。

 

主機內核日誌:

內核日誌能夠用於幫助開發及運維同窗診斷影響節點穩定的異常,如:文件系統異常,網絡棧異常,設備驅動異常等。

 

應用運行時日誌:

Docker 是最多見的容器運行時,能夠利用 Docker 和 Kubelet 日誌排查 Pod 建立和啓動失敗等問題。

 

業務應用日誌:

經過分析業務的運行日誌分析和觀察業務狀態,診斷異常。

 

日誌採集指標

 

Kubernetes 對容器日誌的指望處理方式爲:集羣級日誌處理(cluster-level-logging)

即:與容器、Pod、節點生命週期徹底無關。

 

對於一個容器,當應用將日誌輸出到 stdout 和 stderr 後,docker 默認將這些日誌輸出到宿主機上一個 JSON 文件中。

日誌採集方式

 

Kubernetes 自己並不會對用戶進行任何的日誌蒐集工做。爲了實現集羣級日誌處理,須要在集羣前,提早對日誌採集管理進行方案規劃。

 

Kubernetes 自己推薦3種日誌方案。

 

日誌採集方式1:使用節點級日誌代理

核心是 logging-agent (fluentd,etc );

Logging-agent 以 DaemonSet 方式運行在節點上;

掛載宿主機上的容器日誌目錄;

轉發日誌至後端存儲(ElasticSearch, etc);

 

優勢:對應用和Pod徹底無侵入,一個節點僅需部署一個 agent。

缺點:要求應用日誌直接輸出至容器的 stdout 和 stderr。

 

日誌採集方式2:使用 sidecar 容器和日誌代理

容器所有或部分日誌輸出到文件

一個或多個 sidecar 容器將應用程序日誌傳送到本身的 stdout 和 stderr。

 

優勢:可以繼續使用日誌採集方式1。

缺點:成倍增長磁盤佔用,形成浪費。(應用和sidecar容器寫入兩份相同日誌文件)

 

日誌採集方式3:使用具備日誌代理功能的 sidecar 容器

至關於將 logging-agent 直接集成進 Pod。

應用和輸出日誌至 stdout&stderr 或文件。

Logging-agent 的輸入源爲應用日誌文件。

 

 

優勢:部署簡單,對宿主機友好。

缺點:1. Sidecar 容器可能消耗較多資源,甚至拖掛應用容器。

           2. 沒法使用 kubectl logs 命令查看容器日誌。

 

總結:

實現集羣級日誌採集的三種方式:

  1. 使用節點級日誌代理。

  2. 使用 sidecar 容器和日誌代理。

  3. 使用具備日誌代理功能的 sidecar 容器。

 

建議:使用方案1,將應用日誌輸出到 stdout&stderr,經過宿主機上直接部署logging-agent 的方式集中處理日誌。

  1. 管理簡單。

  2. 可使用 kubectl logs 命令查看日誌。

  3. 宿主機自己可能已有 rstlogd 等成熟日誌收集組件可以使用。

     

選型推薦

 

 

2. 容器監控指標的採集與管理

 

監控場景

 

從監控類型劃分,可分爲如下幾個場景:

 

資源監控:

CPU,內存,網絡等資源類指標,常以數值,百分比爲單位進行統計,是最多見的資源監控方式。

 

性能監控:

應用的內部監控。一般是 Hock 機制在虛擬機層,字節碼執行層隱式回調,或者在應用層顯式注入,獲取更深層次的監控指標,經常使用來應用診斷與調優。

 

好比 Jvm 經過 Hock 機制,拿到相似 Jvm 裏面的垃圾回收的次數,各類內存帶的分佈以及網絡鏈接數的一些指標。經過這樣的方式來進行應用的診斷與調優。

 

安全監控:

針對安全進行一系列監控策略,例如越權管理,安全漏洞掃描等。

 

事件監控:

Kubernetes 中特有的監控方式,貼合 Kubernetes 設計理念,做爲常規監控方案的補充。

 

爲何說事件監控貼合 Kubernetes 設計理念呢?這是由於 Kubernetes 其中一個設計理念就是基於狀態機的狀態轉換。從正常狀態轉換成另外一個狀態的時候,會發生一個 Normal 級別的事件(也就是正常的事件)而從一個正常狀態轉換成異常狀態時,平臺會觸發一個 Warning 級別(也就是警告級別的事件)一般,Warning 級別的事件是咱們關心的事件。

 

而事件監控就能夠把 Normal 級別的事件或 Warning 級別的事件離線存儲到數據中心,而後經過數據中心的分析與報警,將相應的異常經過短信,郵件的方式暴露,彌補常規監控的弊端。

 

Prometheus 的起源及現狀

 

Prometheus 與 Kubernetes 同樣,來自於 Borg 體系。原型叫作 BorgMon,是與Borg同時誕生的內部監控系統。而Prometheus項目發起的緣由也與Kubernetes 相似,但願經過對用戶更友好的方式,將 Google 內部系統的設計理念傳遞給開發者和用戶。

 

Kubernetes 監控體系曾經很是繁雜,但今天已經演變成了以 Prometheus 爲核心的一套統一的方案。

 

Prometheus 的架構與工做方式

 

Prometheus 指標來源

 

  1. 宿主機的監控數據:須要藉助 Node Exporter 向外暴露; Exporter 代替被監控對象來向 Prometheus 暴露能夠被抓取的指標信息。

  2. Kubernetes 組件如 APIServer, kubelet 等的/metrics AP:除CPU,內存外,還包括各個組件的核心監控指標。

  3. Kubernetes 核心的監控數據:包括Pod、Node、容器、Service等主要核心概念的 metrics,其中容器相關的指標來源於 kubectl 內置的 cAdvisor 服務。

 

Prometheus 特色

 

  1. 簡潔強大的接入標準。只要實現 Promethus Client 接口,就能夠直接實現數據的採集。

  2. 多種數據採集方式。包括:在線,離線,push, pull 聯邦的方式進行數據採集。

  3. 和 Kubernetes完 全兼容。

  4. 豐富的插件機制和生態。

  5. Prometheus Operator 助力。使 Prometheus 的運維實現自動化。

 

 

3. Demo 演示

 

講師最後演示了 Kubernetes 環境下日誌採集與指標監控的一個 Demo。感興趣的同窗能夠點擊視頻觀看。https://cloud.baidu.com/video-center/video.html?id=610

 

相關閱讀:

【公開課】Kubernetes 入門——深刻淺出講 Docker

【公開課】Kubernetes工做原理及使用

【公開課】Kubernetes 應用部署

【公開課】Kubernetes 實現應用的高可用

 


 

重磅!雲原生計算交流羣成立

 

掃碼添加小助手便可申請加入,必定要備註:名字-公司/學校-地區,根據格式備註,才能經過且邀請進羣。

瞭解更多微服務、雲原生技術的相關信息,請關注咱們的微信公衆號【雲原生計算】

相關文章
相關標籤/搜索