Elastic APM 是什麼?效能監控、基本架構、事件類型、應用場景全解析!
Elastic APM 是什麼 ?
Elastic APM(Application Performance Monitoring)是一個免費開放,基於 Elastic Stack 的監測工具,能夠即時監控、觀測、分析應用程式及服務的效能。
Elastic APM 透過收集前後端的請求/回應、資料庫查詢、快取調用、外部 HTTP 請求等工作的響應時間與各種指標,幫助開發人員快速檢測、診斷並修正效能瓶頸。
Elastic APM 還會自動收集未處理的錯誤和異常,在錯誤發生時立即識別、發出告警,開發人員更可以鎖定特定錯誤發生的次數、頻率,藉此探索更深層的效能問題肇因。
更多 Elastic Stack 介紹: 10 分鐘帶你了解 Elastic (ELK) 是什麼?
為什麼用 APM 監控服務很重要?
現今應用程式運行在高度分散的基礎架構上,由多種元件組成,監控相當複雜。
透過 APM,可觀測應用程式與元件的日誌(Logs)、指標(Metrics)與軌跡(Traces),並透過儀表板整合呈現,讓故障排除與效能管理更輕鬆。
當多個服務同時運行於同一主機時,APM 能分析每個服務的資源消耗,例如 CPU、記憶體與流量,進而辨識特定 API 的效能瓶頸,或找出佔用過多資源的服務。這不僅有助於優化資源分配,更能確保所有服務穩定高效地運行。
更多細節: Observability 3 本柱+Profile 打造完整可觀測性解決方案
APM 包含哪些功能?
根據 Gartner 的說法,APM 工具需要滿足三個主要標準功能:
- 前端監控
包括 PC 端和行動端用戶的用戶體驗監控,以及全面的事務監控,在文章後段我們將提到 RUM (真實用戶監測),即屬於這個範疇。 - 應用程式的發現、追蹤和診斷
包含各種應用程式元素(application elements)的自動發現,如 Web 伺服器、平台、框架、微服務等,確認它們彼此的關係並診斷代碼。最後,追蹤應用程式如何響應用戶請求。 - 分析
記錄應用程式生成的所有數據,然後使用各種技術 (如:ML) 來發現有意義的模式。它可以協助找到效能問題的根本原因,並預測未來可能發生的問題。
Elastic APM 除了具備這三個標準功能, 更在 2022 年 Gartner 針對多家 APM 供應商的 調查報告 中,被評鑑為「遠見者 (Visionaries)」 , 意味 Elastic 具備專有 agent 的技術、分佈式追蹤觀察應用程式完整事務行為的能力。

Elastic APM 的基本架構
簡單介紹 APM 功能、用途以及重要性後,本章節將說明 APM 的架構。
〔註:本章節的詳細內容請參考原廠文件 Components and documentation〕
Elastic APM 由四個元件組成:APM Agent、APM Server、 Elasticsearch 和 Kibana

