《【蔡建宇】字節跳動 Model-Driven 思路在可觀測性系統中的設計和實踐.pdf》由會員分享,可在線閱讀,更多相關《【蔡建宇】字節跳動 Model-Driven 思路在可觀測性系統中的設計和實踐.pdf(47頁珍藏版)》請在三個皮匠報告上搜索。
1、字字節節跳跳動動MMo od de el l-D Dr ri iv ve en n思思路路在在可可觀觀測測系系統統中中的的設設計計和和實實踐踐蔡蔡建建宇宇字節跳動基礎架構研發工程師字節跳動基礎架構研發工程師蔡蔡建建宇宇contents字字節節內內的的服服務務端端可可觀觀測測系系統統存存在在的的問問題題和和挑挑戰戰01總總結結和和展展望望04MMo od de el l-D Dr ri iv ve en n思思路路在在可可觀觀測測系系統統的的實實踐踐過過程程(觀觀測測對對象象,指指標標建建模模,S SL LI I,排排障障歸歸因因)03MMo od de el l-D Dr ri iv ve e
2、n n思思路路介介紹紹字字節節內內的的服服務務端端可可觀觀測測系系統統存存在在的的問問題題和和挑挑戰戰微微服服務務部部署署、拓拓撲撲復復雜雜導導致致排排障障困困難難某個入口服務發現異常,可能是下游七八跳的底層服務導致容器,物理機,網絡,中間件,存儲組件等等同樣容易引發應用的問題,不確定會影響哪些業務大服務可用性,延時(P99)異常時,難定位到具體某個請求字字節節內內的的服服務務端端可可觀觀測測系系統統存存在在的的問問題題和和挑挑戰戰缺缺乏乏標標準準和和最最佳佳實實踐踐引引導導用戶最關心的SLI告警/大盤,常常是自建的自定義告警/自定義Grafana大盤,缺乏標準化和關聯缺乏至上而下的各個業務方
3、的統一的業務監控,和異常發現-根因定位-事故處理-問題歸檔的最佳實踐引導業務關鍵指標GrafanaArgos自定義告警自建監控看板缺缺少少關關聯聯缺缺少少業業務務S SL LI I微服務指標Argos 微服務告警各組件指標Argos 監控大盤字字節節內內的的服服務務端端可可觀觀測測系系統統存存在在的的問問題題和和挑挑戰戰可可觀觀測測平平臺臺內內部部相相對對復復雜雜對元數據嚴重依賴,但元數據分散在各個平臺中,一個新機房部署,往往要關注下游幾十個依賴監控數據是各個組件方生產的,標準存在不統一的現象開放能力,可擴展性相對弱服務端可觀測平臺(Argos)trace動態元信息消息隊列元信息cache元信
4、息DB元信息LB元信息物理機/容器元信息部署平臺信息微服務元信息mqredis、mysql.LB、agw、mesh微服務框架部署平臺tracelogmetrics事件元數據消費監控數據生產監控數據平平臺臺依依賴賴解解決決問問題題的的思思路路-抽抽象象模模型型trace動態元信息消息隊列元信息cache元信息DB元信息LB元信息物理機/容器元信息部署平臺信息微服務元信息redis、mysql.LB、agw、mesh微服務框架部署平臺metricslogtrace事件可觀測對象標準化觀測數據SLI/業務監控metricslogtrace事件業務服務MMo od de el ls 解解決決問問題題的
5、的思思路路-用用戶戶故故事事識別觀測對象Argos標準指標合集內置SLISLO報警內置根因分析自定義SLISLO報警內置根因分析+業務補充分析APM dashboard用戶SLI 如如何何實實施施MMo od de el l-D Dr ri iv ve en n設設計計要要點點可觀測對象列列舉舉模模型型觀測指標模模型型也也可可表表示示系系統統的的配配置置和和管管理理過過程程監控大盤配置為某個服務樹節點注入某個類型的告警描描述述 想想要要的的規規格格(s sp pe ec c)而而不不是是 怎怎么么實實現現metadata:name:服務成功QPSspec:when:protocol:http
6、metrics:bytedtrace.sdk.span.server.rate MMo od de el l-D Dr ri iv ve en n思思路路的的實實踐踐過過程程作為一個可觀測系統,應該先確定要觀測的對象是什么實實踐踐過過程程-可可觀觀測測對對象象業業務務容容器器和和平平臺臺基基礎礎設設施施服服務務物理服務器虛擬機存儲設備網絡設備容器實例容器鏡像服務發現負載均衡業務場景/用戶關鍵旅程業務線APP數據庫消息隊列API網關微服務緩存監控和報警服務實實踐踐過過程程-可可觀觀測測對對象象apiVersion:v1kind:ObservableObjectmetadata:name:serv
7、ice_A namespace:defaultspec:type:service attributes:protocol:http framework:hertz dimensions:cluster:values:-default -open_api dc:values:-lf -hldbhostLBmicroservicemqcontainerO OB BS SE ER RV VA AB BL LE E O OB BJ JE EC CT TS S實實踐踐過過程程-可可觀觀測測對對象象-觀觀測測維維度度其其他他領領域域的的觀觀測測維維度度可可觀觀測測領領域域的的觀觀測測維維度度科室學期學習成
8、績學科項目級別年齡組醫生職稱服務類型體育比賽醫療服務所屬服務鏡像部署環境容器部署集群部署機房請求域名/uri服務物理服務器數據中心機房服務器類型操作系統實實踐踐過過程程-可可觀觀測測對對象象-服服務務“服服務務”觀觀測測對對象象接收用用戶戶請請求求,處處理理并并返返回回用用戶戶請請求求的一種觀測對象對服務層的各種觀測對象的一種抽象“服服務務”觀觀測測對對象象的的維維度度服務收到的請求請求流量的切分,如 method,cluster,dc Service AService B前端客戶端to_dc=dc1dc:dc1method=m1method=m1client sideserver sidek
9、8s layerto_cluster=可可觀觀測測對對象象和和觀觀測測維維度度有有什什么么作作用用排排障障定定位位的的過過程程,其其實實是是在在準準確確的的觀觀測測維維度度上上關關聯聯游游走走的的過過程程為什么需要可觀測對象實實踐踐過過程程-可可觀觀測測對對象象關關聯聯游游走走業務層發現問題后,需要能至上而下層層下推來定位根因精精準準維維度度上下游關聯:A方法出問題,不會是B方法的下游引起的服務-容器層關聯:A集群過載,不會導致B集群可用性下降實實踐踐過過程程-觀觀測測數數據據服服務務流量錯誤延時飽和度業業務務列表拉空率投稿延時視頻播放卡頓率CPUMEMNetworkDisk物物理理機機/容容
10、器器有了觀測對象后,需要梳理觀測對象有哪些觀測數據實實踐踐過過程程-字字節節內內場場觀觀測測數數據據存存在在的的問問題題同同含含義義打打點點同同時時且且可可能能長長期期存存在在多多個個版版本本.RPC指標存在2個版本HTTP/thrift/consumer等等類型的服務在打點可能不同go runtime指標存在3個版本容器、LB相關指標正在推進新版本實實踐踐過過程程-字字節節內內場場觀觀測測數數據據存存在在的的問問題題打打點點t ta ag g命命名名混混亂亂metrics的生產方和消費方可能不同,導致站在監控對象的視角上看各項指標時,雖然表示同一個意思,但tag key往往不相同servic
11、ecluster=default可觀測對象維度lb v1:cluster_nameruntime:_clusterrpc v2:_ from_cluster _cluster _ to_clusterrpc v1:from_cluster cluster to_cluster容器打點:pass_實實踐踐過過程程-觀觀測測數數據據標標準準化化我我們們引引入入了了兩兩個個mmo od de el l來來解解決決以以上上的的問問題題MMe ea as su ur re emme en nt t可觀測對象的某個指標,如 服務A的上游調用延時,物理機1的cpu使用率S St ta an nd da ar
12、 rd dMMe et tr ri ic cs s對底層數據源的封裝,屏蔽多種類型/版本的query語法,屏蔽數據源的底層實現,統一tag命名術語實實踐踐過過程程-MMe ea as su ur re emme en nt t MMo od de el lapi_version:v1kind:Measurementmetadata:namespace:default key:service.request.server.throughput.success name:service.request.server.throughput.success description:chinese:服務
13、接口調用成功qps english:success throughput of service requestsspec:parent_node:service.request.server.throughput obserable_object_type:service aggregators:integrations:-standard_metrics:frame.thrift.request.server.throughput.success conditions:-key:request_source values:-frame -key:protocol values:-thrift
14、rpc_metrics_v1cluster=default,service=service1service_Acluster=defaultservice.A服務成功QPSservice.cluster=defaultrpc_metrics_v2_cluster=default,service=service1可可觀觀測測對對象象MMe ea as su ur re emme en nt tS St ta an nd da ar rd dMMe et tr ri ic cs s內內部部概概念念外外部部使使用用實實踐踐過過程程-MMe ea as su ur re emme en nt t的的運
15、運用用在確定觀測對象后,指標探索中能列出相關的觀測指標,用戶選擇指標來觀測,不需要再記各個版本的打點實實踐踐過過程程-MMe ea as su ur re emme en nt t的的運運用用APM中每個圖對應一至兩個measurement,通過配置化實現監控頁面實實踐踐過過程程-MMe ea as su ur re emme en nt t的的運運用用由于measurement是語義化的,我們能比較輕松的構建metrics、log、trace、告警各個模塊間的跳轉聯動功能,并且在監控頁,指標探索,用戶大盤,業務大盤內無縫銜接,不需額外配置實實踐踐過過程程-對對觀觀測測數數據據的的進進一一步步
16、探探索索-S SL LI Imeasurement回答了一個觀測對象有哪些觀測數據,但沒有回答最重要的觀測數據是什么measurement是標準指標合集,但無法承載業務屬性的觀測指標WWh hy y S SL LI I實實踐踐過過程程-WWh hy y S SL LI I服服務務正正常常不不代代表表業業務務正正常常網絡問題客戶端問題拉空、卡頓等業務問題SLI可以彌補業務監控的空缺serverclient版本/實驗bug拉空,卡頓網絡問題終端用戶體驗服務端監控實實踐踐過過程程-WWh hy y S SL LI I業業務務問問題題要要轉轉化化到到服服務務問問題題上上排排障障業務問題和服務問題存在g
17、apSLI是媒介業務問題服務問題可用性延時流量搜索頁打不開了發起交易失敗了售后申請頁不可用作品列表拉空投稿延時增大SLI實實踐踐過過程程-WWh hy y S SL LI I業業務務監監控控告告警警要要抓抓重重點點從入口服務出發,發散出的底層服務會非常多每個服務都會有很多類型的告警核心業務功能-SLI 服務結果性指標-SLI業務功能入口服務底層服務可用性延時接口下游CPU/MEM實實踐踐過過程程-S SL LI I是是什什么么用用戶戶關關鍵鍵旅旅程程用戶關鍵旅程是指用戶在使用產品或服務過程中的一系列關鍵步驟,這些步驟對于用戶體驗和滿意度至關重要。S SL LI ISLI 用于量化用戶關鍵旅程的
18、性能、可用性、可靠性等方面的表現,從而確保服務提供商能夠持續改進服務質量,為用戶提供良好的體驗。實實踐踐過過程程-S SL LI I設設計計思思考考S SL LI I是是一一種種計計算算模模型型配置good/bad/total filter,計算 success_rate=good/totalS SL LI I和和指指標標的的關關系系把SLI理解成一個業務關鍵點一份SLI配置,生成 多個指標S SL LI I 可可用用來來承承載載自自定定義義指指標標的的需需求求用戶需要沉淀下來的指標往往比較重要需要在業務大盤,告警等復用需要計算實實踐踐過過程程-S SL LI I MMo od de el l
19、apiVersion:v1kind:SLImetadata:name:Availability namespace:defaultspec:target:type:service type:requestBased good:measurement:service.request.server.throughput.total filters:-key:status value:literal_or(2*|3*)bad:measurement:service.request.server.throughput.total filters:-key:status value:literal_or
20、(4*|5*)S SL LI I配配置置、S SL LI I生生成成的的指指標標、S SL LO OSLIwindowsbasedrequestbaseddefine whatsgood or badmeasurementsuccess rateerror QPStotal QPSsuccess QPSSLOrolling 實實踐踐過過程程-S SL LI I的的運運用用構構造造黃黃金金指指標標(可可用用性性、流流量量、延延遲遲)根根據據S SL LI I來來生生成成業業務務大大盤盤實實踐踐過過程程-S SL LI I的的運運用用實實踐踐過過程程-A Ar rg go os s a as s
21、a a S Se er rv vi ic ce e排排障障定定位位實實踐踐過過程程-排排障障定定位位可可觀觀測測系系統統應應該該要要面面向向排排障障只關注三支柱(metrics/trace/log)是不夠的,可觀測性最終要對結果負責,要更快發現問題和止損排排障障自自動動化化排障經驗是可沉淀的,最終會有自動化的需求內置自動化無法滿足業務長尾需求,需要業務參與metricslogtrace發現問題識別影響定位止損報警自動化排障自動化自動化實實踐踐過過程程-A Ar rg go os s a as s a a S Se er rv vi ic ce e業業務務配配置置一一個個S SL LI I,可可
22、同同時時觀觀察察多多個個生生成成的的指指標標,如如果果發發現現成成功功率率下下降降,可可以以對對錯錯誤誤指指標標做做根根因因定定位位實實踐踐過過程程-A Ar rg go os s a as s a a S Se er rv vi ic ce e語語義義化化帶帶來來一一個個很很大大的的好好處處是是減減少少編編程程成成本本。metrics:=bytedtrace.span.xxxxtags:=“_method=methodB”if 服務未升級了bytedtrace if service.protocol=http metrics=fmt.Sprintf(toutiao.service.http.
23、%s.xxxx,serviceA)tags=“method=methodB”if service.protocol=thrift metrics=fmt.Sprintf(toutiao.service.thrift.%s.%s.xxx,serviceA,methodB)tags=“”data:=queryMetrics(metrics,tags)measurement:=service.request.server.throughput.totaldata:=queryMeasurement(measurement,service:+psm,service.method=+method)使用m
24、easurement后,只需要這么寫如果某個SRE想要編寫某段代碼查詢A服務的B方法的流量來做分析,使用metrics的情況,他需要這么寫實實踐踐過過程程-A Ar rg go os s a as s a a S Se er rv vi ic ce eA Ar rg go os sArgos平臺是字節內的服務端可觀測平臺,集成了監控報警、鏈路、日志、事件等功能A Aa aa aS S (A Ar rg go os s a as s a a S Se er rv vi ic ce e)AaaS 是一個將 Argos/APM 觀測診斷能力自動化、服務化、開放化的產品變更攔截引流驗證故障注入驗證可用
25、性下降分析panic/進程退出分析業務報警排查SOP預案FAQ沉沉淀淀排排障障經經驗驗自自動動化化風風險險攔攔截截A Ar rg go os s a as s a a S Se er rv vi ic ce e監控日志報警trace事件A Ar rg go os s 平平臺臺平平臺臺聯聯動動tracelogmetricsSLI圖表組件measurement復復用用底底層層能能力力實實踐踐過過程程-A Ar rg go os s a as s a a S Se er rv vi ic ce eA Aa aa aS S架架構構IDL自動代碼生成豐富的SDKArgos生態Case記錄、打標、回放業務
26、邏輯A Aa aa aS S A Ap pp pcase記錄,打標,回放監控數據基礎算法分析套件IDL監控警告觸發源自動生成框架代碼,f1ow編排維度下鉆、關聯分析、變點檢測、離群分析metrics/trace/log/events.事件關聯,單實例分析,過載分析大盤展示結果實實踐踐過過程程-A Ar rg go os s a as s a a S Se er rv vi ic ce efunc AnalyzerServiceCPUOverload()/打開了服務監控頁obj:=aaas.NewObservableObject(“serviceA”)availability10m:=obj.M
27、easurement().ServiceAvailability(“now-10m”,“now”)/看到服務可用性低于SLO if availability10m 80%/對比cpu和可用性曲線,發現具有相關性 if cpuUsage.CorrelationTo(availability10m)0.8 /通知owner處理問題 lark.to(obj.meta().owner(),“serviceA 服務cpu負載過高引起了可用性下降,建議去xxx擴容”)像像使使用用A AP PMM平平臺臺一一樣樣來來寫寫排排障障代代碼碼基基于于A Aa aa aS S構構建建的的根根因因分分析析能能力力原原
28、子子分分析析器器錯誤碼分析維維度度下下鉆鉆單機房分析單上游分析集群/方法分析關關聯聯分分析析下游關聯分析流量異常分析事件關聯分析網絡分析單實例診斷過載panic/進程退出基基于于A Aa aa aS S構構建建的的根根因因分分析析能能力力遞歸分析單上游分析錯誤類型維度下鉆關聯分析獲取因果關系靜態表分析動態因果關系根據因果關系篩選出最終根因遞歸分析單下游是是否否單單上上游游問問題題根根據據局局部部性性問問題題做做減減枝枝是是否否單單下下游游問問題題根根因因選選擇擇基基于于A Aa aa aS S構構建建的的根根因因分分析析能能力力單單上上游游A AC CL L鑒鑒權權問問題題基基于于A Aa a
29、a aS S構構建建的的根根因因分分析析能能力力多多跳跳下下游游導導致致了了服服務務可可用用性性下下降降實實踐踐過過程程-MMo od de el l-D Dr ri iv ve en n實實踐踐過過程程中中的的優優點點總總結結可觀測對象、Measurement、SLI是Model-Driven思路實踐的一些舉例,在實踐過程中,我們感受到了Model-driven思路有這些優點MMo od de el l 驅驅動動了了產產品品迭迭代代產品/QA/前后端研發 各類角色對系統了解可能偏差很大對齊語言,減少溝通成本前前后后前前系系統統更更易易于于理理解解了了需要看復雜的代碼和文檔才能理解系統設計看模
30、型設計就能對系統有所了解后后系系統統更更好好維維護護了了許多功能需要改代碼實現系統配置能力大大增強,如指標、大盤、監控能力都通過配置實現前前后后總總結結與與展展望望標標準準化化業務屬性越強,標準化程度往往越低,系 統 越 難 理 解。例 如:measurement SLI bosun報警/自定義指標越往外層的監控,越容易發現問題,但往往越難標準化。例如:物理/容器監控 服務監控 業務監控MMo od de e-D Dr ri iv ve en n能能更更好好的的迎迎接接A AI IO Op ps sLLM AaaS 可以有很多交互可以探索標標準準化化 自動化 智能化T TH HA AN NK KS S