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