應用性能管理(APM)綜述

1. APM簡述

APM (Application Performance Management,即應用性能管理,在分布式領域也稱為分布式跟蹤管理)對企業(yè)的應用系統(tǒng)進行實時監(jiān)控,它是用于實現(xiàn)對應用程序性能管理和故障管理的系統(tǒng)化的解決方案。

隨著分布式系統(tǒng)和微服務架構的應用和發(fā)展,應用性能管理成為系統(tǒng)運維管理和網(wǎng)絡管理的一個重要方向,它能夠?qū)ζ髽I(yè)的關鍵業(yè)務應用進行監(jiān)測、優(yōu)化,提高企業(yè)應用的可靠性和質(zhì)量,保證用戶得到良好的服務,降低IT總擁有成本(TCO)。應用性能管理APM能夠?qū)φ麄€企業(yè)的IT系統(tǒng)各個層面進行集中的性能監(jiān)控,并對有可能出現(xiàn)的性能問題進行及時、準確的分析和處理。它能輕松地從一個IT應用系統(tǒng)中找到故障點,并提供有相關解決建議或方法,從而提高整體的系統(tǒng)性能。一個企業(yè)的關鍵業(yè)務應用的性能強大,可以保證企業(yè)業(yè)務應用系統(tǒng)的高效性和穩(wěn)定性,為企業(yè)帶來核心競爭力的提升。

當下成熟的互聯(lián)網(wǎng)公司都建立有從基礎設施到應用程序的全方位監(jiān)控系統(tǒng),力求及時發(fā)現(xiàn)故障進行處理并為優(yōu)化程序提供性能數(shù)據(jù)支持,降低整體運維成本。國內(nèi)外商業(yè)的APM有Compuware、iMaster、博睿Bonree、聽云、New Relic、云智慧、OneAPM、AppDyn、Amics等。 本文主要針對Java技術體系介紹APM的框架、核心功能以及業(yè)界主流APM工具的功能特點。

2. APM框架

隨著互聯(lián)網(wǎng)技術和應用的快速發(fā)展,應用程序本身變得越來越難以管理,因為它們從單體架構轉向高度分布的、多層、多元素的分布式應用架構,應用系統(tǒng)在許多情況下依賴于應用程序的開發(fā)框架。APM概念框架旨在幫助企業(yè)優(yōu)先考慮在IT系統(tǒng)架構中需要首先關注的方法,以便企業(yè)能夠快速實施并全面了解五維APM模型。

APM框架
  • 終端用戶體驗
    衡量從用戶請求到數(shù)據(jù)再返回的流量傳輸是捕獲最終用戶體驗(EUE)的一部分。此測量的結果稱為實時應用程序監(jiān)視(又稱自頂向下監(jiān)視),它具有被動和主動兩個組件。被動監(jiān)控 通常是使用網(wǎng)絡端口鏡像實現(xiàn)的無代理設備。主動監(jiān)控 由預定義的合成探針和Web機器人組成,用于報告系統(tǒng)可用性和業(yè)務事務(即業(yè)務方自行埋點)。

  • 應用架構映射
    應用程序發(fā)現(xiàn)和依賴關系映射(ADDM)解決方案用于自動執(zhí)行將事務和應用程序映射到底層基礎架構組件的過程。

  • 應用事務的分析
    關注用戶定義的事務或?qū)I(yè)務社區(qū)有一定意義的URL頁面定義。

  • 深度應用診斷
    深度應用診斷(DDCM)需要安裝代理,通常針對中間件,側重于Web,應用程序和消息服務器。

  • 數(shù)據(jù)分析
    獲得一組通用的度量標準以收集和報告每個應用程序非常重要,然后標準化有關數(shù)據(jù)并呈現(xiàn)應用程序性能數(shù)據(jù)的常見視圖。

3. APM核心功能

APM被形象的稱為應用程序的私人醫(yī)生,越來越收到企業(yè)的青睞,比起通過日志方式記錄關鍵數(shù)據(jù)顯然要更加實用,APM主要包含如下核心功能:

  • 應用系統(tǒng)存活檢測

  • 應用程序性能指標檢測(CPU利用率、內(nèi)存利用率等)

