解析 Kubernetes 故障排查工具 Robusta_第1頁
解析 Kubernetes 故障排查工具 Robusta_第2頁
解析 Kubernetes 故障排查工具 Robusta_第3頁
解析 Kubernetes 故障排查工具 Robusta_第4頁
解析 Kubernetes 故障排查工具 Robusta_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

作為一個(gè)用于多集群Kubernetes監(jiān)控、故障排除和自動(dòng)化的開源平臺(tái),就像Docker用于部署應(yīng)用程序的基礎(chǔ)設(shè)施即代碼一樣,Robusta用于維護(hù)KubernetesCluster應(yīng)用程序和處理其警報(bào)的基礎(chǔ)設(shè)施即代碼。Robusta概述作為一款用于KubernetesCluster故障排查的開源平臺(tái),其本質(zhì)是為了弄清楚我們當(dāng)前所構(gòu)建的KubernetesCluster的健康狀況,并針對(duì)所出現(xiàn)的告警行為進(jìn)行合理解釋以及給予我們相關(guān)修復(fù)建議。與大多數(shù)其他云應(yīng)用程序一樣,Robusta能夠基于Helm安裝和管理,其主要位于監(jiān)控堆棧(Prometheus、Elasticsearch等)之上。從技術(shù)生態(tài)角度來看,Robusta既是一款Kubernetes的自動(dòng)化引擎,也是一個(gè)多集群可觀測性開源平臺(tái)。Robusta通常與Prometheus一起協(xié)作使用,當(dāng)然,也支持其他工具集成?;谄湎嚓P(guān)特性,通過監(jiān)聽KubernetesCluster中的相關(guān)事件,Robusta可以告訴我們?yōu)槭裁窗l(fā)出警報(bào)、同時(shí)發(fā)生了什么以及我們能夠所采取的措施。除此之外,Robusta也能夠改進(jìn)我們現(xiàn)有的告警體系,或用于定義由APIServer更改觸發(fā)的新告警流程,以革新現(xiàn)有落后的觀測生態(tài)。Robusta功能特性Kubernetes自動(dòng)化引擎即當(dāng)我們所構(gòu)建的KubernetesCluster中發(fā)生任何意外事件時(shí)所采取的自動(dòng)操作。自動(dòng)修復(fù)問題或收集有關(guān)問題的證據(jù)并在后續(xù)的時(shí)間進(jìn)行調(diào)查、分析。1、自動(dòng)修復(fù)當(dāng)然,除了個(gè)別比較棘手的問題外,大多數(shù)常見的問題基本上都有已知的解決方法,基于Robusta,我們可以輕松地自動(dòng)修復(fù)已知問題。例如,在YAML中配置修復(fù)操作或在Python中編寫我們自定義的操作以實(shí)現(xiàn)完全可定制性。2、告警豐富Robusta獲取所配置現(xiàn)有的告警規(guī)則,然后并自動(dòng)提取有關(guān)受影響的Kubernetes資源的詳細(xì)信息。例如,當(dāng)某一KubernetesClusterNode的磁盤空間不足時(shí),Robusta會(huì)顯示歷史圖表。當(dāng)Pod崩潰時(shí),Robusta便會(huì)獲取相關(guān)日志進(jìn)行后續(xù)的調(diào)查、分析。Cluster觀測性此平臺(tái)能夠基于KubernetesCluster的一體式、全方位進(jìn)行觀測,涉及告警儀表盤、不健康的資源、日志以及相關(guān)圖標(biāo)等。1、資源展示Robusta能夠映射我們所構(gòu)建的的KubernetesCluster拓?fù)洳?gòu)建正在運(yùn)行的應(yīng)用程序列表以及識(shí)別每個(gè)人的健康問題并顯示細(xì)節(jié)。除此之外,基于當(dāng)前的運(yùn)行狀況,能夠?qū)崟r(shí)查看正在運(yùn)行的Pod、CPU使用率、內(nèi)存使用率以及有關(guān)工作負(fù)載的其他關(guān)鍵信息。Robusta記錄了KubernetesCluster中發(fā)生的所有Kubernetes變更,能夠準(zhǔn)確查看YAML更改的內(nèi)容以及它是否導(dǎo)致了問題等。2、Kubernetes原生追蹤通常情況下,Robusta將KubernetesUI與警報(bào)和可觀察性平臺(tái)相結(jié)合,告警會(huì)自動(dòng)映射到正確的Kubernetes資源,然后按命名空間或集群進(jìn)行過濾告警信息。除此之外,要真正了解問題,我們往往需要有關(guān)各個(gè)Pod的詳細(xì)日志和事件信息。然而,基于Robusta,使得我們無需在生產(chǎn)環(huán)境中運(yùn)行Kubectl命令或在窗口之間跳轉(zhuǎn),而直接在Robusta中搞定所有的一切,比如,按需獲取日志、顯示圖形并跟蹤Pod的狀態(tài)等。路由通知基于相關(guān)規(guī)則,基于Robusta統(tǒng)一通知服務(wù),我們能夠可以獲取有關(guān)警報(bào)、失敗的作業(yè)、應(yīng)用程序更新以及我們所選擇的任何其他內(nèi)容的通知。1、事件通知Robusta能夠更輕松地獲得有關(guān)失敗作業(yè)、CrashLoopBackOffs或重要Kubernetes對(duì)象的意外更改的通知。Robusta支持向Slack、MSTeams、Discord、PagerDuty、OpsGenie、WebEx等發(fā)送消息。除此之外,Robusta也能夠從各種傳入目的地接收數(shù)據(jù),包括Prometheus和Elasticsearch。2、告警通知當(dāng)我們將Prometheus警報(bào)直接發(fā)送到Slack時(shí),這些警報(bào)通常缺乏上下文。而基于Robusta路由告警,我們可以將告警連接到相關(guān)日志和圖表予以展現(xiàn)。內(nèi)置告警基于Prometheus生態(tài)技術(shù)體系,Robusta采用了最流行的方式來監(jiān)控KubernetesCluster并使其變得更好。同時(shí),告警也增加了可觀察性。以下為常用的場景,具體如下:1、Pod崩潰2、系統(tǒng)磁盤空間不足3、OOMKill4、請求超時(shí)5、其他事件場景示例:內(nèi)存溢出場景當(dāng)然,除了上述核心的特性外,Robusta也包含Timeline(時(shí)間軸)功能,基于時(shí)間軸,我們可以查看所有Prometheus警報(bào)的歷史記錄,以及與KubernetesCluster中的配置更改相關(guān)的記錄等。Robusta工作原理上面我們簡單介紹了Robusta的功能特性,接下來,我們來看一下其實(shí)現(xiàn)原理?;赗obusta的相關(guān)特性,其自動(dòng)化實(shí)現(xiàn)(采用YAML配置,強(qiáng)調(diào)預(yù)構(gòu)建的自動(dòng)化)主要包含如下三個(gè)部分:1、Trigger即“何時(shí)運(yùn)行?”,通常主要針對(duì)告警、日志以及事件更新等。Trigger觸發(fā)器是啟動(dòng)自動(dòng)化的條件。例如,失敗的Kubernetes作業(yè)等。2、Action-動(dòng)作即“做什么?”,Action動(dòng)作是我們在自動(dòng)化運(yùn)行時(shí)執(zhí)行的一系列相關(guān)操作等。例如,獲取日志或收集Java堆轉(zhuǎn)儲(chǔ)。3、Sink-接收器即“最終歸宿?”Sink接收器是發(fā)送任何輸出的地方。例如,Slack渠道等。如下為Robusta具體工作原理結(jié)構(gòu):例如,針對(duì)Pod崩潰時(shí)的(即“RobustaCrashingPods”)的行為規(guī)則定義如下所示:triggers:-on_prometheus_alert:alert_name:KubePodCrashLoopingactions:-logs_enricher:{}sinks:-kafka假設(shè),基于某種特定的原因,當(dāng)我們所構(gòu)建的KubernetesCluster中的某一個(gè)Pod發(fā)生崩潰時(shí),此時(shí),依據(jù)所定義的告警規(guī)則進(jìn)行告警觸發(fā)時(shí),Robusta都會(huì)從正確的Pod中獲取日志并將它們附加到告警中,并將會(huì)自動(dòng)化把日志發(fā)送到Kafka中。Robusta參考架構(gòu)基于上述參考架構(gòu),我們可以看到,整個(gè)Robusta架構(gòu)的核心圍繞“自動(dòng)化引擎”進(jìn)行開展,具體涉及如下組件:1、Robusta-Forwarder此組件主要連接到APIServer并監(jiān)控K8sCluster的變化,并將它們轉(zhuǎn)發(fā)給Robusta-Runner進(jìn)行處理。2、Robusta-Runner此組件主要執(zhí)行自定義的Playbooks,依據(jù)相關(guān)的業(yè)務(wù)規(guī)則。3、BundledPrometheusStack此組件為可選項(xiàng),Robusta包括一個(gè)可選的嵌入式Prometheus堆棧,根據(jù)最佳實(shí)踐預(yù)先配置了Kubernetes告警。如果我們在實(shí)際的場景中已經(jīng)在使用了Kube-Prometheus-Stack,那么,則可以將其指向Robusta。4、WebUI此組件為可選項(xiàng),我們可以依據(jù)實(shí)際的情況,進(jìn)行WebUI配置,基于此,能夠?yàn)槲覀兲峁┮粋€(gè)單一的管理面板來觀測跨多個(gè)K8sCluster的所有警報(bào)和Pod狀態(tài)追蹤。5、CLI此組件為可選項(xiàng),RobustaCli通常具備兩個(gè)主要用途,具體如下所示:(1)基于自動(dòng)生成的Helm值使的Robusta安裝變得更容易,便捷,有利于維護(hù),節(jié)省資源成本;(2)可以手動(dòng)觸發(fā)Robusta故障排除工作流程(例如,我們可以從任何JavaPod應(yīng)用來獲取相關(guān)堆轉(zhuǎn)儲(chǔ)信息,以供排障、分析之用)。Robusta安裝部署其實(shí),從本質(zhì)上來講,Robusta的部署安裝與其他應(yīng)用程序一樣,安裝較為簡單,官方給出了多種部署方式,這里,我們基于Helm進(jìn)行安裝,具體步驟如下所示。1、安裝RobustaCli插件[leonli@Leon

robusta

]

