文章目录

  • 什么是APM
  • APM的组成
    • APM Agents
    • APM Server
    • Elasticsearch
    • Kibana
  • APM快速开始
    • 安装APM Server
    • APM Server 配置
  • docker快速安装

什么是APM

Elastic APM (application performance monitor)是一个应用性能监控系统,构建与Elastic Stack上(旧称ELK栈)。APM允许你去实时监控应用软件提供的服务,并会收集处理请求的响应时间数据库查询缓存调用外部HTTP请求等详细的性能信息,这使得查明和修复性能问题更加快速。同时APM也会自动收集未处理的异常和错误,在收集异常时异常基于栈追踪进行异常分组,因此你能够辨识新的异常出现,并能观察到异常特定异常的出现次数。

Metrics是另一个在生产环境下调试过程中重要的源信息,APM代理自动选取基础的主机级别指标和代理的指标,例如在Java Agent下JVM的指标,在Go Agent里Go runtime的指标。

Elastic APM is an application performance monitoring system built on the Elastic Stack. It allows you to monitor software services and applications in real time — collect detailed performance information on response time for incoming requests, database queries, calls to caches, external HTTP requests, and more. This makes it easy to pinpoint and fix performance problems quickly.Elastic APM also automatically collects unhandled errors and exceptions. Errors are grouped based primarily on the stacktrace, so you can identify new errors as they appear and keep an eye on how many times specific errors happen.Metrics are another important source of information when debugging production systems. Elastic APM agents automatically pick up basic host-level metrics and agent specific metrics, like JVM metrics in the Java Agent, and Go runtime metrics in the Go Agent.

APM的组成

Elastic APM 因为是基于Elastic Stack构建的,因此常规来说分为四个部分 APM Agents, APM Server, Elasticsearch, Kibana,接下来我们会分别对这四个组件(component)进行介绍,系统架构如下图:

APM Agents

APM agents 是与你的应用服务是同一种语言写的开源库,你可能只会使用一个,或者是全部语言的APM agents,您可以安装APM agents类库就想安装其他类库一样。APM agents会在运行时检测你的代码并收集性能数据和异常,这些数据会被短暂缓存发送到APM Server组件上。

APM agents分类有如下:

  • Go agent
  • Java agent
  • .NET agent
  • Node.js agent
  • Python agent
  • Ruby agent
  • JavaScript Real User Monitoring (RUM) agent

APM agents 拥有自动仪器支持的技术,并会记录其关注的事件,例如数据库查询和传入 HTTP 请求的事务范围,为此,它利用 JVM 检测类的字节码的能力,这意味着对于接受支持的技术,不需要更改代码。

默认情况下,每个传入一个 HTTP 请求,代码作用域的时间跨度(spans)在整个事务中是被分组的,不过也可以创建与 HTTP 请求不关联的自定义事务。事务和代码作用域范围将发送到 APM 服务器,在那里它们转换为适合 Elasticsearch 的格式,然后您可以使用 Kibana 中的 APM 应用深入了解应用程序中的延迟问题和错误罪魁祸首。

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。也就是事务具有原子性,一个事务中的一系列的操作要么全部成功,要么一个都不做。

APM Server

APM Server 是一个开源的应用,用于接收来自你APM agents发送的数据,它在设计时故意将其分离出一个组件,这样有助于保持代理的轻量级,并且能够有效防止一些安全风险,并能提高在 Elastic Stack 的兼容性。在APM Server处理和验证来自APM agents的事件后,APM Server将数据转换为Elasticsearcch中的文档,并存储这些文档在Elasticsearch的索引中,在几秒之内你就可以在Kibana的APM应用模块查看你的应用程序性能数据。APM的参考文档提供了你的一切需要,包括安装,配置,安全,监控等诸类需求。Agents 与 APM 兼容性点击此处

Elasticsearch

Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎。它允许您快速、实时地存储、搜索和分析大量数据。Elasticsearch用于存储 APM 性能指标并利用其聚合。

Kibana