基于Java體系的應用程序運行時的性能指標可通過Java.lang.Runtime、java.lang.Management中的方法采集。除此之外,著名的Metrics類庫也能夠通過這些底層技術獲取Java程序性能指標。CPU利用率、內(nèi)存利用率等基礎數(shù)據(jù)的采集僅僅是性能監(jiān)控的一部分,Metrics提供了更為豐富的五個基本度量類型,可在此基礎上開發(fā)滿足需求的監(jiān)控指標。

  • 應用程序關鍵事件檢測

  • 檢測數(shù)據(jù)持久化存儲并能夠多維度查詢

    應用程序向APM發(fā)送的采集數(shù)據(jù),通常都是格式化數(shù)據(jù),為了實現(xiàn)節(jié)約存儲空間、計時查詢,通常使用時間序列數(shù)據(jù)庫存儲采集數(shù)據(jù)。采集數(shù)據(jù)能夠利用Grafana展示平臺等進行多維度的數(shù)據(jù)展示。

  • 服務調(diào)用跟蹤

    大型系統(tǒng)中每次請求往往都由若干個獨立的服務調(diào)用組成,一次從上游到下游的調(diào)用被稱為一次Trace,為了監(jiān)控程序性能,需要知道每個獨立服務的執(zhí)行時間以及網(wǎng)絡通信開銷時間,Google曾經(jīng)發(fā)表過一個介紹其內(nèi)部實現(xiàn)Dapper的論文(強烈建議大家有空看一下,該論文成為APM管理的思想精髓),Twitter參照此論文實現(xiàn)了一個名為Zipkin的服務調(diào)用追中系統(tǒng)并已開源。

  • 監(jiān)控告警

    當采集到應用程序的性能數(shù)據(jù)后,除了人為主動的在系統(tǒng)上查看之外,另一個主要的使用功能點就是,監(jiān)控系統(tǒng)根據(jù)設定的報警規(guī)則主動報警。實現(xiàn)觸發(fā)告警有多種方法,常見的方法有:周期性主動輪詢采集到的性能數(shù)據(jù),并且根據(jù)報警規(guī)則,進行報警處理;除此之外,通過流式計算方法也可以進行報警處理。

4. 開源APM管理工具

  1. PinPoint

    韓國開源的一個功能完備的APM系統(tǒng),支持JVM性能數(shù)據(jù)采集、服務Trace、告警等功能。它具有應用程序無侵入的應用特性。

  2. ZipKin

    ZipKin是Twitter開源的Trace工具,通過Java程序中引入客戶端,可隱式攔截Http、Thrift等形式服務調(diào)用。通過Http、Kafka、Scribe等方式同步監(jiān)控數(shù)據(jù)到服務端,ZipKin帶有Web UI,但沒有告警功能。

  3. SkyWalking

    Skywalking 是一個開源APM系統(tǒng),為微服務架構和云原生架構系統(tǒng)設計。它通過探針自動收集所需的指標,并進行分布式追蹤。通過這些調(diào)用鏈路以及指標,Skywalking APM會感知應用間關系和服務間關系,并進行相應的指標統(tǒng)計。

  4. Prometheus

    Prometheus從官方介紹來說,他是一個開源的系統(tǒng)監(jiān)控和報警工具,最初由SoundCloud推出。自2012成立以來,許多公司和組織都采用了Prometheus,項目有一個非?;钴S的開發(fā)者和用戶社區(qū)。它是一個獨立的開源項目,并獨立于任何公司。

  5. CAT

    CAT是美團點評開源的功能完備的APM系統(tǒng),支持JVM性能數(shù)據(jù)采集、服務跟蹤、告警等功能,但需要寫監(jiān)控代碼。

  6. Hawkular

    Hawkular是一個功能完備的APM系統(tǒng),應用程序中嵌入Hawkular客戶端,主動將采集數(shù)據(jù)通過Http或者Kafka傳遞給Hawkular。Hawkular支持JVM性能數(shù)據(jù)采集、服務Trace、告警等功能。其中JVM性能數(shù)據(jù)采集使用JMX,服務Trace使用Zipkin客戶端。

大多數(shù)企業(yè)希望有一個功能完善的APM系統(tǒng)具有JVM性能監(jiān)控、服務調(diào)用追中、監(jiān)控告警功能,CAT、PinPoint、SkyWalking、Hawkular相對來講功能更為完備,推薦企業(yè)使用。

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容