企業(yè)級IT應用運維監(jiān)控層次架構設計

企業(yè)級IT應用運維監(jiān)控架構的基本原理是通過收集、存儲、分析和展示各種監(jiān)控數(shù)據(jù),對企業(yè)IT系統(tǒng)進行全面的監(jiān)控和管理。其中,監(jiān)控數(shù)據(jù)包括系統(tǒng)、網(wǎng)絡、應用等各種指標數(shù)據(jù)、事件數(shù)據(jù)和日志數(shù)據(jù)等,可以通過各種數(shù)據(jù)采集器進行收集。

本文來自微信公眾號“twt企業(yè)IT社區(qū)”,【作者】朱琦,目前擔任某國內(nèi)著名餐飲連鎖企業(yè)運維負責人,從事過數(shù)據(jù)庫、大數(shù)據(jù)和容器集群的工作,對DevOps流程和工具方面有比較深刻的理解。

前言

企業(yè)基本都有自己的IT系統(tǒng),而每個IT系統(tǒng)都有自己的監(jiān)控系統(tǒng)。企業(yè)級的IT應用監(jiān)控架構是一種綜合性的解決方案,涉及到很多層級和相應的工具。隨著企業(yè)IT系統(tǒng)的規(guī)模和復雜程度的不斷增加,監(jiān)控和管理系統(tǒng)也面臨著越來越大的挑戰(zhàn)。大家有時在建立監(jiān)控時,不知道從何處入手;有時建立監(jiān)控系統(tǒng)后,發(fā)現(xiàn)很多的盲點無法監(jiān)控到。

監(jiān)控是IT運維系統(tǒng)中至關重要的一環(huán),所以針對以上問題,本文將分享IT應用運維監(jiān)控的基本原理、通用監(jiān)控體系和應用場景、監(jiān)控平臺設計、智能監(jiān)控的實現(xiàn)方法等方面的內(nèi)容,以期對企業(yè)IT系統(tǒng)的監(jiān)控和管理提供一定的幫助。

1.監(jiān)控原理

企業(yè)級IT應用運維監(jiān)控架構的基本原理是通過收集、存儲、分析和展示各種監(jiān)控數(shù)據(jù),對企業(yè)IT系統(tǒng)進行全面的監(jiān)控和管理。其中,監(jiān)控數(shù)據(jù)包括系統(tǒng)、網(wǎng)絡、應用等各種指標數(shù)據(jù)、事件數(shù)據(jù)和日志數(shù)據(jù)等,可以通過各種數(shù)據(jù)采集器進行收集。

收集到的數(shù)據(jù)可以存儲在分布式數(shù)據(jù)庫、NoSQL數(shù)據(jù)庫或者數(shù)據(jù)倉庫等存儲系統(tǒng)中,并通過數(shù)據(jù)分析和處理,將其轉(zhuǎn)化為可視化的監(jiān)控指標,并通過儀表盤、圖表、報表等形式進行展示。同時,還可以通過警報系統(tǒng)對監(jiān)控數(shù)據(jù)進行實時監(jiān)測和告警,以及通過自動化運維等手段對IT系統(tǒng)進行自動化管理和優(yōu)化。

2.監(jiān)控層次

一般來說,有IT系統(tǒng)的地方都必須有監(jiān)控,不同企業(yè)IT系統(tǒng)分布不一樣。有的企業(yè)有大量的邊緣系統(tǒng),比如:電腦,工控機等;有的企業(yè)有自己的IDC機房,而自己的IT系統(tǒng)建立在IDC機房內(nèi);有的企業(yè)把自己的IT系統(tǒng)建立在公有云上;又有的企業(yè)建立的混合云架構,IDC機房和公有云兼而有之。

IT監(jiān)控系統(tǒng)是依附在之上的,對于邊緣系統(tǒng),有類似于IOT的物聯(lián)網(wǎng)監(jiān)控系統(tǒng);IDC機房有網(wǎng)絡設備的監(jiān)控系統(tǒng)(這一般由網(wǎng)絡供應商提供);公有云上的系統(tǒng)由云商提供完整的監(jiān)控系統(tǒng),比如:AWS上的cloudwatch;如果有混合云的架構,那就需要由監(jiān)控系統(tǒng)建設團隊把云上云下的監(jiān)控系統(tǒng)做融合提供統(tǒng)一的監(jiān)控。

