通過阿里云托管的Elasticsearch應用性能監控APM(Application Performance Monitoring)服務,結合阿里云Elasticsearch,您可以搭建應用性能監控系統,實現系統的可觀測性。本文介紹阿里云Elasticseasrch APM服務的概念、架構及功能,以及如何快速接入并使用APM。
背景信息
可觀測性的本質是度量您的基礎設施、平臺和應用程序,以了解它是如何運行的。與傳統監控運維相比,目前主流的監控更加注重發現與預警問題,而可觀測性的終極目標是為一個復雜分布式系統所發生的一切給出合理解釋。監控更注重軟件的交付過程中以及交付后的服務狀態,而可觀測性則要為全研發與運維的生命周期負責。
日志、基礎架構指標以及APM應用程序性能監測構成了可觀測性的三要素。其中,APM彌補了指標和日志之間的差距。雖然日志和指標往往更具交叉性,涉及基礎架構和組件,但APM更側重于應用程序,允許IT和開發人員監測其堆棧的應用層,包括最終的用戶體驗。將APM添加到系統監測中,您可以:
了解服務的時間花在什么上,以及它崩潰的原因。
了解服務如何相互交互,以及它的可視化瓶頸。
主動發現并修復性能瓶頸和錯誤。
提高開發團隊的生產力。
在瀏覽器中跟蹤終端用戶體驗。
APM通常被應用于以下場景:
用戶體驗監控:通過監控用戶的行為提升用戶體驗。例如監控用戶和Web界面或客戶端的交互,并記錄交互事件的時間。
運行時應用程序架構:理解服務間的依賴關系、架構中應用程序交互的網絡拓撲。
業務事務(Business transaction):產生有意義的SLA報告,并從業務角度提供有關應用程序性能的趨勢信息。
組件監控(Deep dive component monitoring):通常需要安裝Agent并且主要針對中間層,包括Web服務器、應用和消息服務器等。健壯的監控應該能顯示代碼執行的清晰路徑,因為這一維度和上述第二個維度緊密相關,APM產品通常會將這兩個維度合并作為一個功能。
分析或報告(Analytics/Reporting):將從應用程序中收集的一系列指標數據,標準化地展現成應用性能數據的通用視圖。
阿里云托管的Elastic APM和目前比較流行的開源APM系統Apache SkyWalking的能力對比情況請參見能力對比。
架構及數據模型
阿里云Elasticsearch應用性能監控分析服務,支持基于開源Elastic APM構建云上一鍵托管的APM Server服務,并靈活對接阿里云Elasticsearch服務,能夠為您提供高效的應用程序性能優化與監控能力。整體功能模塊架構如下。
Elastic APM由四個模塊組成,詳細信息請參見應用性能監控分析服務介紹。其中APM Agent采集器從其監測的應用程序中收集不同類型的信息和數據,這些被稱為事件。采集器收集數據后將這些事件流式傳輸到APM Server,由Server驗證并處理事件。事件支持的類型包括Spans、Transaction、Errors和Metrics:
Spans:范圍事件類型。包含有關已執行的特定代碼路徑的信息。它們從活動的開始到結束進行度量,可以與其他Span具有父或子關系。
Transaction:事務事件類型。是一種特殊的Span(沒有父Span,只能從中派生出子Span,可以理解為“樹”這種數據結構的根節點),具有與之關聯的額外元數據。你可以將Transactions視為您在服務中衡量的最高級別的工作,例如服務中的請求、提供的HTTP請求或運行的特定的后臺作業等。
Errors:錯誤事件類型。包含相關的原始異常信息,或發生異常時創建的日志信息。
Metrics:指標事件類型。APM Agent自動獲取基本的主機級別指標,包含系統和進程級別的CPU和內存指標。除此之外還可獲取特定于代理的指標,例如Java Agent中的JVM指標和Go代理中的Go運行時指標。
前提條件
創建阿里云Elasticsearch 7.10版本實例,具體操作請參見創建阿里云Elasticsearch實例。購買時,建議您選擇日志增強版,以滿足應用性能監控場景下低成本海量數據寫入及存儲的需求,詳細信息請參見購買頁面參數(增強版)。
使用限制
阿里云APM Server僅支持與阿里云Elasticsearch 7.10版本集成。
操作流程
步驟一:創建APM Server實例
- 登錄阿里云Elasticsearch控制臺。
- 進入APM應用性能監控控制臺。
- 在頂部菜單欄處,選擇地域。
- 在左側導航欄,單擊APM應用性能監控。
在APM Server管理頁面,參見創建APM Server實例,創建APM Server實例。
其中專有網絡需要與待監控的客戶端服務(APM Agent)所在的專有網絡保持一致。實例創建成功后,您可以單擊對應實例右側的實例管理,查看實例的訪問地址等基本信息。
步驟二:配置APM Agent
在APM Server管理頁面,單擊APM數據采集。
在Agent數據采集對話框中,單擊與您客戶端相同語言的頁簽,根據提示配置數據采集。
配置完成后,代理程序會結合應用程序收集性能指標和錯誤,最終將收集到的所有數據發送至Server端。以Java為例,配置方法如下:
參見High Level REST Client(7.x),配置應用程序訪問阿里云Elasticsearch,在pom依賴中添加APM Agent依賴。
<dependency> <groupId>co.elastic.apm</groupId> <artifactId>elastic-apm-agent</artifactId> <version>1.27.0</version> </dependency>
在Maven Central中下載應用兼容的代理文件。
設置啟動參數,并使用javaagent參數啟動應用。
java -javaagent:/root/elastic-apm-agent-1.27.0.jar \ -Delastic.apm.service_name=my-application \ -Delastic.apm.server_urls=http://apm-cn-tl32fxqq****.apm.elasticsearch.aliyuncs.com::8200 \ -Delastic.apm.secret_token= \ -Delastic.apm.application_packages=org.example \ -jar elastic.jar
apm-agent-java-0.1.2.jar:需要替換為您上一步下載的代理文件的名稱,包含文件類型后綴(.jar)。
Delastic.apm.server_urls:將該參數值替換為您APM Server實例的訪問地址。實例創建成功后,單擊對應實例右側的實例管理,即可獲取實例的訪問地址。
步驟三:在Kibana中進行應用性能分析
登錄步驟一:創建APM Server實例時,所關聯的Elasticsearch實例的Kibana控制臺。
登錄Kibana控制臺的具體操作,請參見登錄Kibana控制臺。
說明本文以阿里云Elasticsearch 7.10版本為例,其他版本操作可能略有差別,請以實際界面為準。
根據頁面提示進入Kibana主頁,單擊右上角的Dev tools。
在Console頁簽,運行以下腳本,開啟自動創建APM onboarding索引。
說明- APM Server實例創建成功后會自動啟動實例服務,啟動后Elasticsearch會自動創建APM相關索引,您可在Kibana控制臺中查看。除此之外,由于阿里云Elasticsearch對自動創建索引的命名規范有要求,APM onboarding索引的命名不符合當前規范,因此您還需要手動開啟自動創建APM onboarding索引。
- 以下腳本中的
7.10.2
為您創建的APM Server實例的版本號。
PUT _cluster/settings { "persistent": { "action.auto_create_index":"+.*,+apm-7.10.2-onboarding-*,-*" } }
查看APM中包含的所有服務。
在頁面左上角單擊圖標,展開左側導航欄。
在左側導航欄,單擊Observability下的APM。
在Services頁簽下查看APM的所有服務。
單擊對應服務,查看服務的具體信息。
以petclinic-spring服務為例,服務信息如下圖(每項服務都具有類似的布局)。
左上角顯示了響應時間的平均值、p95和p99值,以顯示發生異常的具體時間。同時您可以在圖表上隱藏不關注的數值曲線,以便更好地了解異常值對整個服務影響。將鼠標移到任何一個圖表上時,可以得到一個彈出窗口顯示當時的具體摘要。從圖中可以看出,響應時長的突增沒有導致任何服務器發生500響應錯誤。
通過查看下方請求明細,您可以看到應用程序中每個請求都來自不同的節點,您可以通過使用各種代理API來擴充默認節點。支持按列標題、響應時長和影響列排序,影響列考慮了對應請求的延遲和熱度數據。以影響最高的getOwners請求為例 ,它的平均延遲并不高,為96毫秒。單擊該請求名稱,可以看到對應請求的詳細信息,圖中反應最慢的請求也不到一秒鐘。
向下滾動,可以看到該請求處理的操作瀑布視圖。其中有很多SELECT語句正在進行,使用APM能夠看到正在執行的實際查詢。
由于該應用程序中的多層微服務均安裝了APM Agent,您可以單擊View full trace,查看該請求的詳細信息并顯示全鏈路中參與處理的所有組件,從而可以實現一個從瀏覽器層開始的請求的分布式追蹤。
真實用戶監測:為了從分布式跟蹤中獲得最大價值,您需要盡可能多地監測組件和服務,包括使用真實用戶監測RUM(Real User Monitoring)。快速的服務響應時間并不意味著請求在瀏覽器中很快就能完成, APM能夠幫助業務衡量最終用戶在瀏覽器中的終端體驗。下圖的分布式跟蹤顯示了四種不同的服務,包含了網絡瀏覽器等多項。