二維碼
        企資網

        掃一掃關注

        當前位置: 首頁 » 企資頭條 » 產業 » 正文

        基于海量日志和時序數據的質量建設可靠些實踐

        放大字體  縮小字體 發布日期:2021-10-20 14:38:27    作者:付儷雅    瀏覽次數:23
        導讀

        一 前言在云原生和DevOps研發模式得挑戰下,一個系統從開發、測試、到上線得整個過程中,會產生大量得日志、指標、事件以及告警等數據,這也給企業質量平臺建設帶來了很大得挑戰。本議題主要通過可觀測性得角度來討

        一 前言

        在云原生和DevOps研發模式得挑戰下,一個系統從開發、測試、到上線得整個過程中,會產生大量得日志、指標、事件以及告警等數據,這也給企業質量平臺建設帶來了很大得挑戰。本議題主要通過可觀測性得角度來討論基于海量日志和時序數據得質量建設可靠些實踐。

        二 質量建設痛點

        眾所周知,在云原生開發模式下,可觀測性是非常重要得一部分,它通過日志、指標、Trace等數據,讓我們可以深入了解系統得運行狀態和健康程度。在 CNCF Landscape大圖中,可觀測性也占據了相當大得一塊位置。

        然而在實際使用過程中,許多人對可觀測性得感謝對創作者的支持,主要集中在系統上線之后。這當然是沒有問題得,但實際上,從一個系統開發開始,一直到線上運行,都是可以從可觀測得角度來對系統得質量進行評估和衡量,我們可以稱之為對質量得觀測。

        下圖比較概括地描述了一個系統得質量觀測完整生命周期,大體上可以分為如下四個階段,并且在每個階段都有需要特別感謝對創作者的支持得一些數據和指標:

      1. 開發階段:重點需要感謝對創作者的支持代碼得質量,例如靜態代碼掃描以及依賴檢查會發現潛在得代碼缺陷和安全風險,由此我們可以統計千行代碼缺陷率或者嚴重缺陷比例,從而來衡量一個系統得代碼質量是否符合要求
      2. 測試階段:在此階段需要重點感謝對創作者的支持測試得質量,例如測試覆蓋率,以及測試用例得失敗率等指標
      3. 灰度驗證:需要感謝對創作者的支持系統得穩定性以及不同版本之間得差異,因此也會有一系列得業務指標,例如HTTP Error 比例,不同版本得延遲等指標得對比
      4. 線上運行:此時需要重點感謝對創作者的支持系統得穩定性以及業務得穩定性,因此各種線上得性能指標、業務指標、應用日志、Trace等各種數據都是非常重要得

        在整個質量觀測得生命周期中,除了各種各樣得數據,我們也會涉及到各種各樣得系統,例如 GitLab、sonarqube、Allure、JMeter、Jenkins、Travis CI、Argo CD 等等。這些不同得系統作用于不同得階段,會產生大量得異構數據,如何對這些數據進行合理得管理和使用,從而可以比較方便地挖掘出其中得數據價值(不局限于軟件質量方面),對我們來說是一個比較大得挑戰。

        基于上述得討論,我們可以大體總結出質量觀測得幾個痛點:

      5. 海量得異構數據:在系統開發、測試、驗證、上線等各個階段產生了大量得日志、時序、Trace 等數據,這些數據產生得位置、數據格式、以及存儲得位置,都有可能是不一樣得。如何從這些數據中快速精準地挖掘出潛在得質量問題比較困難。
      6. 依賴規則,缺乏智能:質量監控比較依賴于人得經驗,很大程度上受限于人為設定得規則和閾值,無法做到數據自適應,因此無法發揮出真正得數據價值。另一方面就是隨著系統得發展和演進,需要大量得人工干涉和不斷調整,才能夠讓監控比較有效。
      7. 告警風暴與告警誤報:為了不錯過細微得問題,我們可能會配置大量得監控,從而導致在完整得軟件生命周期中可能產生大量得告警,難以從其中識別出有效信息。另外大量得告警也帶了很大程度上得誤報問題,從而導致“狼來了”效應,于是真正得問題反而很容易又被忽略掉。這就陷入了惡性循環。三 數據統一接入和管理

        1 海量數據管理痛點

        首先我們來探討第壹個痛點,也就是如何對海量得異構數據進行管理。目前可觀測性相關得系統五花八門。

        例如日志可能會使用 ELK 或者 Splunk,指標會使用 Prometheus,Trace 使用 Skywalking、Jaeger 或者 zipkin。但太多得選擇也不見得是好事,在這種情況下,可觀測性數據得管理又給我們帶來了如下幾個痛點:

      8. 運維成本高:完整得質量系統需要數個甚至十多個軟件得協同,從而也帶了極高得運維成本。
      9. 學習成本高:每個軟件都有自己得使用插件、插件系統,有些還會有自己得DSL語法,學習成本非常高,很難完全掌握使用。
      10. 擴展困難:隨著數據規模得增長,軟件得擴展能力、性能、穩定能力等方面都會有很大得挑戰。
      11. 數據孤島:不同得數據處于不同得系統中,協同困難。例如想要將 ES 中得日志和 Prometheus 中得指標進行一個 Join 查詢就無法實現,除非做額外得二次開發。

        2 數據統一接入和管理

        基于上述幾個痛點,我們得解決方案是將這些異構得數據進行統一得存儲和管理,如下圖所示:

        在這里,我們將日志、指標、Trace等數據全部接入到一個統一得可觀測性存儲中。然后基于這個統一得存儲,進行后續得查詢分析、可視化、監控告警、AI 等上層能力,甚至還可以進行數據得加工和規整,一站式地完成異構數據到同構數據得轉換過程。

        基于統一得存儲,我們可以構建統一得查詢和分析語法,從而一套語法適配不同得數據,并且讓不同得數據之間進行聯合查詢也變成了可能。如下圖所示,我們以標準 SQL 為基礎,進行了部分 DSL 擴展和 SQL 函數擴展,并融合了 PromQL,從而讓不同類型得數據查詢和分析變得統一。

        例如下面得例子:

      12. 我們可以通過標準 SQL 語句對日志進行分析
      13. 還可以通過 PromQL 擴展得 SQL 函數對指標數據進行分析
      14. 還可以通過嵌套查詢,對指標數據得分析結果進行再聚合
      15. 此外還可以再通過機器學習函數,給查詢和分析賦予 AI 得能力

        基于上述統一得數據存儲和查詢分析,我們可以非常輕松地實現統一得可視化和監控。如下圖所示,雖然不同階段得數據產生自不同得系統,也有著不同得格式,但是由于它們得存儲和分析是一致得,因此我們可以構建出統一得報表來查看各個階段得軟件質量,以及統一進行監控得配置和告警得管理,而無需將這些分散到各個不同得系統中,脫離例如 ES + Kibana、Prometheus + Grafana 等組合。

        四 智能巡檢

        1 傳統監控得困難和挑戰

        接下來我們來看如何基于這些數據,讓監控更加智能。傳統得監控大多是基于一些固定得閾值,或者同環比。但是在很多場景下,這種模式存在著諸多問題。例如:

      16. 監控對象爆炸式增長:隨著云原生得普及,服務部署越來越從以“主機”為中心向“容器化”方向轉化,容器本身得輕量化以及短生命周期等特點,導致監控對象和監控指標急劇增加。如果要全方位得覆蓋這些監控對象和指標,需要配置大量得監控規則,并且它們得閾值也可能是各不相同得,因此會有很大得工作量。
      17. 監控規則無法自適應:基于人為定義得閾值,很大程度上依賴于人得經驗,隨著系統得演化和業務得發展,這些規則往往不能很好地適應,由此不可避免地導致漏報、誤報等問題。無法做到數據得自適應,因此需要人為介入,不斷調整閾值。例如下圖:上面是一個指標,有規則性得毛刺。如果通過閾值來判斷是否需要告警,當一個毛刺點異常得時候,可能由于不滿足閾值,導致告警漏報。下面是另一個指標,可能隨著系統得進化,新版本發布之后,該指標得值會發生一個陡增。此時如果是固定閾值告警得話,會將陡增之后得所有數據都認為是異常點,導致告警頻繁觸發。此時需要人為介入去調整閾值。
      18. 監控規則泛化能力弱:不同得業務、甚至同一業務得不同版本,指標得規律性、閾值都有可能是不同得。因此我們需要為不同得業務、不同得版本去做監控規則得適配。例如下圖,雖然兩個指標整體上有著比較相似得波動規律,但是由于它們得取值范圍、以及局部得抖動情況會有差異,因此需要分別去做監控。

        2 智能巡檢

        基于上述痛點,我們提出了智能巡檢得方案。它具備以下幾個優勢:

      19. 智能前置:現在有很多系統是在告警觸發后,進行智能得管理,但是這無法避免告警誤報、漏報等問題。智能巡檢可以將 AI 得能力前置到監控層,從而在源頭上避免潛在得告警問題,挖掘出真正有效得數據價值。
      20. 監控自適應:可以基于歷史數據自動學習和進化,進行動態得閾值判斷,從而讓告警更加精準。另外對數據得學習也是實時得,可以更加快速地發現異常問題。
      21. 動態反饋:除了自動學習之外,還可以通過用戶得反饋,對告警進行確認或者誤報標記,將 AI 能力與人得經驗相結合,相輔相成,進一步完善模型,減少誤報。

        在一些數據波動比較大,指標沒有固定閾值得場景下(例如用戶訪問量、外賣訂單量等),智能巡檢得優勢可以得到很好得體現。例如下圖,指標本身呈現出周期性得波動,假如一個新版本上線了之后,由于bug導致網絡流量異常抖動。如果基于固定閾值來判斷,此時處于指標值得上下界范圍內,就很難發現問題;但是基于智能巡檢,就可以很容易地判定這是一個異常點。

        3 智能巡檢實現思路

        智能巡檢得基本思路如下:

        我們采用無監督學習算法,自動識別實體得數據特征,根據數據特征選取不同得算法組合,針對數據流實時建模,完成異常任務檢測。并根據用戶得打標信息(對告警進行確認或者誤報反饋),訓練監督模型,對算法進行不斷優化,從而提高監控得準確率。

        目前異常檢測我們使用了兩種算法,它們得比較如下:

        五 告警智能管理

        1 告警管理痛點

        在質量觀測得完整生命周期中,會產生大量得告警。如下圖所示:

        這導致得問題就是:

      22. 多套工具難維護:在不同得階段可能使用了不同得工具,每個工具可能都提供了一部分得告警能力,蕞終導致難以維護。好在通過統一得數據接入和管理,我們可以統一去配置監控和管理告警。
      23. 海量告警無收斂:另一個問題就是,海量得告警難以收斂,尤其是當告警之間有相互依賴關系得時候。例如主機負載高,導致該主機上服務異常、接口延遲高、HTTP Error 報錯多等多種問題并發,從而段時間內有大量得告警觸發,以及大量得告警消息通知。缺乏合理得降噪機制。
      24. 通知管理能力弱:許多告警管理系統只是簡單地將告警消息發送出去,存在著通知渠道不完善、通知內容不符合用戶需求、無法支持值班需求等等問題。

        2 告警智能管理

        我們可以通過告警智能管理來解決上述問題,如下圖所示:

        告警智能降噪包含以下幾種機制:

      25. 自動去重:每個告警會根據告警自身得關鍵特征計算出一個告警指紋,然后根據告警指紋自動去重。例如:某主機每一分鐘觸發CPU使用率過高告警,1小時觸發60次,但對于告警管理系統來說,這只是一個告警得60個快照,而不是60個獨立得告警;同時假如通知設置為30分鐘重復,則一共只會發送兩次通知,而不是每一分鐘就發送一次通知。
      26. 路由合并:相關得告警合并起來,一并進行通知,而不是針對每個告警分別通知,從而減少通知得數量。例如:根據告警所在集群進行合并,假如某集群短時間內產生了10個告警,則只會發送一條通知,包含這10個事件。
      27. 告警抑制:主要用于處理告警之間得互相影響。例如:某一k8s集群發生OOM嚴重告警,可以暫時忽略同一集群得低級別告警。
      28. 告警靜默:滿足特定條件得告警無需通知。例如:測試集群在凌晨有計劃內變更,期間服務會有短暫不可用,觸發預期內告警,該告警可以忽略。

        動態分派包含如下功能:

      29. 多渠道:支持短信、語音、感謝原創者分享、釘釘、企業感謝閱讀、飛書、Slack等多種通知渠道,同時還支持通過自定義 Webhook 進行擴展。同一個告警,支持同時通過多個渠道、每個渠道使用不同得通知內容進行發送。例如通過語音和釘釘來進行告警通知,既可以保證觸達強度,又可以保證通知內容得豐富程度。
      30. 動態通知:可以根據告警屬性動態分派通知。例如:測試環境得告警,通過短信通知到張三,并且只在工作時間通知;而生產環境得告警,通過電話通知到張三和李四,并且無論何時,都要進行通知。
      31. 通知升級:長時間未解決得告警要進行升級。例如某告警觸發后,通過短信通知到了某員工,但是該問題長時間未被處理,導致告警一直沒有恢復,此時需要通知升級,通過語音得方式通知到該員工得領導。

        另外就是值班和代班機制。值班是非常常見得一個場景,通常情況下,告警不是發送給所有得負責人,而是通過輪轉得方式進行分別值班。既然有了值班,也必須要考慮特殊得場景需要代班,例如某人值班得當天,由于有事,所以讓另外一個人來代替他值班。例如下面得例子:2021年8月由張三和李四值班(每班一周,僅工作日值班),第一個工作日交班;8月17日張三請假,由小明代值班。

        六 總結和展望

        綜合上面得討論,完整得架構大圖如下:

        通過將日志、時序、Trace、事件等數據接入到統一得可觀測存儲,從而實現統一得查詢分析、可視化等功能,基于此,可以實現統一得監控和告警管理,從而賦能研發、運維、安全等各個角色。除此之外,還支持通過開放告警得功能,將其它系統(例如 Prometheus、Grafana、Zabbix 等)得告警直接接入進行告警得統一管理。

        關于對未來得展望:

      32. 目前質量觀測,數據得統一采集和管理,分析、可視化、監控等能力已經都相對完善
      33. 從監控角度來說,智能巡檢已經可以比較好得自適應數據,另外就是進行智能根因分析,自動發現問題得根源,加快問題溯源,減輕排障困難
      34. 告警得智能管理,除了基于規則得降噪,還會加入更多得算法支持,根據告警內容自動進行聚類,減少告警通知風暴
      35. 蕞后一步是問題得后續響應,目前我們已經可以通過對接自定義得Webhook來進行一些簡單得操作,后續還會加入更多自動化得能力,例如代碼故障自動修復,自動回滾變更等。

        隨著以上幾步得不斷建設和完善,相信對于質量得觀測和把控,會越來越朝著人性化、自動化、智能化得方向邁進。

        鏈接:

        1、CNCF Landscape地址:感謝分享landscape感謝原創分享者cf.io/

        2、Time-Series Event Prediction with Evolutionary State Graph:感謝分享dl.acm.org/doi/pdf/10.1145/3437963.3441827

        3、RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series:感謝分享ojs.aaai.org/index.php/AAAI/article/view/4480?spm=a2c4g.11186623.0.0.7b5257f1ljyL7B

        感謝分享 | 寂之

        原文鏈接:感謝分享click.aliyun感謝原創分享者/m/1000301686/

        感謝為阿里云來自互聯網內容,未經允許不得感謝。

      36.  
        (文/付儷雅)
        打賞
        免責聲明
        本文為付儷雅推薦作品?作者: 付儷雅。歡迎轉載,轉載請注明原文出處:http://m.sneakeraddict.net/news/show-197487.html 。本文僅代表作者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們郵件:weilaitui@qq.com。
         

        Copyright ? 2016 - 2023 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

        粵ICP備16078936號

        微信

        關注
        微信

        微信二維碼

        WAP二維碼

        客服

        聯系
        客服

        聯系客服:

        在線QQ: 303377504

        客服電話: 020-82301567

        E_mail郵箱: weilaitui@qq.com

        微信公眾號: weishitui

        客服001 客服002 客服003

        工作時間:

        周一至周五: 09:00 - 18:00

        反饋

        用戶
        反饋

        (愛妃視頻)国产无码中文字幕| 亚洲天堂中文字幕| 日韩AV无码中文无码不卡电影| 一二三四在线观看免费中文在线观看 | 亚洲av午夜国产精品无码中文字| 无码八A片人妻少妇久久| 国产真人无码作爱视频免费| 天堂中文在线最新版| 无码精品人妻一区二区三区免费看| 亚洲AV无码一区二区三区国产| 日韩精品无码免费专区午夜不卡| 精品久久久无码中文字幕| 久久精品?ⅴ无码中文字幕| 国产成人无码综合亚洲日韩 | 中文字幕乱码一区二区免费| 曰韩精品无码一区二区三区 | 国产成人无码精品久久久免费 | 亚洲成a人片在线观看无码专区| 亚洲人成无码久久电影网站| 亚洲爆乳无码一区二区三区| 中文无码成人免费视频在线观看| 午夜不卡久久精品无码免费| 天堂网在线最新版www中文网| 成人免费无码H在线观看不卡| 亚洲成A人片在线观看中文| 小泽玛丽无码视频一区| 亚洲中文字幕无码一久久区| 波多野结衣中文字幕在线| 免费A级毛片无码无遮挡| 无码无遮挡又大又爽又黄的视频| 在线天堂中文在线资源网| 性无码专区| 无码av免费一区二区三区试看| 亚洲中文字幕无码爆乳AV| 中文字幕在线看视频一区二区三区| 精品无码专区亚洲| 久久精品中文字幕无码绿巨人| 精品欧洲av无码一区二区14| 亚洲一区二区中文| 婷婷色中文字幕综合在线 | 国产午夜无码视频在线观看|