以上的這些監(jiān)控是從系統(tǒng)角度進行分類的,做的是系統(tǒng)監(jiān)控,而本文討論的是,如何從應用運維的角度來進行層次劃分。

2.1 APIs監(jiān)控

APIs(應用程序編程接口)監(jiān)控,又稱為前端監(jiān)控,是指對APIs的使用情況、性能、安全性等進行實時監(jiān)控和管理的過程。通常包括:

A.使用情況監(jiān)控:監(jiān)控APIs的調(diào)用情況、使用頻率、錯誤率等,以便了解APIs的使用情況和流量狀況。

B.性能監(jiān)控:監(jiān)控APIs的響應時間、延遲、吞吐量等性能指標,以便及時發(fā)現(xiàn)APIs的性能問題和瓶頸。

C.安全監(jiān)控:監(jiān)控APIs的安全性,包括身份驗證、授權、訪問控制等,以保護APIs免受安全威脅。

D.錯誤監(jiān)控:監(jiān)控APIs的錯誤情況,包括錯誤類型、錯誤代碼、錯誤頻率等,以便及時發(fā)現(xiàn)和解決APIs的錯誤問題。

為了實現(xiàn)APIs監(jiān)控,通常需要使用一些專門的工具和平臺:

A.APIs監(jiān)控工具:如:Pingdom、Datadog,通過收集、分析和可視化APIs的使用情況、性能、安全性和錯誤情況,以幫助開發(fā)人員和運維人員監(jiān)控和管理APIs。

B.APIs管理平臺:如Tingyun、Instana、Runscope,通過管理APIs的生命周期、版本控制、文檔生成等,以確保APIs的穩(wěn)定性和可靠性。

C.日志管理工具:如Splunk、ELK,通過收集、分析和可視化APIs的日志信息,以幫助用戶快速發(fā)現(xiàn)和解決APIs的問題和錯誤。

1.png

圖一Network Request監(jiān)控

1.png

圖二Instana APIS監(jiān)控

2.2應用層監(jiān)控

應用層監(jiān)控是指對應用程序的性能、可用性、安全性等進行實時監(jiān)控和管理的過程。通常包括:

A.應用性能監(jiān)控:監(jiān)控應用程序的性能指標,包括請求響應時間、吞吐量、錯誤率飽和率等黃金四指標,以便及時發(fā)現(xiàn)應用程序的性能問題和瓶頸。

B.可用性監(jiān)控:監(jiān)控應用程序的可用性,包括應用程序的運行狀態(tài)、訪問次數(shù)、錯誤率等,以保證應用程序的正常運行和可用性。

C.安全監(jiān)控:監(jiān)控應用程序的安全性,包括應用程序的防火墻、入侵檢測、安全事件等,以保護應用程序免受安全威脅,一般這是由安全團隊負責,運維人員較少涉及。

D.日志管理:收集、分析和可視化應用程序的日志信息,以幫助用戶快速發(fā)現(xiàn)和解決應用程序問題和異常情況。

為了實現(xiàn)應用層監(jiān)控,相對應的工具和平臺:

A.應用性能監(jiān)控工具:通過監(jiān)控應用程序的性能指標,以幫助用戶快速發(fā)現(xiàn)應用程序的性能問題和瓶頸。

B.可用性監(jiān)控工具:通過監(jiān)控應用程序的運行狀態(tài)和訪問次數(shù),以保證應用程序的正常運行和可用性。

C.安全監(jiān)控工具:和APIs的監(jiān)控類似,主要由漏洞掃描工具,入侵檢測系統(tǒng)等工具構成,比如應用新上線的代碼中使用了一個第三方的工具,此工具有后門漏洞,就會被監(jiān)控到。

D.日志管理工具:通過收集、分析和可視化應用程序的日志信息,以幫助用戶快速發(fā)現(xiàn)和解決應用程序問題和異常情況。

應用性能監(jiān)控工具和可用性監(jiān)控工具,Zabbix在服務器時代是不二之選,但是隨著kubernetes容器時代的到來,Zabbix漸漸淡出了,目前都以Exporter+Promethesu+Grafana,其中,Prometheus+Grafana就是為容器環(huán)境而生的。Exporter主要把關鍵的指標數(shù)據(jù)以拋出,然后有prometheus采集并加入時序數(shù)據(jù)庫中,然后由Grafana展現(xiàn)。

1.png

圖三Grafana JVM應用線程數(shù)監(jiān)控

2.3資源層監(jiān)控

