針對(duì)SREs和DevOps的十大開源項(xiàng)目
譯文【51CTO.com快譯】由于構(gòu)建可擴(kuò)展、且高度可靠的軟件系統(tǒng),是每個(gè)SRE(Site Reliability Engineering,網(wǎng)站可靠性工程)的最終目標(biāo),因此目前業(yè)界有著大量出色的SRE/DevOps開源項(xiàng)目與軟件產(chǎn)品,可供用戶學(xué)習(xí)與使用。
下面,我們將向您介紹十種在監(jiān)控、部署和維護(hù)領(lǐng)域,最受歡迎的開源項(xiàng)目。它們將能夠通過模擬網(wǎng)絡(luò)流量,并方便用戶對(duì)不可預(yù)測(或混雜)的事件進(jìn)行建模,以開發(fā)出可靠的系統(tǒng)項(xiàng)目。
1. Cloudprober
作為一種主動(dòng)性的跟蹤和監(jiān)控應(yīng)用程序,Cloudprober可以早于用戶發(fā)現(xiàn)網(wǎng)站上的各種故障。它通常使用“主動(dòng)”監(jiān)控的模式,來檢查目標(biāo)組件是否能夠按照預(yù)期運(yùn)行。例如,它會(huì)主動(dòng)運(yùn)行各種“探針”,以判斷網(wǎng)站的前端是否可以訪問其后端。同樣,它也可以運(yùn)行某個(gè)探針,來驗(yàn)證本地系統(tǒng)是否可以真正訪問到云端的目標(biāo)虛擬機(jī)。通過這種跟蹤方法,用戶可以采取獨(dú)立的實(shí)現(xiàn)方式,輕松地跟蹤應(yīng)用程序的相關(guān)配置,并及時(shí)發(fā)現(xiàn)系統(tǒng)中的潛在問題。
特征:
- Cloudprober不但能夠與Prometheus和Grafana之類的開源監(jiān)控棧實(shí)現(xiàn)原生集成,也可以導(dǎo)出各種探測的結(jié)果。
- 通過自動(dòng)發(fā)現(xiàn)云服務(wù)目標(biāo)的特性,Cloudprober為GCE和Kubernetes提供了開箱即用的支持,以及針對(duì)其他云服務(wù)的輕松配置。
- 為了簡化部署,Cloudprober由Go語言完全編寫,并被編譯成了一個(gè)靜態(tài)的二進(jìn)制文件。它可以通過各種Docker容器快速完成部署。由于具有自動(dòng)發(fā)現(xiàn)功能,Cloudprober不但可以完成大部分更新操作,而且通常不需要被重新部署與配置。
- Cloudprober的Docker鏡像文件比較小,僅包含了一個(gè)經(jīng)過靜態(tài)編譯的二進(jìn)制文件。同時(shí),它在運(yùn)行大量探針時(shí),僅需少量CPU和RAM。
圖片來源--https://github.com/google/cloudprober
2. Cloud Operations Sandbox(Alpha)
作為一個(gè)開源平臺(tái),Cloud Operations Sandbox可以讓用戶了解Google服務(wù)可靠性工程(Service Reliability Engineering)的各項(xiàng)實(shí)踐,并使用Ops Management(以前被稱為Stackdriver)來管理其云端系統(tǒng)。顯然,它需要用戶擁有一個(gè)Google云服務(wù)帳戶,才能基于Hipster Shop使用各種原生的微服務(wù)。
特征:
- 提供基于云原生、微服務(wù)架構(gòu)設(shè)計(jì)的應(yīng)用和Demo程序。
- 通過腳本處理,將服務(wù)一鍵式部署到Google云平臺(tái)。
- 其Demo服務(wù)可以生成負(fù)載生成器,即:模擬流量的部件。
圖片來源--https://github.com/GoogleCloudPlatform/cloud-ops-sandbox
3. Version Checker for Kubernetes
作為一款Kubernetes工具,它可以讓用戶觀察到群集中正在運(yùn)行的鏡像版本。同時(shí),該工具也允許用戶在Grafana儀表板上,以表格的格式查看當(dāng)前鏡像的版本。
特征:
- 能夠一次性設(shè)置多個(gè)自托管的鏡像注冊(cè)中心。
- 可以將版本信息作為Prometheus的相關(guān)指標(biāo)
- 支持諸如ACR、DockerHub、以及ECR之類的鏡像注冊(cè)中心。
圖片來源--https://github.com/jetstack/version-checker
4. Istio
作為一個(gè)開放的框架,Istio可被用于合并微服務(wù),根據(jù)微服務(wù)來監(jiān)控流量的轉(zhuǎn)移,實(shí)施各項(xiàng)策略,以及采取標(biāo)準(zhǔn)化的方式,匯總各種遙測數(shù)據(jù)(telemetry data)。Istio的控制層面能夠在底層平臺(tái)上,為群集管理(如Kubernetes)提供一個(gè)抽象層。
特征:
- 能夠?yàn)镠TTP、gRPC、WebSocket、以及TCP通信,提供自動(dòng)化的負(fù)載均衡。
- 可以通過豐富的路由規(guī)則、重試、故障轉(zhuǎn)移、以及故障注入,對(duì)各種流量行為進(jìn)行細(xì)粒度的控制。
- 提供可嵌入式的策略層和API配置,支持訪問控制、速率限制和配額。
- 自動(dòng)提供群集內(nèi)、以及群集出入口處,所有流量的各項(xiàng)指標(biāo)、日志和跟蹤。
- 通過強(qiáng)大的身份驗(yàn)證和授權(quán),在群集中實(shí)現(xiàn)安全的服務(wù)間(service-to-service)通信。
圖片來源--https://istio.io/
5. Checkov
Checkov是一種基礎(chǔ)架構(gòu)即代碼(Infrastructure-as-Code)類型的靜態(tài)代碼檢查工具。它不但能夠掃描Terraform、Cloud Details、Cubanet、無服務(wù)器、以及ARM Models等云端基礎(chǔ)架構(gòu),而且可以檢測它們的安全性、以及合規(guī)性方面的配置錯(cuò)誤。
特征:
- 擁有超過400條內(nèi)置的規(guī)則,涵蓋了針對(duì)AWS、Azure、以及Google Cloud的安全保護(hù)與實(shí)踐。
- 能夠通過評(píng)估Terraform Provider的各種設(shè)置,監(jiān)控由Terraform管理的IaaS、PaaS或SaaS的開發(fā)、維護(hù)和更新。
- 能夠檢測EC2 Userdata中的AWS憑證、Lambda的上下文變量、以及Terraform Providers。
圖片來源--https://www.checkov.io/
6. Litmus
Litmus是基于云原生混沌工程建模的工具集。Litmus通過提供各種工具,來協(xié)調(diào)Kubernetes上的混雜情況,以協(xié)助SRE(網(wǎng)站可靠性工程師)發(fā)現(xiàn)其部署中的漏洞。也就是說,SRE首先會(huì)使用Litmus在staging區(qū)域進(jìn)行混沌測試,然后在開發(fā)過程中,使用它來發(fā)現(xiàn)故障和漏洞,進(jìn)而通過實(shí)施解決方案,來提高系統(tǒng)的魯棒性。
特征:
- 開發(fā)人員可以在應(yīng)用開發(fā)期間運(yùn)行混沌測試,并作為單元測試或集成測試的一種擴(kuò)展。
- 當(dāng)應(yīng)用遇到管道中的故障路徑時(shí),CI(持續(xù)集成)管道的構(gòu)建者可以運(yùn)行混沌測試,來查找錯(cuò)誤。
圖片來源--https://github.com/litmuschaos/litmus
7. Locust
Locust是一個(gè)易于使用的,可編寫腳本且靈活的性能測試應(yīng)用程序。您可以使用標(biāo)準(zhǔn)的Python代碼定義用戶的行為,而無需使用復(fù)雜的UI(用戶接口)或特定域的語言。這使得Locust既可以擴(kuò)展,又對(duì)開發(fā)人員十分友好。
特征:
- Locust具有分布式和可擴(kuò)展性的特點(diǎn),用戶可以輕松地上手使用。
- 基于Web的UI,可以實(shí)時(shí)顯示進(jìn)度。
- 只要稍加修改,就可以測試多種系統(tǒng)。
圖片來源--https://github.com/locustio/locust
8. Prometheus
作為Cloud Native Computing Foundation的項(xiàng)目,Prometheus可以被用來監(jiān)控各種系統(tǒng)與服務(wù)。它能夠在指定時(shí)間,從已配置的目標(biāo)中提取各項(xiàng)指標(biāo),測試不同的規(guī)則,并顯示結(jié)果。如果發(fā)現(xiàn)任何違反了指定條件的情況,它會(huì)立即觸發(fā)通知。
特征:
- 提供多維的數(shù)據(jù)模型(包括由度量標(biāo)準(zhǔn)名稱和鍵/值集所定義的時(shí)間序列)。
- 通過服務(wù)發(fā)現(xiàn)或靜態(tài)配置,來發(fā)現(xiàn)目標(biāo)。
- 不依賴于分布式存儲(chǔ),且單個(gè)服務(wù)器節(jié)點(diǎn)具有自治能力。
- 使用一種強(qiáng)大而靈活的查詢語言--PromQL。
圖片來源--https://github.com/prometheus/prometheus
9. Kube-monkey
Kube-monkey是Netflix’s Chaos Monkey(https://netflix.github.io/chaosmonkey/)的一種Kubernetes集群實(shí)現(xiàn)。它通過隨機(jī)刪除Kubernetes Pod,來協(xié)助創(chuàng)建魯棒的資源,并對(duì)其進(jìn)行驗(yàn)證。
特征:
- Kube-monkey不但可以按需啟用,并且可以僅針對(duì)Kubernetes(k8s)用戶去終止pod。
- 可按需定制的各項(xiàng)功能。
圖片來源--https://www.slideshare.net/arungupta1/chaos-engineering-with-kubernetes
10. PowerfulSeal
PowerfulSeal能夠通過將故障注入Kubernetes集群中,以協(xié)助用戶盡快地識(shí)別出問題的根源。同時(shí),它能夠創(chuàng)建具有完整描述的混沌實(shí)驗(yàn)方案。
特征:
- 可與Kubernetes、OpenStack、AWS、Azure、GCP、以及本地主機(jī)相兼容。
- 可通過與Prometheus和Datadog(https://www.datadoghq.com/)連接,以收集相關(guān)指標(biāo)。
- 允許用戶使用多種模式,并自定義各種用例。
圖片來源--https://github.com/powerfulseal/powerfulseal
小結(jié)
由于微服務(wù)架構(gòu)在云計(jì)算領(lǐng)域持續(xù)占據(jù)著主導(dǎo)地位,因此我們往往需要通過可靠的工具,來監(jiān)控實(shí)例,并及時(shí)對(duì)運(yùn)行中的故障予以排查。開源技術(shù)的最大優(yōu)勢來源于可擴(kuò)展性。您可以按需向工具中添加各種功能,以更好地適應(yīng)自定義的體系架構(gòu)。鑒于上述介紹的十種開源項(xiàng)目,都有著廣泛的支持文檔和用戶社區(qū),您可以根據(jù)實(shí)際項(xiàng)目,進(jìn)行選用。
原文標(biāo)題:Top 10 Open Source Projects for SREs and DevOps,作者: Nir Sharma
【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】