zoukankan      html  css  js  c++  java
  • 多语言应用性能监控系统: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

    添加 APM 数据到面板

    启动 APM 面板

    APM 服务列表

    接口请求数据

  • 相关阅读:
    关于CSDN指针讨论的心得
    VC++ 6.0 与VS2008 C++ DEBUG工具(Windows)介绍
    VC++ 申明静态变量的注意事项
    大家好,我是新的blue1000~
    [讨论]当我采用动态sql绑定datagrid分页的时候,遇到的问题
    我与Google有个对话
    [BK专访]一切以客户为中心,其它一切纷至沓来
    [译]在.net中使用GDI+来提高gif图片的保存画质
    微软能不能别这样坑爹啊,即使不中毒,也伤不起啊
    长见识!1021字节javascript写成的3D圣诞树
  • 原文地址:https://www.cnblogs.com/anoyi/p/11278361.html
Copyright © 2011-2022 走看看