Kibana 是一个开源分析和可视化平台,旨在与 Elasticsearch 一起使用。您可以使用 Kibana 搜索、查看和与存储在弹性搜索中的数据进行交互。
由于应用程序性能监视是所有关于可视化数据和检测瓶颈,因此了解如何在 Kibana 中使用 APM 应用程序至关重要。以下各节将帮助您入门

APM快速开始

如果你想要安装自己的 Elastic Stack 可以先查看 Elastic 产品支持版本的矩阵,可以事先了解其不同产品与操作系统的兼容性。我们推荐你使用与
Elasticsearch, Kibana, and APM Server 同一个版本号。
We recommend you use the same version of Elasticsearch, Kibana, and APM Server.

安装APM Server

# deb安装
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.9.0-amd64.deb
sudo dpkg -i apm-server-7.9.0-amd64.deb# RPM二进制安装
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.9.0-x86_64.rpm
sudo rpm -vi apm-server-7.9.0-x86_64.rpm# 解压缩包安装
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.9.0-linux-x86_64.tar.gz
tar xzvf apm-server-7.9.0-linux-x86_64.tar.gz# Mac系统安装
curl -L -O https://artifacts.elastic.co/downloads/apm-server/apm-server-7.9.0-darwin-x86_64.tar.gz
tar xzvf apm-server-7.9.0-darwin-x86_64.tar.gz

APM Server 配置

docker快速安装

version: '2.2'
services:apm-server:image: docker.elastic.co/apm/apm-server:7.9.0depends_on:elasticsearch:condition: service_healthykibana:condition: service_healthycap_add: ["CHOWN", "DAC_OVERRIDE", "SETGID", "SETUID"]cap_drop: ["ALL"]ports:- 8200:8200networks:- elasticcommand: >apm-server -e-E apm-server.rum.enabled=true-E setup.kibana.host=kibana:5601-E setup.template.settings.index.number_of_replicas=0-E apm-server.kibana.enabled=true-E apm-server.kibana.host=kibana:5601-E output.elasticsearch.hosts=["elasticsearch:9200"]healthcheck:interval: 10sretries: 12test: curl --write-out 'HTTP %{http_code}' --fail --silent --output /dev/null http://localhost:8200/elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.9.0environment:- bootstrap.memory_lock=true- cluster.name=docker-cluster- cluster.routing.allocation.disk.threshold_enabled=false- discovery.type=single-node- ES_JAVA_OPTS=-XX:UseAVX=2 -Xms1g -Xmx1gulimits:memlock:hard: -1soft: -1volumes:- esdata:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastichealthcheck:interval: 20sretries: 10test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"'kibana:image: docker.elastic.co/kibana/kibana:7.9.0depends_on:elasticsearch:condition: service_healthyenvironment:ELASTICSEARCH_URL: http://elasticsearch:9200ELASTICSEARCH_HOSTS: http://elasticsearch:9200ports:- 5601:5601networks:- elastichealthcheck:interval: 10sretries: 20test: curl --write-out 'HTTP %{http_code}' --fail --silent --output /dev/null http://localhost:5601/api/statusvolumes:esdata:driver: localnetworks:elastic:driver: bridge

执行 docker-compose up docker-compose将会下载官方docker镜像,并运行 Elasticsearch, Kibana, and APM Server.

