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