譯者 | 陳峻
審核 | 重樓
不可否認,在當今的技術環境中,應用系統已變得越來越繁雜。為了及時獲悉各種軟件應用的健康和服務狀態,我們需要通過關注基本的應用指標,來確保應用的所有組件在部署的整個過程中,按照預期運行。
不過,對于項目團隊而言,在部署過程中實施實時的監控,似乎已成為了極難實現的運營“必備品”。對此,Datadog正好一顯身手。它是一個業界領先的監控和分析平臺,可以提供從前端應用到底層硬件等基礎架構的每個部分的可見性。與之配套的是大家較為熟悉的Ansible。這是一款在部署和配置管理方面尤為強大的自動化工具。
在本文中,我將和您討論Datadog實時監控會被如何集成到基于Ansible的部署中,以及在整體部署過程中,如何通過實時監控以大幅降低事故的發生。當然,其相關概念與方法,也可以被應用到類似的監控和部署工具集中。
為何要在部署中集成實時監控?
在不斷迭代與發展的DevOps領域,開發與運營之間的界限正變得越來越模糊,兩者直接的協作正變得越來越緊密。正是這種整合,促進了團隊成員越來越需要在應用系統的整個生命周期內進行持續監控,而不僅僅是在部署之后才監控。
那么,如果將Datadog與您的現有部署流程、及部署腳本相集成,到底能夠帶來哪些優勢呢?我為您總結了如下三項基本要素:
- 即時反饋:在部署過程中實施實時監控的主要好處之一是,它能夠創建即時的反饋回路。特別是在滾動部署的過程中,當一臺或多臺主機部署出現問題時,實時監控數據可以立即被用于做出暫停或啟動部署回滾的決策。這種快速回撤往往就決定了是會發生較小的故障,還是大型災難。尤其是對于某些海量用戶級別的應用而言,即使1分鐘的停機時間,也可能導致大量的錯誤和損失。
- 資源和性能監控:在部署新功能或變更現有服務時,我們往往會在無形中引入涉及到性能、資源利用率、以及相關成本的風險。而通過實時監控,團隊可以立即獲悉變更給系統性能和資源利用率造成的影響,進而采取任何必要的即時補救措施,以確保用戶繼續獲得最佳的使用體驗。
- 主動解決問題:通過將Datadog直接集成到部署流程中,而不是在最終用戶受到影響后才對問題做出反應,項目團隊可以更主動的方式解決問題,并防止潛在的問題演變成重大故障。這種積極主動的方法,不但可以增加系統的整體正常運行時間,并提高部署發布的穩定性,而且能夠保障用戶持續的滿意度。
在部署中實施實時監控的過程
一旦部署工具被觸發,底層的腳本就會開始執行。對此,我們需要根據應用的各項實際需求,預先確定執行監控檢查的理想位置,并發送一個或多個Datadog API請求,去查詢相關指標、監控過程數據、或其他有助于我們確定部署和整個應用健康狀況的信息。
據此,我們需要在腳本中添加邏輯,以便解析來自Datadog的API響應,并做出是否轉入下一組部署的適當決策。例如,如果我們發現錯誤過多、且監控頻繁報障的話,那么我們就應該相應地對這些收集到的信息予以解析,以決定是否中止部署,不再繼續下去,從而減少潛在的生產事故的影響半徑。下圖展示了這個典型的工作流程。當然,具體各個階段可以根據您的應用的實際需求進行調整。
具有集成監控的部署流
利用Datadog及其API接口進行實時查詢
除了基礎監控功能,Datadog還提供了另一個增強DevOps團隊能力的關鍵優勢:其強大的API接口。它不僅是一項功能,更是一種變革性的工具。借助以編程方式查詢指標、以及各項跟蹤和日志等能力,項目團隊可以動態地將Datadog更深入地集成到其運營之中。據此,他們可以進行定制化的監控配置、自動警報設置、以及即時提取相關數據。而且,這種實時查詢不僅僅是為了獲取數據,更是為了給部署決策提供相關信息,完善應用性能,進而創建一個更具協同性的技術生態環境。通過利用Datadog的API,監控不再是一種被動的觀察,而是優化部署工作流程的主動驅動力。
同時,作為一種監控工具,Datadog可以密切關注目標系統的各項技術設置,檢查其性能和錯誤狀況。由于能夠提供及時的反饋,因此系統一旦出現問題,Datadog就會立即向運營團隊發出警報,以協助他們更快地解決問題,保持一切順利運行。在如下的實施方案中,我們通過獲取查詢監控器的數據,以判定是否有任何被觸發的警報。此外,我們還會查詢各項指標和其他類似的數據,以協助確定應用的健康狀況。
下圖展示便是一個從Datadog的API參考表中,獲取特定監視器詳細信息的示例。
對Datadog API端點的Curl請求示例
以Ansible自動化部署為例
當我們使用Datadog等工具深入研究復雜的監控時,了解支撐目標應用的部署機制是至關重要的。在此,我們將以Ansible為例。如前所述,它是一款以簡單性和強大功能為顯著優勢的開源自動化工具。
通常,Ansible會使用聲明式語言(Declarative Language)來定義系統配置,使其既易于人類閱讀,又能夠直接與各種平臺和工具相集成。在部署方面,Ansible可以確保一致性和可重復的應用部署,從而降低與手動流程相關的各類風險。如果與Datadog等實時監控解決方案配合使用,Ansible不僅可以自動化部署應用,而且能夠確保它們在部署之后以最佳的狀態運行。可以說,這種自動化部署與實時監控之間的協同,構建出了一個強大的、反應靈敏的、容錯性高的部署生態系統。
下圖的代碼片段展示了在Ansible中,Datadog監控器如何實現以“deployment_priority: blocker”為標簽,進行查詢的示例。
在Ansible中實現的監控查詢
在此基礎上,我們需要解析從Datadog返回的所有此類監控的狀態,以決定是終止監控,還是繼續到下一臺主機或下一組部署。
迭代監視器的解析和決策的制定
至此,我們已完成了在部署過程中實施實時監控,并具備了對Datadog的監控信息予以解析,進而在部署過程中及時做出明智的決策的能力。
小結
在上文的探討中,我們既利用了強大的部署工具Ansible所提供的一致、可靠的部署的能力;又結合了Datadog等平臺的細粒度實時監控能力,提高了項目部署的運營效率和可靠性。隨著技術領域的不斷發展,Ansible和Datadog等工具充分證明了集成式智能DevOps的實踐潛力。
無論您是經驗豐富的DevOps專業人士,還是剛剛涉足本領域的“小白”,了解并利用這種協同,都將有利于打造一個面向未來、具有高自愈能力的技術生態系統。
譯者介紹
陳峻(Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗。
原文標題:Implementing Real-Time Datadog Monitoring in Deployments,作者:Prithvish Kovelamudi