資源層監(jiān)控是指對計算機系統(tǒng)的各種資源(如CPU、內(nèi)存、磁盤、網(wǎng)絡等)進行實時監(jiān)控和管理的過程,這個不僅包括服務器,還包括容器,而對于容器集群,由于有了水平擴展的資源調(diào)度,所以還包括容器的數(shù)量及其狀態(tài)的監(jiān)控。

A.CPU監(jiān)控:監(jiān)控CPU的使用率、負載、溫度等指標,以便及時發(fā)現(xiàn)CPU的問題和瓶頸。容器環(huán)境也就是容器的CPU reqirement和limit值。

B.內(nèi)存監(jiān)控:監(jiān)控內(nèi)存的使用率、空閑率、交換空間等指標,以保證系統(tǒng)具有足夠的內(nèi)存資源。容器環(huán)境也就是內(nèi)存的CPU reqirement和limit值。

C.磁盤監(jiān)控:監(jiān)控磁盤的空間、I/O使用率、讀寫速度等指標,以保證系統(tǒng)磁盤的穩(wěn)定性和可靠性。容器環(huán)境也就是持久化存儲的空間監(jiān)控。

D.網(wǎng)絡監(jiān)控:監(jiān)控網(wǎng)絡的帶寬、吞吐量、延遲等指標,以保證網(wǎng)絡的性能和可靠性。容器環(huán)境也就是進出對應容器組的網(wǎng)絡總流量。

為了實現(xiàn)資源層監(jiān)控,通常需要使用一些工具和平臺,過去也是Zabbix為主,現(xiàn)在容器環(huán)境的不二之選就是Prometheus+Grafana,這是因為kubernetes內(nèi)Cadvise會主動提供關于容器的性能和狀態(tài)的指標。

對于服務器,我們可以利用Node Exporter+Prometheus+Grafana在Grafana中展示,當然,也可以用Cloudwatch插件在Grafana中監(jiān)控。

1.png

圖四Grafana Pod CPU和memory監(jiān)控

1.png

圖五Grafana Pods number監(jiān)控

2.4鏈路層監(jiān)控

鏈路層監(jiān)控是指對分布式系統(tǒng)中各個組件、模塊之間的交互過程進行實時監(jiān)控和管理的過程。鏈路層監(jiān)控可以幫助用戶快速發(fā)現(xiàn)和解決應用程序的問題和瓶頸,提高應用程序的可靠性和性能。

主要的開源工具就是skywalking,商業(yè)化工具有dynatrace和AppDynamics等,一般價格比較昂貴。這些工具一般有以下特點:

A.鏈路追蹤:這些工具可以對應用程序請求的鏈路進行追蹤,并記錄請求的每個環(huán)節(jié),包括請求的來源、目的、處理過程等。

B.性能監(jiān)控:這些工具可以對請求的每個環(huán)節(jié)進行性能監(jiān)控,包括請求響應時間、請求吞吐量、請求錯誤率等指標,以幫助用戶快速發(fā)現(xiàn)和解決應用程序的性能問題和瓶頸。

C.依賴分析:這些工具可以分析應用程序的依賴關系,包括服務之間的依賴、數(shù)據(jù)庫之間的依賴等,并對依賴關系進行監(jiān)控和分析。

D.飛行記錄:這些工具可以將請求的鏈路信息進行記錄和存儲,以便后續(xù)的分析和查詢,同時也支持對請求鏈路的回放和重放,以幫助用戶深入分析和定位問題。

1.png

圖六Skywalking鏈路追蹤監(jiān)控

1.png

圖七Skywalking應用依賴拓撲展示

2.5后端監(jiān)控

后端監(jiān)控是指對應用程序后端(如數(shù)據(jù)庫、緩存、消息隊列等)進行實時監(jiān)控和管理的過程。數(shù)據(jù)庫監(jiān)控是后端監(jiān)控中的一個重要部分,主要是對數(shù)據(jù)庫的性能、可用性和安全性進行監(jiān)控和管理,以保證應用程序的正常運行和穩(wěn)定性。

后端監(jiān)控的也包括,性能監(jiān)控、可用性監(jiān)控、安全監(jiān)控、日志監(jiān)控等同應用層監(jiān)控類似的監(jiān)控,除此之外,還包括特有的監(jiān)控選項,如對于數(shù)據(jù)庫而言,還包括:

A.連接數(shù)

B.操作數(shù)

C.緩存命中率

D.鎖數(shù)