%

python3

-m

pip

install

-U

robusta-cli

--no-cacheDefaultingtouserinstallationbecausenormalsite-packagesisnotwriteableCollectingrobusta-cliDownloadingrobusta_cli-0.10.11-py3-none-any.whl(230kB)|████████████████████████████████|230kB4.6kB/sCollectinghikaru<0.6.0,>=0.5.1-beta.0Downloadinghikaru-0.5.1b0-py3-none-any.whl(1.2MB)|████████████████████████████████|1.2MB25kB/sCollectingcolorlog<6.0.0,>=5.0.1Downloadingcolorlog-5.0.1-py2.py3-none-any.whl(10kB)Collectingtoml<0.11.0,>=0.10.2Downloadingtoml-0.10.2-py2.py3-none-any.whl(16kB)Collectingopsgenie-sdk<3.0.0,>=2.1.5Downloadingopsgenie_sdk-2.1.5-py3-none-any.whl(247kB)|████████████████████████████████|247kB19kB/sCollectingprometheus-client<0.13.0,>=0.12.0Downloadingprometheus_client-0.12.0-py2.py3-none-any.whl(57kB)...Collectingrobusta-cliDownloadingrobusta_cli-0.8.31-py3-none-any.whl(143kB)|████████████████████████████████|143kB25kB/sDownloadingrobusta_cli-0.8.30-py3-none-any.whl(143kB)...2、生成Robusta配置文件[leonli@Leon

robusta

]

%

robusta

gen-configRobustareportsitsfindingstoexternaldestinations(wecallthem"sinks").We'lldefinesomeofthemnow.

ConfigureSlackintegration?ThisisHIGHLYrecommended.[Y/n]:YIfyourbrowserdoesnotautomaticallylaunch,openthebelowurl:https://api.robusta.dev/integrations/slack?id=xxxxYou'vejustconnectedRobustatotheSlackof:devopscluster...3、安裝Robusta[leonli@Leon

robusta

]

%

helm

install

robusta

robusta/robusta

-f

./generated_values.yaml

\

--setclusterName=devops-cluster4、查看Robusta資源[leonli@Leon

robusta

]

%

kubectl

get

pods

-A

|

grep

robusta至此,Robusta組件安裝完成,我們可以通過其GUI查看所構(gòu)建的相關(guān)資源信息。綜上所述,Robusta作為一個(gè)自動(dòng)化引擎,能夠偵聽不同的數(shù)據(jù)源,例如Kube

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論