Elastic APM 架構圖
APM Agent
APM Agent 用於檢測程式碼,並在應用程式運行時收集效能與錯誤數據,再將其傳送至 APM Server。
它提供多種語言的函式庫(Library),可直接套用於現有程式中,包括:Go、iOS、Java、.NET、Node.js、PHP、Python、Ruby,以及 JavaScript Real User Monitoring(RUM)。
每種語言的 agent 官方都有提供 文件,可自行查看。
APM Server
APM Server 負責從 APM agent 接收效能數據,它被設計成獨立的組件以保持輕量以及避開安全性風險,並提高整個 Elastic Stack 的兼容性!
APM Server 驗證和處理來自 APM agent 的事件後,會將數據轉換為 Elasticsearch 文檔進行索引、儲存,這些數據可以透過 Kibana APM 查看。
Elasticsearch
Elasticsearch 用於儲存 APM 效能指標等數據,它是一個高度可擴展的免費和開放的全文搜索和分析引擎,能夠近乎實時地快速儲存、搜索和分析大量數據。
關於 Elasticsearch 更詳細的介紹,請看我們的介紹文章:
Kibana APM app
Kibana 是一個免費開放的視覺化分析平台,用來和 Elasticsearch 搭配服用的 UI 工具,它可以搜索、查看及分析儲存在 Elasticsearch 中的數據。
更多 Kibana 的介紹請看我們的介紹文章:
Elastic APM 的四種資料模型
Elastic APM Agent 會從檢測的應用程式中擷取各類資訊,稱為「事件 (events)」,包括:跨度 (spans)、事務 (transactions)、錯誤 (errors) 與指標 (metrics)。
事件還可附帶額外的元數據 (metadata),讓監控數據更完整、更有深度。
以下將分別介紹跨度、事務、錯誤與指標。
跨度 Spans
跨度是特定代碼執行的資訊,紀錄某個活動的開始與結束,並且它們可能與其他跨度具有父/子(上/下層)關係。
APM agent 會自動檢測函式庫以從應用程式中擷取跨度 ,你可以使用 agent API 對特定代碼路徑進行自定義的檢測。預設情況下,跨度會存在跨度索引中,與事務的索引分開。
丟棄的跨度(dropped spans)
出於效能考量,APM agent 會選擇「採樣」或「忽略」跨度,以此來避免極端狀況,例如:超過 100 個跨度的長時間運行的事務,以免 agent 和 APM server 過載。
當這種情況發生時,APM 將顯示丟棄的跨度數。
遺失的跨度(Missing spans)
agent 會將跨度與其事務分別傳送到 APM server,因此可能導致跨度遺失。
由於 agent 知道一個事務應該有多少跨度,如果預期跨度數不等於 APM server 接收到的跨度數,APM 應用程式將計算並顯示差異。
事務 Transactions
事務是一種特殊的跨度,兩者互相關聯 ,它們描述了由檢測服務的 Elastic APM Agent 捕獲的事件。
事務可以視為的最高級別的事件,例如請求伺服器回應、批次作業、背景執行的工作或自定義事務類型…等。
一個事務會包含:
-
- 事務的時間戳
-
- UID、type、name
-
- 事務發生時環境的資訊
-
- Service 的 environment、framework、language
-
- Host 的 architecture、hostname、IP
-
- Process 的 args、PID、PPID
-
- URL 的 full、domain、port、query
-
- User 的 email、ID、username
-
- 事務發生時環境的資訊
-
- 其他使用者自定義的欄位資訊
錯誤 Errors
當錯誤事件發生時,會產生包含錯誤當下的 exception 資訊或 Log。錯誤的資訊包含:
-
- 錯誤當下的 stack trace 會記錄在 exception、 log 中,可用於除錯
-
- culprit 表示錯誤的來源
-
- 與錯誤發生時相關的事務,紀錄在 transaction.id.
-
- 記錄錯誤當時環境的資訊:
-
- Service 的 environment, framework, language
-
- Host 的 architecture, hostname, IP
-
- Process 的 args, PID, PPID
-
- URL 的 full, domain, port, query
-
- User 的 email, ID, username
-
- 記錄錯誤當時環境的資訊:
-
- 其他使用者自定義的欄位資訊
指標 Metrics
APM Agent 會自動擷取基本的主機層級指標,如系統與 Process 層級的 CPU、記憶體使用情況。
此外,Agent 也能收集特定語言的指標,例如 Java Agent 的 JVM metrics、Go Agent 的 Go metrics。
Elastic APM 的應用場景
1、實現視覺化的分佈式追蹤
當一個 trace(軌跡)遍歷多個服務,從頭到尾追蹤某個請求(request),就稱為分佈式追蹤。
分佈式追蹤透過追蹤整個請求,來分析整個微服務架構的效能—從最一開始前端網站上的請求,一直到後端資料庫的查詢,具體來說可以找出應用程式在哪裡花費多少時間、在哪裡發生錯誤以及在哪裡形成效能瓶頸。
越來越多企業採用微服務架構,這些服務由不同團隊管理、使用不同程式語言、部署/運行在並不同的容器中。
因此了解不同服務拓撲的狀況和效能,對於解決問題和提高可靠性和效率是很重要的。
Elastic APM 支援分佈式追蹤,在一個視圖中分析整個微服務架構的效能。
APM UI 中的時間線可視化顯示了所連接的各個服務的所有事務的瀑布視圖:

APM UI 可深入追蹤應用程式,並檢視主機或容器的指標與日誌,加速找出問題根源。


2、真實用戶監控(RUM)
真實用戶監控 RUM(Real User Monitoring)需先安裝 Elastic Stack 與 Elastic APM 才能使用 (參考原廠文章)。
RUM 能收集前端用戶與 client 端(如網頁瀏覽器)的互動,協助我們從實際行為中了解使用者體驗,並據此優化效能。常見應用包括:
-
-
找出效能瓶頸,評估網站效能對使用者體驗的影響
-
透過 user agent 資訊,分析常用瀏覽器、裝置與平台,進而優化應用程式
-
結合地理位置與用戶效能數據,掌握全球各地網站表現
-
提供應用程式服務級別協議(SLA)的洞見與衡量依據
-
收集一段時間內的訪問與點擊行為,作為開發新功能的參考
-

結論
Elastic APM 是強大的監測工具,能即時追蹤應用程式與服務效能。
在高度分散的基礎架構中,APM 更能協助快速排除故障、管理效能、優化資源,確保服務穩定高效。
現在就啟用 Elastic APM,讓它成為你的監測助手,全面提升服務效能! 🚀
你可以下載 Elastic APM Server 在地端運行,也可以創建一個 Elastic Cloud 集群來試用。
歡迎 聯繫我們,或加入 歐立威 LINE 好友,了解更多產品資訊!