E.復制集

F.備份

在公有云大行其道的今天,越來越多的企業(yè)把后端(數(shù)據(jù)庫,redis等)遷移到了公有云端,這些指標公有云都會提供,我們所要做的是把這些指標從公有云上引入到本地的Grafana上展示,比如:Grafana上有aws的cloudwatch插件,可以通過cloudwatch在本地grafana展示后端指標。

1.png

圖八Grafana MongoDB重要指標監(jiān)控

2.6業(yè)務監(jiān)控

業(yè)務監(jiān)控是指對應用程序的業(yè)務功能進行實時監(jiān)控和管理的過程,主要關注應用程序的業(yè)務流程和業(yè)務指標,以保證應用程序的業(yè)務功能的正常運行和業(yè)務價值的實現(xiàn)。通常包括:

A.業(yè)務流程監(jiān)控:對應用程序的業(yè)務流程進行監(jiān)控和管理,包括業(yè)務流程的狀態(tài)、業(yè)務流程的耗時、業(yè)務流程的成功率等。通過業(yè)務流程監(jiān)控,可以及時發(fā)現(xiàn)和解決業(yè)務流程的問題和瓶頸,提高業(yè)務流程的效率和可靠性。

B.關鍵業(yè)務指標監(jiān)控:對應用程序的關鍵業(yè)務指標進行監(jiān)控和管理,包括業(yè)務量、轉(zhuǎn)化率、用戶滿意度等。通過關鍵業(yè)務指標監(jiān)控,可以及時發(fā)現(xiàn)和分析業(yè)務指標的異常情況,提高業(yè)務指標的穩(wěn)定性和可靠性。

C.用戶行為監(jiān)控:對應用程序用戶的行為進行監(jiān)控和管理,包括用戶的訪問量、訪問路徑、用戶行為的轉(zhuǎn)化率等。通過用戶行為監(jiān)控,可以及時了解用戶的需求和行為模式,從而優(yōu)化應用程序的用戶體驗和業(yè)務流程。

業(yè)務監(jiān)控通常要和日志監(jiān)控和后端監(jiān)控結合,要從后者中取得業(yè)務相關的數(shù)據(jù)用于展示:

1.png

圖九Grafana業(yè)務監(jiān)控

2.7運維能力的監(jiān)控

SLA(Service Level Agreement)、SLO(Service Level Objective)和SLI(Service Level Indicator)是衡量運維能力指標的重要指標。SLA是一種衡量客戶服務質(zhì)量的協(xié)議,SLO和SLO是一種衡量所運維的系統(tǒng)可靠性是否達標的指標。這方面的監(jiān)控一般需要設立Error Budget,也就是在一定時間內(nèi)(通常為2周)偏離目標的數(shù)值。一般包括:

A.如果是乙方運維,和甲方在協(xié)議中約定了不同等級的故障響應時間的SLA,可以加入對SLA的Error budget監(jiān)控。

B.如果是甲方運維,對自身進行KPI考核的,可以加入對主要性能或可用性指標的Error budget監(jiān)控。

這樣做的目的,是控制好運維的節(jié)奏,如果Error Budget還很多,那么我們就可以對生產(chǎn)系統(tǒng)做比較激進的操作;反之,Error Budget偏少或在短期內(nèi)已經(jīng)消耗殆盡或已經(jīng)超出了,那么就是減少運維操作,以較少發(fā)生更多故障的可能。

3.監(jiān)控大盤與合成監(jiān)控指標

如此之多的監(jiān)控項一直被詬病,這看一遍都費力,怎么能做到實時監(jiān)控呢?

這個問題的解決就要依賴監(jiān)控大盤了,目前市場上沒有統(tǒng)一的監(jiān)控大盤的工具軟件,畢竟每個公司的業(yè)務太不相同了,而且監(jiān)控的投入也不一樣,所以要生成監(jiān)控大盤的軟件過于復雜。目前基本上都是每家企業(yè)自行開發(fā)的。

1.png

圖十監(jiān)控大盤挖掘設計

既然,監(jiān)控指標太多了,我們就要對其合成,于是合成監(jiān)控指標就誕生了。

合成監(jiān)控指標是指通過對多個監(jiān)控指標進行組合和計算得到的綜合性指標,用于判斷應用程序的整體健康狀況和性能狀況。合成監(jiān)控指標通常是由多個單獨的指標組合而成,可以反映出應用程序的整體性能和健康狀況。

