愛奇藝微服務監控的探索與實踐
• 背景&初探:介紹建設微服務監控體系的背景,微服務監控體系建設初期的探索和嘗試。
• 演進&實踐:基於早期微服務監控探索和思考,落地微服務微服務監控體系的具體實踐。
• 總結&展望:總結微服務監控建設過程中的實踐和思考,以及工作規劃。
背景&初探
經過一年多的野蠻生長,資訊流團隊微服務發展快速,人均負責5個微服務以上,為了全面瞭解每個微服務執行情況,第一時間感知微服務異常,快速定位線上問題,提高運維效率,微服務建設初期我們嘗試了多種監控方案。
日誌監控
Hystrix監控
很長一段時間Hystrix是服務熔斷降級監控的代名詞,Spring Cloud應用中使用hystrix極致易用,從低成本埋點,到配置動態調整,再到原生的視覺化Dashboard,使用成本都很低。缺點是,指標資料原生沒有持久化,二次開發有一定成本。
撥測監控
對於面向使用者的服務,使用者所處網路,地域差異性很大,應用本身可用不代表使用者可以正常使用服務,這就需要從使用者角度,對服務可用性進行定時撥測。
鏈路監控
鏈路監控既可用於呼叫鏈路分析,快速定位具體問題,又可用於梳理服務拓撲結構和依賴合理性,是微服務監控必不可少的一環。
監控型別 | 接入固 定成本 | 接入邊 際成本 | 時效性 | 持久化 可追溯 | 適用場景 |
日誌監控 | 極低, 基於現有日誌收集系統 | 中,日誌埋點、解析有一定成本 | 秒級,鏈路長,有時延遲較大 | 日誌持久化,可檢視歷史 | 時效性要求不高的監控;具體問題排查 |
Hystrix 監控 | 低, 需要部署Hystrix Dashboard | 低,簡單配置 | 秒級 | 需二次開發 | 依賴介面實時監控;熔斷降級 |
Actuator 監控 | 低,需要部署Spring Boot Admin | 無,應用內建 | 秒級 | 需二次開發 | 單例項指標檢視 |
撥測監控 | 無,基於公司雲撥測服務 | 低,簡單配置 | 分鐘級,取決於撥測間隔 | 有報警歷史 | 面向使用者服務可用性定時撥測 |
鏈路監控 | 中,需要適配各種中介軟體 | 低,簡單配置 | 秒級,依賴日誌流 | 可以 | 跨系統呼叫鏈路分析 |
演進&實踐
如上所述,我們在微服務監控建設初期嘗試了多種監控方案,實現了不同場景下的監控需求,也遇到了新的問題。概括起來,有以下幾個:
• 缺少對監控項的統一認知和定義
• 重複性埋點配置工作,監控成本高
• 各種監控方案簡單組合,視覺化分散,報警不統一
比如,每新增一個監控指標,需要把接入,埋點,視覺化,報警,從頭來一遍,隨著微服務和指標增加,這種重複性工作嚴重製約了監控體系的推廣落地。特別是metrics監控,指標繁雜,維度多變,應用廣泛。
監控模型
指標 | 說明 |
QPS | 系統每秒處理業務請求量,反應系統的容量 |
TP指標 | TP99、TP95、MEAN等,反應的是系統的時效性 |
錯誤量 | http錯誤響應碼的次數,方法呼叫異常次數等,反應系統的錯誤面 |
資源使用率 | CPU利用率、記憶體利用率、磁碟利用率等,反應系統資源利用面 |
維度 | 說明 |
service_name | 服務名,例:Order |
dc | 機房,例:bjdx |
instance | 服務例項,例:1.1.1.1:2222 |
url | 介面API,例:/order/list |
method | 方法簽名 |
status | http 響應碼 |
定製擴充套件
自動接入&埋點
前期我們嘗試了多種監控方案,發現能夠順利推廣落地的,都有一個共同點,就是服務接入監控的成本很低。最好是不要求應用做任何改動,就可以自動接入,享受監控系統帶來的便利。為此我們做了以下工作:
• 每個服務引入sdk自動完成通用指標(Http請求,JVM指標等)採集,並暴露指標拉取端點
• 每個服務自動註冊到Eureka註冊中心
• Eureka增加Adapter,提供監控系統可識別的介面方法
• 監控系統從註冊中心,自動發現要監控的服務例項列表
• 監控系統定期從服務指標端點拉取監控資料
很多情況下,需要對某些業務方法耗時進行監控,傳統的埋點方式是在方法入口和出口新增監控程式碼,業務程式碼侵入高,開發成本高。
PUSH模式擴充套件
如前所述,Prometheus是用PULL模式獲取應用埋點資料,但是有的場景下PULL模式並不適用(比如短生命週期的任務),因此我們基於Prometheus提供的Pushgateway元件,實現PUSH模式獲取監控埋點資料。
集中視覺化
不同的監控系統,往往會提供不同的視覺化方案。分散的視覺化,不利於監控資料的集中展示和全域性問題分析。我們使用Grafana實現所有微服務,所有指標的集中視覺化。
• 維度篩選模組
• JVM和系統指標模組
• 入口流量機房分佈&狀態碼&QPS&響應延時模組
• 方法監控指標模組
統一報警
以上所述,愛奇藝資訊流監控整體方案總結如下。
監控物件既包括常駐程式微服務,也包括短生命週期的非常駐程式。
指標獲取方式既可以基於Prometheus實時拉取,也可以基於Venus日誌收集,前者用於指標實時獲取,保證監控報警時效性,後者記錄詳細日誌,用於具體問題排查和鏈路分析。
監控維度從4個維度監控應用:
Metrics監控宏觀上檢測系統QPS,響應耗時,錯誤率和資源利用率;
撥測監控從使用者角度監控服務可用性;
鏈路監控提供單個請求完整生命週期的跟蹤路徑,專門應對微服務架構帶來的分散式呼叫複雜性;
日誌查詢提供應用監控最精細化的資訊,用於具體問題排障。
集中管理,集中視覺化和統一報警管理,在最上面一層,便於排查問題時全面快速獲取應用所有監控報警資訊。另外,微服務監控的統一認知和必要的流程規範,貫穿監控系統落地始終。
總結&規劃
簡單有效。簡單有效是評測監控系統好壞的最高準則,埋點是否簡單甚至可省去,是否存在重複性的配置工作,都會影響監控方案能否最終落地推廣。好的監控方案一定是,沒有故障時,開發人員無感知,出現故障時,想看的指標都能拿到。
整合定製。業界和公司提供了固定場景下的監控框架和方案,基於這些成熟的方案和基礎設施,會大大減少監控系統建設投入;另一方面,必要的定製開發封裝,會進一步推動自動化監控落地。
集中管理。考慮監控指標的多樣性(系統,應用,業務等),不同監控方案關注點不同,指標埋點,收集,獲取未必僅用一套,但是視覺化應該儘可能集中,方便統一管理和全域性分析。
流程規範。微服務監控不是一個人或少數幾個人的事,也不應該微服務上線後才被關注,它需要每位微服務owner,從編碼,甚至設計階段,就要考慮監控指標和維度。為了減少監控帶來的額外負擔,保障落地效果,必要的流程規範和分享培訓是必要的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945252/viewspace-2704730/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 乾貨 | 愛奇藝全鏈路自動化監控平臺的探索與實踐
- 愛奇藝在 Dubbo 生態下的微服務架構實踐微服務架構
- 微服務監控探索微服務
- 學術派 | 愛奇藝深度語義表示學習的探索與實踐
- 愛奇藝在服務網格方向的落地實踐
- 愛奇藝RND框架技術探索——架構與實現框架架構
- 愛奇藝逗芽表情搜尋分析與實踐
- 愛奇藝的雲上資料治理實踐
- 金融系統IT運維監控的探索與實踐運維
- 愛奇藝混合雲內網DNS實踐內網DNS
- 愛奇藝內容中臺之Serverless應用與實踐Server
- 愛奇藝大資料實時分析平臺的建設與實踐大資料
- TDengine在浙商銀行微服務監控中的實踐微服務
- 愛奇藝個性化推薦排序實踐排序
- AI 在愛奇藝影片廣告中的探索AI
- 微服務監控微服務
- 愛奇藝元件化設計在會員業務的應用和實踐元件化
- 愛奇藝短視訊智慧標籤生成實踐
- AI 在愛奇藝視訊廣告中的探索AI
- Serverless與微服務探索(二)- SpringBoot專案部署實踐Server微服務Spring Boot
- 愛奇藝iOS深度實踐 | SiriKit詳解應用篇iOS
- 一站式入口服務|愛奇藝微服務平臺 API 閘道器實戰微服務API
- 愛奇藝深度學習雲平臺的實踐及優化深度學習優化
- Android篇 | 愛奇藝App啟動最佳化實踐分享AndroidAPP
- prometheus監控golang服務實踐PrometheusGolang
- 愛奇藝深度學習雲平臺的實踐及最佳化深度學習
- Skywalking微服務監控分析微服務
- RestCloud監控平臺,專為微服務API打造的實時監控中心RESTCloud微服務API
- 車澈的愛奇藝往事
- 企業架構管控的探索與實踐架構
- vivo 服務端監控架構設計與實踐服務端架構
- AI在愛奇藝商業廣告中的應用和探索AI
- 案例實踐丨基於SkyWalking全鏈路監控的微服務系統效能調優實踐篇微服務
- go-kit 微服務 服務監控 (prometheus 實現)Go微服務Prometheus
- 大規模 Spring Cloud 微服務無損上下線探索與實踐SpringCloud微服務
- Serverless與微服務探索(一)- 如何用serverless實踐Spring boot專案Server微服務Spring Boot
- Java微服務監控及與普羅米整合Java微服務
- 構建Spring Boot應用的微服務服務監控與告警Spring Boot微服務