什么是DevOps監控以及如何在組織中實施?
譯文譯者 | 李睿
審校 | 重樓
如今的軟件開發商經常面臨兩大挑戰——快速交付和大規模創新。DevOps通過在軟件開發生命周期(SDLC)中引入自動化來開發和交付高質量的軟件,從而幫助解決這些挑戰。
持續集成(CI)/持續部署(CD)是DevOps實踐中自動化的關鍵組件。它可以自動化代碼構建、測試和部署,因此企業可以更快、更可靠地交付代碼更改。但是,必須持續監控他們的持續集成(CI)/持續部署(CD)管道,以實現DevOps承諾。
那么,DevOps中的監控是什么,企業如何利用它來挖掘最佳的DevOps潛力?以下進行深入探討……
什么是DevOps監控?
DevOps方法論的核心是一種數據驅動的方法。持續改進軟件質量的能力完全依賴于理解代碼如何執行,它引入了什么問題,以及在哪里找到改進機會。這就是DevOps監控發揮重要作用的地方。
DevOps監控是在DevOps生命周期的每個階段(從規劃、開發、集成和測試到部署和操作)跟蹤和測量代碼的性能和健康狀況的實踐。它有助于實現應用程序和基礎設施性能的實時、易于使用的單一窗格視圖。好處是可以及早發現重大威脅,并在它們成為令人頭痛的問題之前解決它們。DevOps監控收集有關從CPU利用率到存儲空間到應用程序響應時間的所有數據。實時流、可視化和歷史回放是DevOps監控的一些關鍵方面。
DevOps監控對業務組織的重要性是什么?
DevOps監控使業務組織能夠跟蹤、識別和理解關鍵指標,例如部署頻率和故障、代碼錯誤計數、拉取請求的周期時間、更改失敗率、平均檢測時間(MTTD)、平均緩解時間(MTTM)和平均補救時間(MTTR)。這些具有價值的見解使組織能夠主動識別應用程序或基礎設施問題,并實時解決這些問題。監控還可以通過識別自動化的機會來優化DevOps工具鏈。
以下是突出DevOps監控對業務組織的重要性的一些關鍵好處:
1.能見度高
由DevOps促成的持續集成(CI)/持續部署(CD)支持頻繁的代碼更改。然而,代碼更改速度的加快使得生產環境越來越復雜。此外,在現代云原生生態系統中引入微服務和微前端會導致在生產中運行各種工作負載,每種工作負載在規模、冗余、延遲和安全性方面都有不同的操作需求。因此,提高DevOps生態系統的可見性對于團隊實時檢測和響應問題至關重要。這就是持續監測發揮關鍵作用的地方。
DevOps監控提供了在不同環境中部署新版本代碼時應用程序性能的實時視圖。因此,可以在流程的早期識別和修復問題,并繼續測試和監控后續的代碼更改。監控可以幫助組織驗證新版本,以確保它們按計劃執行,因此可以放心地發布新部署。
2.加強協作
DevOps的核心原則是實現開發團隊和運維團隊之間的無縫協作。然而,工具之間缺乏適當的集成會阻礙不同團隊之間的協調。這就是DevOps監控的用武之地,可以利用持續監控來獲得整個DevOps管道的完整和統一的視圖。甚至可以跟蹤提交和拉取請求,以更新相關Jira問題的狀態并通知團隊。
3.高實驗性
不斷變化的客戶需求要求組織不斷嘗試,通過個性化和優化的轉換渠道來優化他們的產品線。組織的團隊經常在生產環境中運行數百個實驗和功能標志,這使得很難確定任何降級體驗的原因。此外,客戶對不間斷服務和應用程序的需求不斷增加,可能會增加應用程序的漏洞。持續監控可以幫助組織監控實驗,并確保它們按預期工作。
4.管理變更
通常,大多數生產中斷都是由頻繁的代碼更改觸發的。因此,必須實現變更管理,特別是對于關鍵任務應用程序,例如銀行和醫療保健應用程序。人們需要確定與變更相關的風險,并基于變更的風險自動化審批流程。全面的監控策略可以幫助組織處理這些復雜性,只需要一組豐富、靈活、高級的監控工具。
5.監控分布式系統
組織經常處理由許多規模的跨公司服務組成的分布式系統。因此,組織的團隊需要監控和管理他們所構建的系統以及相關系統的性能。DevOps監控使組織能夠輕松地處理這種依賴的系統監控。
6.左移測試
左移測試就是向左移動時進行測試。在軟件開發生命周期的開始階段執行時,它可以顯著提高代碼質量,并減少測試周期。但是,只有當組織簡化對預生產環境運行狀況的監控并盡早且頻繁地實施時,才能實現左移測試。持續監控還使組織能夠在將應用程序部署到生產環境之前跟蹤用戶交互并維護應用程序的性能和可用性。
統一監控和分析的好處
統一的監控和分析可以幫助組織的DevOps團隊在整個軟件生命周期中獲得完整的端到端可見性。然而,在DevOps持續集成(CI)/持續部署(CD)生態系統中統一監控數據、分析和日志可能具有挑戰性和復雜性。
DevOps監控類型
基礎設施監控
每個IT企業都必須建立和維護IT基礎設施,以便以無縫和高效的方式交付產品和服務。通常,IT基礎設施包括與IT相關的一切,例如服務器、數據中心、網絡、存儲系統以及計算機硬件和軟件。DevOps監控有助于管理和監控這個IT基礎設施,這被稱為基礎設施監控。
基礎設施監控從IT基礎設施收集數據。它通過分析數據來獲得深入的見解,從而幫助跟蹤計算機系統、網絡和其他IT統的性能和可用性。它還有助于收集關于CPU利用率、服務器可用性、系統內存、磁盤空間和網絡流量等指標的實時信息。基礎設施監控包括硬件監控、操作系統監控、網絡監控和應用程序監控。
一些流行的基礎設施監控工具有:
- Nagios
- Zabbix
- ManageEngine OpManager
- Solarwinds
- Prometheus
應用程序監控
應用程序監控幫助DevOps團隊跟蹤應用程序性能的運行時指標,比如應用程序正常運行時間、安全性和日志監控細節。應用程序性能監控(APM)工具用于監控廣泛的指標,包括事務時間和數量、API和系統響應以及整體應用程序運行狀況。這些指標以圖形和統計數據的形式得到,因此DevOps團隊可以輕松地評估應用程序的性能。
一些流行的應用程序監控工具是:
- Appdynamics
- Dynatrace
- Datadog
- Uptime Robot
- Uptrends
- Splunk
網絡監控
網絡監控用于跟蹤和監控計算機網絡及其組件(如防火墻、服務器、路由器、交換機和虛擬機)的性能和可用性。通常,網絡監控系統共享5個重要數據點,即發現、映射、監控、警報和報告。網絡監控有助于發現網絡故障、測量性能和優化可用性。這使組織的DevOps團隊能夠防止網絡停機和故障。
一些流行的NMS工具有:
- Cacti
- Ntop
- Nmap
- Spiceworks
- Wireshark
- Traceroute
- Bandwidth Monitor
DevOps監控和可觀察性的區別
DevOps團隊經常交替使用監控和可觀察性。雖然這兩個概念在確保系統、數據和應用程序的安全性方面都起著至關重要的作用,但監控和可觀察性是互補的功能,并不相同。以下了解一下這兩個概念的不同之處:
監測和可觀察性之間的區別取決于所收集的數據是否預定義。監控收集和分析從各個系統收集的預定義數據,可觀察性收集所有IT系統產生的所有數據。
監控工具通常使用儀表板來顯示性能指標和其他KPI,因此DevOps團隊可以輕松地識別和糾正任何IT問題。然而,指標只能突出組織的團隊可以預見的問題,因為它們是創建儀表板的問題。這使得DevOps團隊難以監控云原生環境和應用程序的安全性和性能狀況,因為這些問題通常是多方面的且不可預測的。
另一方面,可觀察性工具利用從整個IT基礎設施收集的日志、跟蹤和度量來識別問題,并主動通知團隊以減輕問題。在監控工具提供有用數據的同時,DevOps團隊需要利用可觀察性工具對整個IT基礎設施的健康狀況進行可操作的洞察,并在性能異常的第一個跡象時檢測漏洞或脆弱的攻擊載體。然而,可觀察性并不能取代監測,與其相反,它有助于更好的監控。
最好的DevOps監控工具
DevOps監控工具使DevOps團隊能夠實現對整個DevOps應用程序開發生命周期的持續監控,并在將代碼發布到生產環境之前識別潛在的錯誤。但是,組織需要選擇最適合其業務目標的監控工具,以便以最小的成本獲得高質量的產品。以下是市場上一些優秀10大的DevOps監控工具:
1.Splunk
Splunk是機器生成數據方面最受歡迎的監控工具。除了監控,這個流行的工具還用于搜索、分析、調查、故障排除、警報和報告機器生成的數據。Splunk將所有機器生成的數據整合到一個中心索引中,使DevOps團隊能夠快速收集所需的見解。Splunk的誘人之處在于它不利用任何數據庫來存儲數據;與其相反,它使用索引來存儲數據。
該工具有助于創建圖形、儀表板和交互式可視化,因此組織的團隊可以輕松訪問數據并找到復雜問題的解決方案。
Splunk的主要特點如下:
- 實時數據處理。
- 接受各種格式的輸入數據,包括CSV和JSON。
- 允許輕松搜索和分析特定的結果。
- 允許排除任何性能問題。
- 可以監控任何業務指標,并做出明智的決定。
- 可以將人工智能與Splunk結合到數據策略中。
2.Datadog
Datadog是一個基于訂閱的SaaS平臺,支持對服務器、應用程序、數據庫、工具和服務的持續監控。這個工具可以幫助組織培養一種可觀察性、協作性和數據共享的文化,這樣就可以獲得關于操作變更的快速反饋,并提高開發速度和敏捷性。
Datadog的一些關鍵特性是:
- 可擴展的檢測和開放的API。
- 自動發現監控檢查的自動配置。
- 與配置管理和部署工具的代碼監控集成。
- 易于定制的監控儀表板。
- 80多個交鑰匙集成。
- 獲取其他DevOps工具的運行狀況和性能可見性。
3. Consul
Hashi公司的Consul是一個開源監控工具,用于連接、配置和保護動態基礎設施中的服務。該工具使組織能夠創建實時跟蹤應用程序、服務和運行狀況狀態的中央注冊中心。Consul的內置用戶界面(UI)或APM集成使DevOps團隊能夠監控應用程序性能,并在服務級別識別問題區域。Consul用戶界面中的拓撲圖幫助組織可視化網格中注冊的服務之間的通信流。
Consul的一些主要特性如下所示:
- 現代基礎設施的趁手工具。
- 提供了一個健壯的API。
- 使用DNS或HTTP輕松找到每個應用程序所需的服務。
- 支持多數據中心。
4.Monit
Monit是一個開源的DevOps監控工具。它用于管理和監控Unix系統。組織的團隊可以利用Monit來監控守護進程,例如在系統啟動時從/etc/init/啟動的進程,比如Sendmail、apache、sshd和MySQL。該工具還可以用于運行在本地主機上運行的類似程序、文件、目錄和文件系統,并跟蹤更改,例如大小更改、時間戳更改以及校驗和更改。此外,還可以使用Monit監控本地主機上的一般系統資源,例如CPU使用情況、內存使用情況和平均負載。
Monit的一些主要特點是:
- 自動維護和維修。
- 在任何事件中執行有洞察力的操作。
- 該工具有內置的網絡測試關鍵互聯網協議,如HTTP和SMTP。
- 用于在特定時間測試程序或腳本。
- Monit是一個自治的系統,不依賴于任何插件或特殊的庫來運行。
- 易于編譯和運行在大多數Unix風格。
5.Nagios
Nagios是最流行的DevOps監控工具之一。它是一種開源工具,用于監控所有關鍵任務基礎設施組件,包括服務、應用程序、操作系統、系統指標、網絡協議和網絡基礎設施。該工具促進了基于代理和無代理的監控,使監控Linux和Windows服務器變得很容易。使用Nagios,組織的DevOps團隊可以監控各種應用程序,包括Windows應用程序、Unix應用程序、Linux應用程序和Web應用程序。
Nagios的一些關鍵特性如下:
- 支持數百個第三方插件,因此可以監控幾乎任何事物,所有內部和外部應用程序、服務和系統。
- 簡化日志數據排序流程。
- 提供高網絡可見性和可擴展性。
- 提供完整的Java管理擴展監控。
6. Prometheus
Prometheus是一個開源的監控工具包,主要用于系統監控和警報。該工具收集并存儲度量信息以及記錄它的時間戳,稱為標簽的可選鍵-值對也存儲在度量信息中。Prometheus工具生態系統由多個組件組成,包括用于存儲時間序列數據的主Prometheus服務器、用于檢測應用程序代碼的客戶端庫、用于處理短期作業的推送網關和用于處理警報的警報管理器。
Prometheus工具的一些關鍵特性是:
- 為StatsD、HAProxy和Graphite等服務的特殊目的導出提供了便利。
- 支持Mac、Windows和Linux操作系統。
- 方便監控容器環境,比如Dockers和Kubernetes。
- 輕松集成配置工具,如Ansible,Puppet,Chef和Salt。
- 該工具不依賴分布式存儲。
- Prometheus工具支持多種模式的圖形化和儀表板。
7. Sensu
Sumo Logic的Sensu是針對關鍵任務系統的監控即代碼解決方案。這種端到端的可觀察性管道使組織的DevOps和SRE團隊能夠收集、過濾和轉換監控事件,并將它們發送到他們選擇的數據庫。使用單個Sensu集群,組織可以輕松監控數萬個節點,并快速處理每小時超過100億個事件。該工具有助于企業級監控生產工作負載,為整個基礎設施提供真正的多租戶和多集群可見性。
Sensu工具的一些關鍵特性是:
- 支持外部PostgreSQL數據庫,允許組織無限擴展Sensu。
- Sensu的內置等,處理10000個連接設備和40000個代理/集群。
- 提供了聲明性配置和基于服務的監控方法。
- 輕松與Splunk、PageDuty、ServiceNow和Elasticsearch等其他DevOps監控解決方案集成。
8.Sematext
Sematext是滿足所有DevOps監控需求的一站式解決方案。與其他僅提供性能監控、日志記錄或體驗監控的監控工具不同,Semattext提供了DevOps團隊需要的所有監控解決方案,以解決其生產和性能問題并加快進度。使用Semtext,組織的DevOps團隊可以監控應用程序性能、日志、度量、真實用戶、流程、服務器、容器、數據庫、網絡、庫存、警報、事件和API。組織還可以執行日志管理、合成監控和JVM監控以及其他許多操作。
Sematext工具的一些關鍵特性是:
- 使組織能夠實時映射和監控整個基礎設施。
- Sematext為DevOps團隊、系統管理員、SRE和Bizops提供了更好的可視性。
- 提供完全托管的Elasticsearch和Kibana,因此組織不需要在昂貴的Elasticsearch專家人員和基礎設施上花費用。
- 允許組織在不到十分鐘的時間內建立免費帳戶。
- Seamtext使與外部系統的集成變得輕而易舉。
9.PagerDuty
PagerDuty是一個操作性能監控工具,它可以讓組織的DevOps團隊評估應用程序的可靠性和性能。該工具使組織的DevOps團隊與生產中的代碼保持聯系,利用機器學習技術來識別問題,并提醒團隊盡早解決錯誤。這意味著組織的DevOps團隊花更少的時間來響應事件,而有更多的時間來構建和創新。
PagerDuty工具的一些主要功能是:
- PagerDuty帶有直觀的警報API,使其成為一個優秀的,易于使用的事件響應和警報系統。
- 如果警報沒有在預定義的時間內響應,該工具將根據最初建立的SLA自動升級。
- 支持通過HTTP上的拉模型進行數據收集。
PagerDuty作為獨立的服務器節點工作,不依賴于分布式存儲。
- 這是一個用于調度和升級策略的健壯的GUI工具。
- 還支持儀表板和圖表的多種模式。
10.AppDynamics
AppDynamics是市場上最流行的應用程序性能監控工具之一。作為一個持續監控工具,AppDynamics可以幫助監控組織的最終用戶、應用程序、SAP、網絡、數據庫以及云計算和內部部署計算環境的基礎設施。有了這個工具,組織的DevOps團隊可以輕松地獲得跨服務器、網絡、容器、基礎設施組件、應用程序、最終用戶會話和數據庫事務的完整可見性,因此他們可以快速響應性能問題。
AppDynamics工具的一些關鍵特性是:
- 與世界上最好的技術無縫集成,如AWS、Azure、谷歌云、IBM和Kubernetes。
- AppDynamics利用機器學習提供即時的根本原因診斷。
- 支持混合環境監控。
- 具有思科全棧可觀察性與AppDynamics。
- 采用按使用付費的定價模式。
DevOps監控用例:企業如何使用監控工具的真實示例
毫無疑問,DevOps監控工具使組織的DevOps團隊能夠在整個軟件開發生命周期中自動化監控過程。這些監控工具使組織的DevOps團隊能夠盡早識別代碼錯誤,有效地運行代碼操作,并快速響應使用中的代碼更改。但是,必須有效地使用監控工具,以確保完全成功。以下是一些突出的DevOps監控用例,組織可以利用它們來獲得DevOps的成功:
監控Git工作流
由于多個開發人員同時開發相同的項目功能,DevOps團隊經常會遇到反復出現的代碼庫沖突。Git使組織的DevOps團隊能夠管理和解決沖突,包括提交和回滾。因此,當監控Git工作流時,可以輕松地保持代碼沖突并確保項目的一致進展。
代碼檢測
代碼檢測工具可以幫助DevOps團隊分析代碼的風格、語法和潛在問題。有了這些工具,組織的DevOps團隊可以確保他們遵循編碼的最佳實踐和標準。代碼檢測使組織能夠在代碼問題觸發運行時錯誤和其他潛在性能問題之前識別并解決它們。使用檢測工具,組織可以確保代碼干凈且一致。
分布式跟蹤
組織的DevOps團隊需要分布式跟蹤,以簡化微服務應用程序的監控和調試過程。分布式跟蹤幫助組織的團隊理解應用程序如何通過API相互交互,更容易識別和解決應用程序性能問題。
持續集成(CI)/持續部署(CD)日志
隨著持續集成(CI)/持續部署(CD)管道成為DevOps生態系統的重要元素,監控它們對于DevOps的成功至關重要。持續集成(CI)日志有助于確保代碼構建平穩運行。否則,日志將通知組織代碼構建中的錯誤或警告。因此,監控持續集成(CI)日志有助于識別構建管道中的潛在問題并主動解決它們。同樣,持續部署(CD)日志會告知整個管道的運行狀況和狀態。因此,監控持續部署(CD)日志可以幫助DevOps團隊輕松地排除任何失敗的部署并修復潛在的問題。
配置管理更改日志
配置管理更改日志幫助DevOps團隊深入了解系統的運行狀況和重要更改(包括人工和自動更改)。因此,監控這些日志使組織的團隊能夠跟蹤對系統所做的更改,識別未經授權的更改并糾正問題。
代碼插裝
代碼插入是將代碼添加到應用程序的過程。這一過程使組織能夠收集有關應用程序性能及其操作路線的數據。這對于跟蹤堆棧調用和了解場景值至關重要。因此,監控這種代碼插裝結果使組織能夠衡量DevOps實踐的效率,并了解潛在的差距(如果有的話)。它還可以幫助組織識別錯誤并改進測試。
確定DevOps監控的最佳實踐
就像采用DevOps本身一樣,實現健壯的DevOps監控模型需要文化、流程和工具的戰略組合。盡管組織可以從競爭對手采用DevOps監控的方式中獲得靈感,但組織采用的正確模型必須與組織獨特的組織需求和軟件開發生命周期(SDLC)相一致。以下是一些最佳實踐,可以幫助組織更好地監控DevOps:
知道該監控什么
知道該監控什么是成功的一半。因此,即使在開始實施DevOps監控策略之前,了解需要監控的內容也是至關重要的。組織的監控目標應該集中于服務器的性能、漏洞、用戶活動和應用程序日志。
明確發展目標
組織的DevOps監控策略必須以固定的開發目標為錨定。這些目標幫助組織了解DevOps監控策略的執行情況。最受歡迎的確保實現目標的方法是跟蹤每個Sprint持續時間,并測量用于識別、記錄和糾正問題的時間。利用機器學習技術自動化配置過程可以幫助組織節省大量時間并避免人工錯誤。
監控用戶活動
監控用戶活動是最重要的監控類型之一。它可以幫助組織跟蹤不尋常的請求,多次登錄嘗試,從未知設備登錄,以及任何可疑的用戶活動,如開發人員試圖訪問管理帳戶。通過監控用戶活動,組織可以確保正確的用戶正在訪問正確的資源。這個過程有助于防止對系統的潛在威脅,并減輕網絡攻擊。
選擇合適的監控工具
從DevOps生態系統中大量可用的工具中選擇正確的DevOps監控工具集是一項艱巨的任務。選擇最適合軟件開發生命周期(SDLC)和應用程序基礎設施的精確工具始于評估過程。它主要涉及了解工具的特性和功能,以便輕松評估它是否最適合應用程序或基礎設施監控。所以,在評估DevOps監控工具時,需要問一些問題:
- 該工具易于集成嗎?確保監控工具可以輕松地與DevOps管道和更廣泛的技術堆棧集成。這可以幫助組織輕松地生成操作和警報。
- 該工具是否提供了新的事物?收集大量數據的DevOps監控工具比其他工具要好。然而,更多的數據需要更多的關注,使用更多的存儲空間,需要更多的管理。因此,要選擇為新的監測途徑鋪平道路的監測工具,而不是那些提供正常功能的監測工具。
- 該工具是否提供統一的儀表板? 組織的DevOps生態系統由許多協同工作的服務、庫和產品組成。因此,提供統一儀表板的DevOps監控工具可以幫助組織獲得整個DevOps生命周期的完整性、實時可見性,并更容易識別問題和差距。
- 該工具提供什么類型的審計日志?了解系統的當前狀態非常重要,特別是在出現問題時。審計日志提供的逐項操作記錄使組織能夠了解發生了什么,確定哪個流程或人員負責,分析根本原因,并為了解系統中的差距提供基礎。那么,組織的工具提供什么類型的審計日志,它們如何提供關鍵信息?
- 工具的數據存儲需求是什么?DevOps監控工具會生成大量的數據。因此,了解該工具的存儲需求和云存儲成本非常重要,以便在不超過其使用壽命的情況下保存有用的歷史記錄。
- 該工具提供哪些類型的診斷?檢查監控工具是否提醒注意事項或幫助組織診斷基本問題。選擇綜合工具(例如應用程序性能監控平臺)以了解復雜場景中發生的情況,例如多個異步微服務一起工作。
原文標題:What Is DevOps Monitoring and How to Implement It in Your Organization,作者:Gilbert Martin