多语言应用性能监控系统:Elastic APM

? 概述

Elastic APM 是基于 Elastic Stack 构建的应用性能监控系统。通过 Elastic APM 可以监控应用程序,收集有关请求的响应时间、数据库查询、高速缓存调用、外部 HTTP 请求等的详细性能信息,这样可以更快地查明并修复性能问题。

Elastic APM 还会自动收集未处理的错误和异常,错误主要基于堆栈跟踪进行分组,因此可以识别出现的新错误,并密切关注特定错误发生的次数。

? 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

原文地址:https://blog.51cto.com/11337732/2417864

时间: 2024-07-28 14:03:12

多语言应用性能监控系统:Elastic APM的相关文章

[转载]前端数据之美 -- 七天打造前端性能监控系统

开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot improve it” ———— William Thomson 这是一个最基本的问题,为什么要关注和监控前端性能?对于公司来说,性能在一定程度上与利益直接相关.国外有很多这方面的调研数据: 性能 收益 Google 延迟 400ms 搜索量下降 0.59% Bin

7 天打造前端性能监控系统

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im

7 天打造前端性能监控系统(转)

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im

性能监控系统的搭建(转)

引言 前阵子在w3ctech的走进名企 - 百度前端 FEX 专场上曾“夸下海口”说听完讲座后七天就可以打造自己的前端性能监控系统,既然说出去了也不能食言.从前一篇文章前端数据之美相信大家对前端数据有了一定的了解,下面就针对其中的性能数据及其监控进行详细阐述. 开始行动 本文中的性能主要指 web 页面加载性能,对性能还不了解?不用担心,接下来的“每一天”跟我一起进入前端性能的世界. Day 1 为什么要监控性能? “If you cannot measure it, you cannot im

前端性能监控系统ShowSlow

作者:zhanhailiang 日期:2014-11-14 1. 简介 ShowSlow是开源的前端性能监控系统,提供了以下功能: 前端性能指标数据收集功能:ShowSlow原生提供了数据收集工具DOM Monster!,但也支持通过YSlow,PageSpeed等第三方工具将性能数据上报给服务端完成收集(其服务器端提供了针对多达8种不同工具上报的数据收集器dommonster,dynatrace,events,har,metric,pagespeed,webpagetest,yslow): 前

实用|从0到1 搭建Web性能监控系统

工具介绍 1. Statsd 是一个使用Node开发网络守护进程,它的特点是通过UDP(性能好,及时挂了也不影响主服务)或者TCP来监听各种数据信息,然后发送聚合数据到后端服务进行处理. 常见支持的「Graphite」,「ElasticaSearch」,「InfluxDB」 等等 ,它集成了各种语言的客户端API,这里我们使用了jsocol/pystatsd: A Python client for statsd进行数据收集. 2. Graphite 是一套Python写的开源编程接口,主要是用

Elasticsearch and kibana and filebeat 轻量级日志监控系统

Elasticsearch and kibana and filebeat Elasticsearch and kibana and filebeat 轻量级日志监控系统 说明: elasticsearch 依赖java Logstash 依赖于JVM,内存消耗比较高 filebeat go语言轻量级日志监控系统 安装 elasticsearch-6.2.3.tar.gz filebeat-6.2.3-linux-x86_64.tar.gz kibana-6.2.3-linux-x86_64.t

前端性能监控

前端性能 1.关键点 分页面.区域.浏览器.性能指标 页面的性能指标详解: 白屏时间(first Paint Time)——用户从打开页面开始到页面开始有东西呈现为止 首屏时间——用户浏览器首屏内所有内容都呈现出来所花费的时间 用户可操作时间(dom Interactive)——用户可以进行正常的点击.输入等操作,默认可以统计domready时间,因为通常会在这时候绑定事件操作 总下载时间——页面所有资源都加载完成并呈现出来所花的时间,即页面 onload 的时间 确定统计起点: 我们需要在用户

Elastic:应用程序性能监控/管理(APM)实践

在今天的文章里,我们将介绍Elastic的一个重要的应用:应用程序性能管理(Application Performance Monitoring/Management),简称APM.那么到底什么是APM呢? 随着时代的发展,我们的IT架构越来越复杂,比如: 我们系统的服务器越来越多,而且更多的设备都部署在云端.复杂的系统甚至有成千个微服务及架构所组成,那么我们的业务请求可能需要一个或更多的服务共同来完成.那么现在的问题是,如果我们的请求变得很慢,我们想知道到底是哪个环节出现问题了呢?经验丰富的程