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