多語言應用性能監控系統:Elastic APM

多語言應用性能監控系統:Elastic APM

▶ 概述

Elastic APM 是基於 Elastic Stack 構建的應用性能監控系統。通過 Elastic APM 可以監控應用程序,收集有關請求的響應時間、數據庫查詢、高速緩存調用、外部 HTTP 請求等的詳細性能信息,這樣可以更快地查明並修復性能問題。

Elastic APM 還會自動收集未處理的錯誤和異常,錯誤主要基於堆棧跟蹤進行分組,因此可以識別出現的新錯誤,並密切關注特定錯誤發生的次數。

▶ APM 組件

Elastic APM 包含四個組件:

多語言應用性能監控系統:Elastic APM

APM agent

APM agent 是使用與服務相同的語言編寫的開源庫,可以像安裝其他庫一樣將它們安裝到服務中,agent 將檢測服務的代碼並在運行時收集性能數據和錯誤,這些數據緩衝一小段時間併發送到 APM server。

APM server

APM Server 是用 Go 編寫的開源應用程序,通常運行在專用服務器上,默認監聽端口 8200 ,並通過 JSON HTTP API 從 agent 接收數據,然後根據該數據創建文檔並將其存儲在 Elasticsearch 中。

Elasticsearch

Elasticsearch 是高可擴展的開源全文搜索和分析引擎,用於快速、近實時地存儲、搜索和分析大量數據。此處用於存儲 APM 性能指標並利用其聚合。

Kibana

Kibana 是開源的分析和可視化平臺,旨在與 Elasticsearch 協同工作,可以通過 Kibana 搜索、查看 Elasticsearch 中存儲的數據,此處用於可視化 Elasticsearch 中存儲的 APM 數據。

▶ 部署 APM Server

1、部署 Elasticsearch 和 Kibana

參考:使用 Docker 部署帶權限認證的 Elasticsearch

2、編輯 APM Server 配置文件 apm-server.yml

apm-server:
  host: "0.0.0.0:8200"

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  username: "admin"
  password: "Passw0rd"

更多配置參考:Config APM Server

3、部署 APM Server

docker run -d \
--name apm-server \
--link elasticsearch:elasticsearch \
-v `pwd`/apm-server.yml:/usr/share/apm-server/apm-server.yml \
-p 8200:8200 \
-e "TZ=Asia/Shanghai" \
docker.elastic.co/apm/apm-server:6.6.2

參考文檔:Running APM Server on Docker

▶ APM Agent

目前 APM Agent 支持如下語言:

  • Java:Servlet API、Spring MVC、Spring Boot
  • Node.js:Express、hapi、Koa、Restify
  • Go:Gorilla、Gin
  • Python:Django、Flask
  • Ruby:Rails
  • RUM(Real User Monitoring):捕獲用戶與客戶端的交互,例如:Web 瀏覽器

參考文檔:安裝和配置 APM Agents

▶ 示例:Spring Boot & APM Agent

1、下載 Java Agent 庫

下載地址:https://search.maven.org/search?q=a:elastic-apm-agent

2、啓動 Spring Boot 應用

spring-boot-demos/hello spring boot 項目作爲示例,使用 maven 打包後,通過如下命令啓動服務:

java \
-javaagent:/path/to/elastic-apm-agent-<version>.jar \
-Delastic.apm.service_name=my-cool-service \
-Delastic.apm.application_packages=org.example,org.another.example \
-Delastic.apm.server_urls=http://localhost:8200 \
-jar <app-name>.jar

輸出日誌類似如下代表 Agent 啓動成功:

2019-03-24 18:29:49.027 [apm-server-healthcheck] INFO co.elastic.apm.agent.report.ApmServerHealthChecker - Elastic APM server is available: {"ok":{"build_date":"2019-03-06T14:11:42Z","build_sha":"daad5449d758e7bf101f6482778a2b15f646a67f","version":"6.6.2"}}
2019-03-24 18:29:49.215 [main] INFO co.elastic.apm.agent.configuration.StartupInfo - Starting Elastic APM 1.4.0 as my-application on Java 1.8.0_172 (Oracle Corporation) Mac OS X 10.14.3
.........

3、任意訪問 Spring Boot 服務的地址,使 APM Agent 採集信息

> Kibana APM Dashboard

添加 APM 數據到面板

啓動 APM 面板

APM 服務列表

接口請求數據

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章