Elastic Stack应用性能监控APM初窥门径相关推荐

  1. kibana服务器性能要求,kibana 性能监控 apm

    启动本地节点:nohup ./apm-server -c apm-server.yml -e weblogic 12 性能监控 修改 wls12213/user_projects/domains/ba ...

  2. 使用 Paessler PRTG 进行应用程序性能监控 (APM)

    首字母缩略词APM可以代表应用程序性能管理和应用程序性能监控.应用程序性能管理致力于检测和诊断复杂的应用程序性能问题,以维持预期的服务水平:它是"将 IT 指标转化为业务意义".在 ...

  3. Observability:使用 Elastic Agent 提取应用程序跟踪 - Elastic Stack 8.0

    在 Elastic Stack 8.0 之前,我们使用 APM server 来采集 Application Monitoring (APM) 数据.随着 Elastic Agent 在 8.0 的推 ...

  4. 小程序性能监控_通过应用程序性能管理升级监控

    小程序性能监控 APM入门 应用程序性能管理(APM)是对软件应用程序的可用性和性能的监视和管理. 不同的人对这个定义的理解不同,因此本文试图确定APM是什么,包括什么以及为什么对您的业务很重要. 如 ...

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

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 概述 Elastic APM 是基于 Elastic Stack 构建的应用性能监控系统.通 ...

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

    在今天的文章里,我们将介绍 Elastic 的一个重要的应用:应用程序性能管理(Application Performance Monitoring/Management),简称 APM.那么到底什么 ...

  7. 使用Elastic Stack做应用的360度全观察性监控

    文章目录 示例架构 事件分析和探索 APM 探索 Infra探索 Discovery探索 Service探索 总结 Elastic坚信,如果我们要监控企业的IT基础设施或者说完成整个软件的端到端的全链 ...

  8. 微信团队自研的APM利器,Matrix性能监控日志探索

    1 前言 2018年12月25日,微信团队自研的APM利器,Matrix正式开源了. https://github.com/tencent/matrix ❝ Matrix 是一款微信研发并日常使用的 ...

  9. ArchSummit深圳APM专场总结:性能监控与调优实践干货分享

    随着应用性能管理(APM)越来越被开发和运维人员所熟知,7月17日在深圳召开的ArchSummit 2015全球架构师峰会特开设应用性能管理专场,来自听云.腾讯和OPPO的讲师分享了他们在性能监控.管 ...

  10. Dockerfile配置APM监控实现Java容器的性能监控

    通过Dockerfile可以用来构建容器镜像,我们一般也是通过这种方式来构建一个Tomcat应用服务容器,如果要实现对容器中的Tomcat服务(或是其他Java应用)进行APM(应用性能管理)监控,就 ...

最新文章

  1. linux shell 替换字符串的几种方法,变量替换${},sed,awk
  2. Python2.7基础知识点思维导图
  3. SharePoint上传循环添加label并获取上传文件名字的扩展名和文件大小(Session[demo] = new ListLabel();方法实现)...
  4. CentOS - 修改主机名教程(将 localhost.localdomain 改成其它名字)
  5. Laravel 支付宝SDK在Laravel5的封装
  6. 简易的深度学习框架Keras代码解析与应用
  7. flink 1.9 编译: flink-shaded-asm-6 找不到
  8. Spring(1)—初识
  9. mysql使用已有的数据库_使用SQL操作MySQL数据库
  10. tf.global_variables_initializer()什么时候用?
  11. Mac 连不上华为 p9 处理历程(一)
  12. MYSQL--未提交(read uncommitted)、读已提交(read committed)和repeatable read(可重复读)
  13. 来来来,做几道「送命题」
  14. poj 1001 Exponentiation(java)
  15. 计算机Word多选题试题,计算机一级考试Word试题
  16. fluid 如何获取特定层的参数
  17. 基于JAVA小区智能停车位管理系统
  18. 中国大数据产业版图:东南沿海继续引领 独角兽扎堆北上深杭
  19. 工厂MES系统用Java写还是_制造企业都能使用MES系统吗?
  20. 佛说爱情三:一切皆流,无物永驻

热门文章

  1. 嵌入式开发-STM32硬件I2C驱动OLED屏
  2. 单片机——A/D数模转换篇
  3. python 调用word打开doc文档报错,“word无法启动转换器mswrd632.wpc”
  4. 编写第一个操作WORD文档的应用程序
  5. psp软件设计需求分析
  6. nltk英文词性分析
  7. 三创赛优秀作品_三创赛优秀作品.doc
  8. 3Idiots-2014-Kaggle 比赛源码走读
  9. XP下grub4dos硬盘安装和启动FreeBSD-8.0-i386+GNOME桌面
  10. android 多渠道覆盖,Android多渠道包