江蘇移動基於Prometheus實現百億級話單實時全景監控
文章轉載來源:
背景
隨著流量業務的高速發展以及已經到來的5G時代,業務支撐系統的規模不斷增大、服務不斷增多,業務、應用和系統執行效能指標資料持續以指數級的速度增長,每日計費話單量已突破百億。系統監控的實時性、準確性的能力不足成為運維工作的瓶頸。
江蘇移動IT運維團隊以SRE理念為指導,結合實時監控“高併發寫入”、“低查詢延時,高查詢併發”、“輕量級儲存”等實際訴求,深入研究時序資料庫的特性和適用程度,打造符合自身系統運維特點的效能管理平臺,實現百億級話單處理過程的實時全景監控分析。
時序庫選型
目前市場較流行的時序資料庫產品有Prometheus、Graphite、InfluxDB、OpenTSDB等,我們比對了這些產品的使用範圍、優缺點。
透過比較,我們發現Prometheus最適合搭建BOSS運維監控系統。單個的Prometheus例項就能實現每秒上百萬的取樣,同時支援對於採集資料的快速查詢。Prometheus對於取樣資料進行壓縮儲存,16位元組的取樣資料平均只需要1.37個位元組的儲存空間,極大減少了儲存資源佔用。查詢實時資料時,磁碟I/O平均負載小於1%。
效能管理平臺架構設計
本方案中運維人員以Prometheus時序庫為中心,實現與應用相關的所有實時監控資料的採集、清洗、儲存,並實時展現系統總體和各環節、各獨立應用處理效能、趨勢性的預測和智慧分析,準確掌握系統執行健康度。
圖1 系統架構
1、根據業務系統的部署,我們在雙中心各部署一套Prometheus叢集。
2、對於系統、應用日誌、Java應用我們採用拉取方式採集指標資料;對於應用、業務、元件的效能指標資料採用推送閘道器(pushgateway)暫存資料,然後再由Prometheus拉取的方式採集。
3、為保證實時採集和查詢的高效能,採集Prometheus時序庫中儲存短期內較近資料,同時寫入一份到遠端的歷史時序庫中。
4、視覺化展示和實時告警透過負載均衡從Prometheus和歷史庫中採集資料。
適配性改造
在部署和使用過程中我們發現原生Prometheus存在一些不足,為此我們進行了一些適配改造工作。
1、夯實高可用能力: 原生的Prometheus部署都是單點的,不足以保證資料可用性,為此我們透過服務註冊的方式實現了Prometheus的高可用性。叢集啟動時每個節點都嘗試獲取鎖,獲取成功的節點成為主節點執行任務,若主節點當機,從節點獲取鎖成為主節點並接管服務。
圖2 高可用能力實現方式
2、最佳化資料儲存方式: 在Prometheus節點上儲存短週期資料用於告警實時觸發和展現,引入InfluxDB用於實時傳輸並儲存長週期的歷史資料,保證採集資料的連續性併為後續資料探勘提供資源支撐。
3、自研改造推送閘道器元件: 在實際使用過程中我們發現推送閘道器(pushgateway)中的資料有較大機率被重複採集到Prometheus中,容易產生錯誤的效能資料和誤告警。為此我們在Prometheus的採集方法中增加從pushgateway拉取資料後主動刪除資料的保障機制,確保資料採集的唯一性。
4、擴充整合資料展示方式: 效能資料視覺化展示原先採用Grafana原生元件,但是使用過程中發現外掛配置靈活性不足,難以展現多種形式關聯指標資料的情形。因此我們自研了視覺化工具,實現涵蓋系統、應用、業務效能等多維度指標的個性化展示,實時掌控系統健康狀態。
5、更改時區: 原生的Prometheus查詢指標時頁面顯示的指標趨勢圖是根據GMT時間顯示的,與北京時間相差8小時,為此我們將原始碼中獲取時間的方式修改成從本地系統時間獲取,成功解決了該問題。
指標採集範圍
結合實際運維場景及需求,整體指標採集分為兩個方面,效能指標和業務指標:
實時展示
透過對各類指標資料加工匯聚,生成BOSS系統健康度統一檢視, 涵蓋各應用效能、業務量、各類服務呼叫量及響應時間等,可以靈活透過多種維度實時展示指標資料,支援下鑽到具體應用、具體程式效能指標,快速實時掌握第一手運維監控資料,實現“運維監控一張圖”,大幅提升系統監控和分析效率,有效節約運維人力資源。
圖3 實時全景檢視
趨勢預測及異常檢測
海量的效能時序資料是運維的寶貴資料資產沉澱,對基礎資料進行有效的建模分析和規劃,輔以合理的演算法學習,實現部分場景的智慧化分析和監測,將大幅提升運維效能,目前已應用於以下運維場景:
1、效能預測: 透過對應用處理速度的實時監控、歷史資料比對分析,自動計算應用處理最大速度,實時準確預測完成待處理話單所需時間。
2、業務趨勢預測: 透過對時序庫中儲存大量系統和業務指標資料按天、周、月維度進行平均、加權序時平均、移動平均、加權移動平均、特列統計等分析,預測未來話單處理趨勢、系統資源利用趨勢,為系統容量管理提供合理依據。
3、異常檢測: 透過對資料進行環比分析、同比分析、均值變化分析、相同時間視窗內資料的均值和標準差分析、區域性資料波動分析、週期性特徵分析等演算法及時發現業務處理異常。
圖4 效能預測場景示意
總結與展望
目前效能管理平臺能滿足每秒10萬級的監控指標入庫,支撐百億級話單處理過程的實時監控。可透過對這些海量資料的分析,實現容量、效能、故障的精準定位和預測,並前置性地做好應對措施以規避問題的產生和蔓延。
該效能平臺已成功應用在BOSS系統,未來將進一步總結經驗並持續改進提升,陸續向其他業務支撐領域和管信領域進行推廣。
作者丨王娟、王鑫、田叔
來源丨IT運維新視界(ID:gh_44ebc0cc0179)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2682958/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 Prometheus 的監控系統實踐Prometheus
- 基於Prometheus閘道器的監控完整實現參考Prometheus
- starrocks基於prometheus實現監控告警Prometheus
- K8S Canal基於Prometheus進行實時指標監控K8SPrometheus指標
- Prometheus監控實戰應用Prometheus
- SpringCloud使用Prometheus監控(基於Eureka)SpringGCCloudPrometheus
- 基於Prometheus的資料庫監控Prometheus資料庫
- 簡單4步,利用Prometheus Operator實現自定義指標監控Prometheus指標
- 基於 prometheus 的微服務指標監控Prometheus微服務指標
- 使用Prometheus、Grafana監控Artifactory實踐PrometheusGrafana
- prometheus監控golang服務實踐PrometheusGolang
- 基於Spring AOP實現對外介面的耗時監控Spring
- go-kit 微服務 服務監控 (prometheus 實現)Go微服務Prometheus
- 使用Prometheus監控Golang服務-基於YoyoGo框架PrometheusGolang框架
- prometheus+grafana監控mysql最佳實踐PrometheusGrafanaMySql
- 基於 ZooKeeper 實現爬蟲叢集的監控爬蟲
- 基於 IntersectionObserver 實現一個元件的曝光監控Server元件
- 基於HTML5 Canvas 實現商場監控HTMLCanvas
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- 3W字乾貨深入分析基於Micrometer和Prometheus實現度量和監控的方案Prometheus
- 如何擴充套件單個Prometheus實現近萬Kubernetes叢集監控?套件Prometheus
- 基於Prometheus+Grafana監控Laravel+Swoole應用PrometheusGrafanaLaravel
- 基於大疆無人機全景拍照的實現思路無人機
- Oracle輕量級實時監控工具-oratopOracle
- 基於 HTML5 Canvas 實現地鐵站監控HTMLCanvas
- 基於HTML5 Canvas 實現地鐵站監控HTMLCanvas
- 基於HTML5實現3D監控應用流動效果HTML3D
- cassandra百億級資料庫遷移實踐資料庫
- 程式實時監控
- Prometheus+Grafana實現服務效能監控:windows主機監控、Spring Boot監控、Spring Cloud Alibaba Seata監控PrometheusGrafanaWindowsSpring BootCloud
- 基於環信實現實時視訊語音通話功能
- Flume實時監控 單個追加檔案
- Kubernetes監控實踐(2):可行監控方案之Prometheus和SensuPrometheus
- 實現基於json的級聯選單JSON
- Prometheus 監控arangodbPrometheusGo
- Docker監控PrometheusDockerPrometheus
- Prometheus監控mongoPrometheusGo
- prometheus JVM監控PrometheusJVM