溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

發(fā)布時(shí)間:2021-11-19 11:21:07 來(lái)源:億速云 閱讀:222 作者:iii 欄目:云計(jì)算

這篇文章主要講解了“Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些”吧!

1. 容器日志采集與管理

日志采集場(chǎng)景

日志采集場(chǎng)景主要分為以下四種:

集群核心組件日志:
審計(jì)需要 kube-apiserver 日志,診斷調(diào)度需要 kube-scheduler 日志,接入層流量分析需要 Ingress 日志。

主機(jī)內(nèi)核日志:

內(nèi)核日志可以用于幫助開(kāi)發(fā)及運(yùn)維同學(xué)診斷影響節(jié)點(diǎn)穩(wěn)定的異常,如:文件系統(tǒng)異常,網(wǎng)絡(luò)棧異常,設(shè)備驅(qū)動(dòng)異常等。

應(yīng)用運(yùn)行時(shí)日志:

Docker 是最常見(jiàn)的容器運(yùn)行時(shí),可以利用 Docker 和 Kubelet 日志排查 Pod 創(chuàng)建和啟動(dòng)失敗等問(wèn)題。

業(yè)務(wù)應(yīng)用日志:

通過(guò)分析業(yè)務(wù)的運(yùn)行日志分析和觀察業(yè)務(wù)狀態(tài),診斷異常。

日志采集指標(biāo)

Kubernetes 對(duì)容器日志的期望處理方式為:集群級(jí)日志處理(cluster-level-logging)

即:與容器、Pod、節(jié)點(diǎn)生命周期完全無(wú)關(guān)。

對(duì)于一個(gè)容器,當(dāng)應(yīng)用將日志輸出到 stdout 和 stderr 后,docker 默認(rèn)將這些日志輸出到宿主機(jī)上一個(gè) JSON 文件中。

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

日志采集方式

Kubernetes 本身并不會(huì)對(duì)用戶進(jìn)行任何的日志搜集工作。為了實(shí)現(xiàn)集群級(jí)日志處理,需要在集群前,提前對(duì)日志采集管理進(jìn)行方案規(guī)劃。

Kubernetes 本身推薦3種日志方案。

日志采集方式1:使用節(jié)點(diǎn)級(jí)日志代理

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

Logging-agent 以 DaemonSet 方式運(yùn)行在節(jié)點(diǎn)上;

掛載宿主機(jī)上的容器日志目錄;

轉(zhuǎn)發(fā)日志至后端存儲(chǔ)(ElasticSearch, etc);

優(yōu)點(diǎn):對(duì)應(yīng)用和Pod完全無(wú)侵入,一個(gè)節(jié)點(diǎn)僅需部署一個(gè) agent。

缺點(diǎn):要求應(yīng)用日志直接輸出至容器的 stdout 和 stderr。

日志采集方式2:使用 sidecar 容器和日志代理

容器全部或部分日志輸出到文件

一個(gè)或多個(gè) sidecar 容器將應(yīng)用程序日志傳送到自己的 stdout 和 stderr。

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

優(yōu)點(diǎn):能夠繼續(xù)使用日志采集方式1。

缺點(diǎn):成倍增加磁盤占用,造成浪費(fèi)。(應(yīng)用和sidecar容器寫入兩份相同日志文件)

日志采集方式3:使用具有日志代理功能的 sidecar 容器

相當(dāng)于將 logging-agent 直接集成進(jìn) Pod。

應(yīng)用和輸出日志至 stdout&stderr 或文件。

Logging-agent 的輸入源為應(yīng)用日志文件。

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

優(yōu)點(diǎn):部署簡(jiǎn)單,對(duì)宿主機(jī)友好。

缺點(diǎn):1. Sidecar 容器可能消耗較多資源,甚至拖掛應(yīng)用容器。

           2. 無(wú)法使用 kubectl logs 命令查看容器日志。

總結(jié):

實(shí)現(xiàn)集群級(jí)日志采集的三種方式:

  1. 使用節(jié)點(diǎn)級(jí)日志代理。

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

  3. 使用具有日志代理功能的 sidecar 容器。

建議:使用方案1,將應(yīng)用日志輸出到 stdout&stderr,通過(guò)宿主機(jī)上直接部署logging-agent 的方式集中處理日志。

  1. 管理簡(jiǎn)單。

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

  3. 宿主機(jī)本身可能已有 rstlogd 等成熟日志收集組件可使用。

     

選型推薦

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

2. 容器監(jiān)控指標(biāo)的采集與管理

監(jiān)控場(chǎng)景

從監(jiān)控類型劃分,可分為以下幾個(gè)場(chǎng)景:

資源監(jiān)控:

CPU,內(nèi)存,網(wǎng)絡(luò)等資源類指標(biāo),常以數(shù)值,百分比為單位進(jìn)行統(tǒng)計(jì),是最常見(jiàn)的資源監(jiān)控方式。

