《Prometheus大規模業務監控實戰-張柳青.pdf》由會員分享,可在線閱讀,更多相關《Prometheus大規模業務監控實戰-張柳青.pdf(28頁珍藏版)》請在三個皮匠報告上搜索。
1、大規模 Prometheus業務監控實戰張柳青/百度智能云個人介紹張柳青百度智能云 云原生部2012年加入百度,長期從事監控、云原生方向架構與研發工作現任百度云原生可觀測方向技術負責人Prometheus 業務監控遇到的挑戰高性能 Prometheus 實踐高可用 Prometheus 實踐Prometheus 數據準確性問題總結與展望百度監控發展史200820122015腳本化監控統一監控平臺開放監控平臺智能監控平臺平臺統一監控能力可配置和自定義能力監控標準庫智能異常檢測故障根因診斷人工配置采集腳本PrometheusPrometheus、OpenTelemetryOpenTelemetry
2、規范標準化規范標準化指標、指標、TraceTrace、日志關聯分析、日志關聯分析2019業務監控在 Prometheus 中的落地場景故障管理故障發現故障定位容量管理容量治理自動擴縮容性能分析分階段響應時間分析運營分析流量分析AB實驗對比為什么Prometheus天然適合業務指標靈活的數據模型:Prometheus數據模型天然適合表達業務數據,Counter/Histogram/Summary,多維度指標模型豐富的數據可視化能力:PromQL 靈活分析能力全棧監控關聯分析:集成移動端、資源、應用、業務等各類監控為一體,實現數據互通,全局分析大規模業務監控在 Prometheus 架構下的挑戰高
3、性能高性能高可用高可用準確性準確性Prometheus單機引擎存在的問題Prometheus-server集采集、數據存儲、PromQL查詢、預計算、告警檢測為一體易部署、易運維性能瓶頸單機Exporter采集性能有限本地存儲寫入性能存在瓶頸本地存儲數據保存時長受磁盤大小限制可用性保障不具備高可用保障能力,單機故障采集失敗、所有數據丟失Prometheus聯邦高可用集群使用中央的Prometheus Server服務,來聚合多個Prometheus數據,實現擴展性使用主備+負載均衡來實現高可用中央Prometheus Server無法突破寫入性能、磁盤大小瓶頸主備高可用方案單節點數據丟失,無法
4、補齊,概率性查詢失敗Prometheus 業務監控遇到的挑戰高性能 Prometheus 實踐高可用 Prometheus 實踐Prometheus 數據準確性問題總結“降維打擊”業務指標降維預聚合方案業務指標量級大原始指標量級:實例*單個實例業務指標采集層業務指標的預聚合降維方案發送到后端數據量減少90%以上采集聚合計算瓶頸優化Prometheus預計算,帶來大量CPU和內存消耗。流式預聚合模塊替代原有Prometheus預聚合,性能提升10倍基于主動探測的探測任務負載均衡不同類型探測端點產出指標數量不同,對采集端性能壓力不同主動探測目標端點感知指標量級變化動態采集分片調整,提升集群整體利用
5、率高性能流式計算與報警引擎為什么要做預計算大指標量級的查詢帶來性能壓力基于查詢的預計算性能瓶頸大量級查詢,單次查詢耗時10s基于Flink的流式預計算方案高性能計算,不影響存儲算子類型算子類型處理方式處理方式groupby子句維度取值,hash拆分并行計算聚合算子:sum/avg/.復合算子:sum(rate)/.局部預聚合+全局計算,避免計算熱點累加計數器,無需全量緩存,顯著降低內存CPU消耗時序數據降采樣為什么要做降采樣歷史大跨度時間段數據檢索,帶來查詢性能瓶頸業務指標長時間(1-5年)存儲需求,帶來存儲壓力降采樣方案5min、1h多級降采樣針對Prometheus算子的降采樣方案數據類型
6、數據類型算子算子計算方式計算方式Gaugesum_over_timecount_over_timeavg_over_time.降采樣周期內sum/count/avg等取值CounterHistogramSummaryincreaserate.降采樣周期內Counter增量值Prometheus 業務監控遇到的挑戰高性能 Prometheus 實踐高可用 Prometheus 實踐Prometheus 數據準確性問題總結采集層高可用容災架構數據雙采,K8S Lease資源自動選主,10s自動容災切換Prometheus主Prometheus備K8S LeaseKafka選主業務Exporter計
7、算與存儲的數據高可靠保障10s單實例故障自動負載均衡Kafka自動重傳重算,數據冪等,不丟不重KafkaFlinkTSDB兩地三中心高可用保障同城雙活:雙采雙法,單中心異常切換同城雙活備集群異地災備:跟隨業務災備切換,異地提供監控服務Prometheus采集集群KafkaTSDBFlink告警通告網關儀表盤網關業務服務業務服務Prometheus采集集群Kafka告警通告網關TSDBFlink儀表盤業務服務Prometheus采集集群KafkaTSDBFlink告警通告網關儀表盤網關同城雙中心數據雙發跨中心切換同城雙活異地災備Prometheus 業務監控遇到的挑戰高性能 Prometheus
8、 實踐高可用 Prometheus 實踐Prometheus 數據準確性問題總結PromQL 算子帶來的數據丟點與準確性問題金融交易場景下對高精確度的要求Prometheus無法保證100%準確性Prometheus的誤差體現在:客戶端進程重啟導致的計數器重置算子實現帶來的誤差increase/rate首點忽略導致的數據不準0s10s20s30s40s50s55510101010101010解決方法:采集端記錄Target采集狀態。排除中途采集導致的首點保證正常增量產生的點正確計算,即首個點減去0,表示該點的增量request_countstatus=failrequest_countstat
9、us=success5 5次請求失敗次請求失敗新增新增5 5次請求失敗次請求失敗新增新增1010次請求成功次請求成功問題出現場景:總請求量:sum(increase(request1m)2020期望值實際值5 5成功率:sum(increase(request_countstatus=success)/sum(increase(request_count1m)50%50%0%0%原因:increase/rate計算,會忽略每條曲線第一個點的取值該處理方法用于避免采集端中途采集時統計到超大錯誤數據。但會導致正常的數據增加被錯誤忽略更多的算子誤差舉例increase/rate算子擬合計算帶來的誤差解決方法:counter值周期性轉化為增量值,使用sum_over_time計算避免誤差sum_over_time,雙向閉區間統計,導致多個周期統計的結果,超出預期值解決方法:新增單向閉區間算子Prometheus 業務監控遇到的挑戰高性能 Prometheus 實踐高可用 Prometheus 實踐Prometheus 數據準確性問題總結總結指標降維動態分片采集流式預計算降采樣存儲高性能采集主備容災Kafka數據重發兩地三中心高可用算子優化準確性