合成監(jiān)控指標的計算方式可以根據(jù)具體情況而定,常見的計算方式包括以下幾種:

A.平均值:對多個指標的平均值進行計算,如請求響應時間的平均值、服務器負載的平均值等。

B.加權平均值:對多個指標的加權平均值進行計算,根據(jù)不同指標的重要性為其分配權重,如請求響應時間和服務器負載的加權平均值。

C.百分位數(shù):對多個指標的百分位數(shù)進行計算,反映出指標的分布情況和極端值情況,如請求響應時間的95th百分位數(shù)。

D.綜合指數(shù):通過對多個指標進行加權和,生成一個綜合指數(shù),用于衡量應用程序的整體性能和健康狀況,如應用程序健康得分、性能指數(shù)等。

合成監(jiān)控指標可以幫助用戶更全面地了解應用程序的性能和健康狀況,更快速地發(fā)現(xiàn)和解決問題。

比如在Spring Boot中,提供了一個合成監(jiān)控指--JVM的健康度;如果JVM單個指標不正常,但JVM仍然可用,健康度指標還是正常的,但如果JVM連接數(shù)據(jù)庫出問題,健康度指標就直接報錯。效仿這個指標,我們可以對企業(yè)內(nèi)的其他應用創(chuàng)建出自己的健康度合成指標。

在Grafana中,我們可以利用功能插件大致設計出類似的監(jiān)控大盤,并使用PQL語句編寫合成監(jiān)控指標。盡管沒有自行開發(fā)的下鉆功能,但也是可以在感知系統(tǒng)整體的基礎上,避免過多的指標監(jiān)控。

使用grafana的statusmap插件,可以把每個系統(tǒng)的合成監(jiān)控指標集中顯示。

1.png

圖十一Grafana集中展示合成監(jiān)控指標

4.智能監(jiān)控告警

智能監(jiān)控告警是指利用人工智能和機器學習技術對應用程序進行智能化監(jiān)控和管理的過程。智能監(jiān)控可以幫助用戶更快速、更準確地發(fā)現(xiàn)和解決問題,提高應用程序的穩(wěn)定性和可靠性。

A.自動識別異常:不單獨依賴于閾值進行告警,利用機器學習和統(tǒng)計分析等技術,對應用程序的監(jiān)控指標進行分析和建模,自動識別異常情況并生成警報或自動觸發(fā)預設的響應動作。

B.自動調(diào)整配置:自動優(yōu)化應用程序參數(shù),利用機器學習和優(yōu)化算法等技術,自動調(diào)整應用程序的配置參數(shù),以優(yōu)化應用程序的性能和穩(wěn)定性。

C.預測性分析:提前預測可能的故障風險,利用機器學習和時間序列分析等技術,對應用程序的歷史數(shù)據(jù)進行分析和建模,預測未來的趨勢和可能出現(xiàn)的問題,并提前采取措施防范和解決問題。

D.減少重復告警:告警合并,利用機器學習對已經(jīng)產(chǎn)生的告警進行判斷,將不重要的告警級別降低或類似的告警合并,在告警中不觸發(fā)或少觸發(fā)。

E.減少告警抖動:告警收斂,監(jiān)控數(shù)據(jù)產(chǎn)生異常抖動時,監(jiān)控系統(tǒng)到底要不要告警一直以來是個問題,利用機器學習多維度的監(jiān)控數(shù)據(jù)、并用聚類算法進行分析,確定事件的關聯(lián)性,以減少多告警或告錯警的可能。

F.告警場景生成:貼靠用戶業(yè)務場景的告警,監(jiān)控數(shù)據(jù)進行極值分析和降噪處理,將和用戶業(yè)務相關的告警關聯(lián)起來,和CI項關聯(lián),構成場景。

1.png

圖十二告警場景

智能監(jiān)控告警并不是推翻原有的監(jiān)控告警系統(tǒng),它是原油監(jiān)控告警的延伸,為企業(yè)提供更好的監(jiān)控報警的體驗。

5.總結

企業(yè)級IT監(jiān)控是個很大的課題,其中應用運維的監(jiān)控,是其中的一個重要組成部分。作為運維人員或SRE,能夠時刻了解系統(tǒng),并得到系統(tǒng)的林林總總的信息,是工作中至關重要的一環(huán)。希望本文能給大家打開一扇門,為指明方向起到起到作用。

THEEND

最新評論(評論僅代表用戶觀點)

更多
暫無評論