性能監(jiān)控:

應(yīng)用的內(nèi)部監(jiān)控。通常是 Hock 機(jī)制在虛擬機(jī)層,字節(jié)碼執(zhí)行層隱式回調(diào),或者在應(yīng)用層顯式注入,獲取更深層次的監(jiān)控指標(biāo),常用來(lái)應(yīng)用診斷與調(diào)優(yōu)。

比如 Jvm 通過(guò) Hock 機(jī)制,拿到類似 Jvm 里面的垃圾回收的次數(shù),各種內(nèi)存帶的分布以及網(wǎng)絡(luò)連接數(shù)的一些指標(biāo)。通過(guò)這樣的方式來(lái)進(jìn)行應(yīng)用的診斷與調(diào)優(yōu)。

安全監(jiān)控:

針對(duì)安全進(jìn)行一系列監(jiān)控策略,例如越權(quán)管理,安全漏洞掃描等。

事件監(jiān)控:

Kubernetes 中特有的監(jiān)控方式,貼合 Kubernetes 設(shè)計(jì)理念,作為常規(guī)監(jiān)控方案的補(bǔ)充。

為什么說(shuō)事件監(jiān)控貼合 Kubernetes 設(shè)計(jì)理念呢?這是因?yàn)?Kubernetes 其中一個(gè)設(shè)計(jì)理念就是基于狀態(tài)機(jī)的狀態(tài)轉(zhuǎn)換。從正常狀態(tài)轉(zhuǎn)換成另一個(gè)狀態(tài)的時(shí)候,會(huì)發(fā)生一個(gè) Normal 級(jí)別的事件(也就是正常的事件)而從一個(gè)正常狀態(tài)轉(zhuǎn)換成異常狀態(tài)時(shí),平臺(tái)會(huì)觸發(fā)一個(gè) Warning 級(jí)別(也就是警告級(jí)別的事件)通常,Warning 級(jí)別的事件是我們關(guān)心的事件。

而事件監(jiān)控就可以把 Normal 級(jí)別的事件或 Warning 級(jí)別的事件離線存儲(chǔ)到數(shù)據(jù)中心,然后通過(guò)數(shù)據(jù)中心的分析與報(bào)警,將相應(yīng)的異常通過(guò)短信,郵件的方式暴露,彌補(bǔ)常規(guī)監(jiān)控的弊端。

Prometheus 的起源及現(xiàn)狀

Prometheus 與 Kubernetes 一樣,來(lái)自于 Borg 體系。原型叫做 BorgMon,是與Borg同時(shí)誕生的內(nèi)部監(jiān)控系統(tǒng)。而Prometheus項(xiàng)目發(fā)起的原因也與Kubernetes 類似,希望通過(guò)對(duì)用戶更友好的方式,將 Google 內(nèi)部系統(tǒng)的設(shè)計(jì)理念傳遞給開(kāi)發(fā)者和用戶。

Kubernetes 監(jiān)控體系曾經(jīng)非常繁雜,但今天已經(jīng)演變成了以 Prometheus 為核心的一套統(tǒng)一的方案。

Prometheus 的架構(gòu)與工作方式

Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些

Prometheus 指標(biāo)來(lái)源

  1. 宿主機(jī)的監(jiān)控?cái)?shù)據(jù):需要借助 Node Exporter 向外暴露; Exporter 代替被監(jiān)控對(duì)象來(lái)向 Prometheus 暴露可以被抓取的指標(biāo)信息。

  2. Kubernetes 組件如 APIServer, kubelet 等的/metrics AP:除CPU,內(nèi)存外,還包括各個(gè)組件的核心監(jiān)控指標(biāo)。

  3. Kubernetes 核心的監(jiān)控?cái)?shù)據(jù):包括Pod、Node、容器、Service等主要核心概念的 metrics,其中容器相關(guān)的指標(biāo)來(lái)源于 kubectl 內(nèi)置的 cAdvisor 服務(wù)。

Prometheus 特點(diǎn)

  1. 簡(jiǎn)潔強(qiáng)大的接入標(biāo)準(zhǔn)。只要實(shí)現(xiàn) Promethus Client 接口,就可以直接實(shí)現(xiàn)數(shù)據(jù)的采集。

  2. 多種數(shù)據(jù)采集方式。包括:在線,離線,push, pull 聯(lián)邦的方式進(jìn)行數(shù)據(jù)采集。

  3. 和 Kubernetes完 全兼容。

  4. 豐富的插件機(jī)制和生態(tài)。

  5. Prometheus Operator 助力。使 Prometheus 的運(yùn)維實(shí)現(xiàn)自動(dòng)化。

感謝各位的閱讀,以上就是“Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)Kubernetes日志采集與監(jiān)控告警知識(shí)點(diǎn)有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI