AI-powered, full stack, automated performance management
問題生命周期
性能異常如何發(fā)現(xiàn)儡嘶?它會影響到哪些應(yīng)用或服務(wù)俩滥?Dynatrace 采用基準(zhǔn)性能偏差比較法來發(fā)現(xiàn)異常瑰剃,并通過依賴關(guān)系進(jìn)行關(guān)聯(lián)。下面通過一個基礎(chǔ)設(shè)施層的性能異常導(dǎo)致的故障案例來深入了解敲才。
1. Dynatrace 檢測到一個基礎(chǔ)設(shè)施層的性能異常孤钦,此時,創(chuàng)建一個新的問題以便追溯肴茄,并發(fā)送告警通知晌畅。
2. 幾分鐘后,這個基礎(chǔ)設(shè)施的問題導(dǎo)致某個應(yīng)用服務(wù)的性能出現(xiàn)下降寡痰。
3. 其他應(yīng)用服務(wù)的性能也相繼出現(xiàn)問題抗楔。此時,單個的基礎(chǔ)設(shè)施問題逐漸演變成了一系列的服務(wù)級問題氓癌,并且前者是后者的根因谓谦。
4. 最終,服務(wù)級問題開始影響終端用戶與應(yīng)用的交互體驗贪婉。在問題生命周期中反粥,此時轉(zhuǎn)化為一個應(yīng)用級問題,它包含一個基礎(chǔ)設(shè)施層的根因以及若干個服務(wù)級根因穗慕。
5. Dynatrace 感知整個環(huán)境的所有依賴關(guān)系沸伏,因此,可以將影響客戶體驗的性能異常與基礎(chǔ)設(shè)施的問題進(jìn)行關(guān)聯(lián)粗合,從而快速解決問題郑气。 您的環(huán)境中出現(xiàn)的每個問題都可以使用上述根因分析方法進(jìn)行定位幅垮,只需在問題詳情頁面點擊根因分析,就能看到 Dynatrace 對該問題執(zhí)行的分析結(jié)果尾组。
問題檢測
Dynatrace 提供了一種全方位的應(yīng)用程序運(yùn)行狀態(tài)監(jiān)控忙芒,它從多個角度持續(xù)監(jiān)控你的應(yīng)用程序。
應(yīng)用程序(終端用戶)- 經(jīng)驗告訴我們讳侨,當(dāng)終端用戶訪問你的應(yīng)用程序時呵萨,最關(guān)注響應(yīng)時間與整體性能。
服務(wù)- 也就是你的應(yīng)用程序提供給客戶的各種服務(wù)跨跨,包括 Web 請求潮峦,數(shù)據(jù)庫請求和服務(wù)間通信。
基礎(chǔ)設(shè)施- 這一層包括為您的客戶提供服務(wù)的物理/虛擬機(jī)勇婴。具體可細(xì)分為服務(wù)器忱嘹,數(shù)據(jù)庫,主機(jī)和進(jìn)程等耕渴。
如何關(guān)聯(lián)各層間的異常事件拘悦?
Dynatrace 了解應(yīng)用程序棧中所有層與組件之間的依賴關(guān)系,比如應(yīng)用程序調(diào)用了哪些服務(wù)萨螺?該服務(wù)運(yùn)行在哪些主機(jī)的哪些進(jìn)程上窄做?
分析底層依賴關(guān)系
點擊問題詳情頁面的可視化解析路徑,可以查看導(dǎo)致問題發(fā)生的底層服務(wù)或基礎(chǔ)設(shè)施異常事件分析慰技。可視化解析路徑顯示了您的應(yīng)用程序與支持它的底層服務(wù)和基礎(chǔ)設(shè)施組件之間的依賴關(guān)系组砚。
每一個可視化解析路徑都包含一個問題演進(jìn)查看器吻商,可以使用它來回放問題隨時間的演變情況。在這里糟红,我們可以非常詳細(xì)地看到問題發(fā)生期間艾帐,應(yīng)用依賴關(guān)系的交互與執(zhí)行情況。比如盆偿,你可以看到哪些服務(wù)調(diào)用失敗或基礎(chǔ)設(shè)施健康問題導(dǎo)致了其他服務(wù)調(diào)用失敗柒爸,并最終導(dǎo)致影響客戶體驗的應(yīng)用異常。
為什么要關(guān)注最慢的 10% 的響應(yīng)時間事扭?
雖然大部分 APM 工具專注于平均響應(yīng)時間捎稚,但 Dynatrace 特別強(qiáng)調(diào)最慢的 10% 的響應(yīng)時間,這是因為,如果你只知道大多數(shù)用戶的平均(中位數(shù)或平均值)響應(yīng)時間今野,你可能就會遺漏一個嚴(yán)重問題:某些用戶正在遭受無法容忍的性能問題葡公。
比如一個典型的搜索服務(wù),它會執(zhí)行一些數(shù)據(jù)庫調(diào)用条霜,這些數(shù)據(jù)庫調(diào)用的響應(yīng)時間可能會有很大差異催什,這取決于它們的數(shù)據(jù)是走緩存 or 數(shù)據(jù)庫?中位數(shù)度量方法在這種場景也難以勝任宰睡,盡管你的大多數(shù)用戶(走緩存)的響應(yīng)時間還不錯蒲凶,但少數(shù)用戶(走數(shù)據(jù)庫)將遭受無法容忍的性能問題,因此拆内,將監(jiān)控的重點放在最慢的 10% 的客戶上旋圆,可以解決這類問題。
如何有效發(fā)揮時間相關(guān)性矛纹?
單看時間相關(guān)性臂聋,難以有效地識別大部分性能問題的根因。因此或南,Dynatrace 更強(qiáng)調(diào)事件序列孩等。
首先,讓我們來看一個簡單的時間相關(guān)性的例子采够,服務(wù) A 調(diào)用了服務(wù) B肄方。在問題演變過程中,第一個發(fā)生的異常事件是服務(wù) B 性能下降蹬癌,然后权她,出現(xiàn)了服務(wù) A 性能下降的事件。在這個案例中逝薪,時間相關(guān)性似乎很好地表明了問題的根因:服務(wù) B 的性能下降導(dǎo)致了服務(wù) A 的性能下降隅要,但這只是一個簡單的場景。
如果問題演變序列中的事件更加細(xì)化董济,交叉更緊密怎么辦步清?如果示例中的服務(wù) A 有一段很長的性能問題歷史怎么辦?在這些場景下虏肾,就無法斷定服務(wù) A 的問題是由服務(wù) B 導(dǎo)致的廓啊,可能服務(wù) A 只是周期性歷史問題的又一次呈現(xiàn)。這些細(xì)微之處導(dǎo)致了單獨的時間相關(guān)性無法有效確定問題的根因封豪。
問題與事件
問題
Dynatrace 的問題包括 AI 驅(qū)動分析谴轮,環(huán)境上下文,根因分析以及細(xì)節(jié)信息吹埠。問題能夠自我表述第步,比如性能下降疮装,功能不當(dāng)和服務(wù)不可用等。一個問題可能是單個事件或多個事件的結(jié)果雌续。
事件
Dynatrace 中的事件是指手動執(zhí)行操作斩个,比如機(jī)器重啟,系統(tǒng)關(guān)機(jī)驯杜,進(jìn)程重啟或代碼部署等受啥。在服務(wù)器上執(zhí)行的任何手動操作都是一個事件,即使它是一種周期性調(diào)度事件鸽心。
你可以在事件模塊找到每一個獨立主機(jī)滚局、虛擬機(jī)或服務(wù)的事件列表。
代碼部署事件
軟件代碼的部署也屬于一種事件顽频,這種部署事件有時會導(dǎo)致性能問題藤肢。Dynatrace 將跟蹤所有事件,并關(guān)聯(lián)所有發(fā)現(xiàn)的性能事件糯景。如果我們注意到新代碼部署或系統(tǒng)重啟后嘁圈,立即出現(xiàn)了性能下降,我們將通知你蟀淮,并提供部署前后的性能測量比較最住。這些信息可以直接發(fā)送給軟件開發(fā)者,以便快速修復(fù)怠惶。
問題如何提出與評估涨缚?
Dynatrace 通過指定閾值持續(xù)檢測服務(wù)水位,如果發(fā)現(xiàn)性能下降或錯誤率升高策治,就生成一個新的問題事件脓魏。采用5分鐘滑動窗口來評估響應(yīng)時間的劇烈上升,采用15分鐘滑動窗口來評估響應(yīng)時間的緩慢上升通惫。
檢測閾值
Dynatrace 采用三種類型的閾值:
動態(tài)基線:多維度的動態(tài)基線根據(jù)歷史數(shù)據(jù)自動生成檢測閾值茂翔,這類基線主要用于檢測響應(yīng)時間、錯誤率和負(fù)載等指標(biāo)履腋。
內(nèi)置的靜態(tài)閾值:Dynatrace 采用內(nèi)置的靜態(tài)閾值來檢測所有的基礎(chǔ)設(shè)施異常事件檩电,比如 CPU 過高、磁盤空間不足府树,或內(nèi)存不足等。
用戶自定義靜態(tài)閾值:你可以更改基礎(chǔ)設(shè)施的默認(rèn)檢測閾值料按,也可以將應(yīng)用程序和服務(wù)的動態(tài)基線切換為靜態(tài)閾值奄侠。
通過動態(tài)基線生成的異常事件與靜態(tài)閾值方法有較大差異,下面將提供兩種方法的詳細(xì)介紹载矿。
動態(tài)基線
Dynatrace 通過動態(tài)基線來自動學(xué)習(xí)應(yīng)用/服務(wù)的響應(yīng)時間垄潮、錯誤率和負(fù)載等指標(biāo)的檢測閾值烹卒。
針對響應(yīng)時間,Dynatrace 同時采集了中位數(shù)與90線(最慢的10%)的值弯洗,如果中位數(shù)和90線同時出現(xiàn)異常上升旅急,則提出一個減速(響應(yīng)慢)的事件。
應(yīng)用基線用來預(yù)測下述4個維度的指標(biāo):
用戶行為:應(yīng)用程序的用戶操作牡整,例如登錄藐吮、注銷等。
地理位置:將用戶會話來源的地理位置進(jìn)行層次化組織逃贝,可以分為大陸谣辞、國家、地區(qū)和城市沐扳。
瀏覽器:瀏覽器層次劃分泥从,先區(qū)分類型,如 Firefox 和 Chrome沪摄,在同一類型下再區(qū)分版本號
操作系統(tǒng):操作系統(tǒng)層次劃分躯嫉,先區(qū)分類型,例如 Windows 和 Linux 杨拐,同一類型下再區(qū)分版本號
服務(wù)基線用戶預(yù)測服務(wù)方法維度指標(biāo)
服務(wù)方法:一個服務(wù)的某個方法祈餐,如 getBookingPage 或 getReportPage
在數(shù)據(jù)庫服務(wù)中,不同的服務(wù)方法表示不同的 SQL 語句戏阅,比如 (call verify_location(?) select booking0_.id from Booking booking0_ where booking0_.user_name<>?)
針對預(yù)定義的組別昼弟、靜態(tài)請求和動態(tài)請求可以計算額外的基線閾值,比如分別計算預(yù)定義組別 insert奕筐、update 和 select 多維組合數(shù)據(jù)會分別計算所屬組合的動態(tài)基線舱痘,下面這個案例描述了來自紐約和北京的用戶指標(biāo)閾值:
bash `USA - New York – Chrome – Reference response time : 2sek, error rate: 0%, load: 2 actions/min`?
bash `China – Bejing - QQ Browser - Reference response time : 4sek, error rate: 1%, load: 1 actions/min
Dynatrace 通過 OneAgent 來收集數(shù)據(jù),并且需要兩個小時的歷史數(shù)據(jù)以計算動態(tài)基線离赫,因此芭逝,你可以在你的應(yīng)用接入 OneAgent 兩小時后,開始添加多維數(shù)據(jù)集進(jìn)行檢測渊胸。Dynatrace 每天都會重新計算一次基線旬盯,以便自適應(yīng)流量的變化。
為了避免過度報警并降低通知噪音翎猛,自動異常檢測模式不會對波動應(yīng)用或服務(wù)(每周運(yùn)行時間小于20%)發(fā)送通知胖翰。
Dynatrace 的流量異常檢測基于如下假設(shè):大多數(shù)業(yè)務(wù)流量遵循可預(yù)測的天/周流量模式。流量報警會在一周后開始啟用切厘,因為流量基線需要一周的歷史數(shù)據(jù)來進(jìn)行學(xué)習(xí)萨咳。
經(jīng)過一周的學(xué)習(xí)后,Dynatrace 可以預(yù)測下一周的流量疫稿,并將實際流量與預(yù)測值進(jìn)行比較培他,如果檢測到超出預(yù)測值合理統(tǒng)計區(qū)間的偏差點鹃两,Dynatrace 就會創(chuàng)建一個Unexpected low traffic 或 Unexpected high traffic 問題。
動態(tài)基線的優(yōu)點:
開箱即用舀凛,無需手動配置閾值
無需手動設(shè)置地理位置俊扳,瀏覽器等特定閾值
自適應(yīng)流量模型的變化
動態(tài)基線的缺點:
需要經(jīng)歷一段學(xué)習(xí)期,來學(xué)習(xí)正常流量模式
總結(jié)
基線通過 5分鐘和15分鐘的滑動時間窗口進(jìn)行評估
自動檢測響應(yīng)時間猛遍、錯誤率和負(fù)載的參考值
應(yīng)用有4個維度組合馋记,服務(wù)只有一個維度
多維數(shù)據(jù)集的基線計算需要在初次延遲兩小時,之后每天會自動執(zhí)行
應(yīng)用或服務(wù)每周至少要運(yùn)行20%的時間螃壤,才會對其發(fā)送報警
應(yīng)用至少需要運(yùn)行一周抗果,才會進(jìn)行流量模型的檢測與報警
減速(響應(yīng)慢)事件需要同時檢測中位值與90線
靜態(tài)閾值
Dynatrace 的基礎(chǔ)設(shè)施監(jiān)控基于大量的內(nèi)置、預(yù)定義靜態(tài)閾值奸晴。這些閾值涉及資源爭用冤馏,比如 CPU 尖峰,內(nèi)存和磁盤使用率等寄啼〈猓基線閾值和內(nèi)置閾值都支持用戶進(jìn)行覆蓋修改。
靜態(tài)閾值優(yōu)點:
無需學(xué)習(xí)期墩划,可以立即進(jìn)行告警
靜態(tài)閾值缺點:
需要大量的人工操作
為動態(tài)的服務(wù)設(shè)置固定閾值非常難
無法自適應(yīng)環(huán)境的變化
總結(jié)
基礎(chǔ)設(shè)施監(jiān)控基于許多指標(biāo)的預(yù)定義靜態(tài)閾值涕刚。
靜態(tài)閾值無需學(xué)習(xí)期,可以立即開啟檢測與告警