1、主要目标

考虑接入应用性能监控主要想解决以下问题:

  • 分布式链路追踪
  • 应用级别性能监控(jvm等)
  • 低侵入

2、选型

方案 cat zipkin pinpoint skywalking
依赖 Java 6 7 8、Maven 3+ MySQL 5.6 5.7、Linux 2.6+ hadoop可选 Java 6,7,8 Maven3.2+ rabbitMQ Java 6,7,8 maven3+ Hbase0.94+ Java 6,7,8 maven3.0+ nodejs zookeeper elasticsearch
实现方式 代码埋点(拦截器,注解,过滤器等) 拦截请求,发送(HTTP,mq)数据至zipkin服务 java探针,字节码增强 java探针,字节码增强
存储 mysql , hdfs in-memory , mysql , Cassandra , Elasticsearch HBase elasticsearch , H2
jvm监控 不支持 不支持 支持 支持
trace查询 支持 支持 需要二次开发 支持
stars 5.5k 9.1k 6.5k 4k
侵入 高,需要埋点 高,需要开发
部署成本 较高

基于对应用尽可能的低侵入考虑,以上方案选型优先级pinpoint>skywalking>zipkin>cat。

3、原理

基于我们的选型,重点关注pinpoint和skywalking。

3.1 google dapper 主流的分布式调用链跟踪技术大都和google dapper相似。简单介绍下dapper原理:

span 基本工作单元,一次链路调用(可以是RPC,DB等没有特定的限制)创建一个span,通过一个64位ID标识它,uuid较为方便,span中还有其他的数据,例如描述信息,时间戳,key-value对的(Annotation)tag信息,parent_id等,其中parent-id可以表示span调用链路来源。

上图说明了span在一次大的跟踪过程中是什么样的。Dapper记录了span名称,以及每个span的ID和父ID,以重建在一次追踪过程中不同span之间的关系。如果一个span没有父ID被称为root span。所有span都挂在一个特定的跟踪上,也共用一个跟踪id。 trace 类似于 树结构的Span集合,表示一次完整的跟踪,从请求到服务器开始,服务器返回response结束,跟踪每次rpc调用的耗时,存在唯一标识trace_id。比如:你运行的分布式大数据存储一次Trace就由你的一次请求组成。

每种颜色的note标注了一个span,一条链路通过TraceId唯一标识,Span标识发起的请求信息。树节点是整个架构的基本单元,而每一个节点又是对span的引用。节点之间的连线表示的span和它的父span直接的关系。

整体部署结构:

  • 通过AGENT生成调用链日志。
  • 通过logstash采集日志到kafka。
  • kafka负责提供数据给下游消费。
  • storm计算汇聚指标结果并落到es。
  • storm抽取trace数据并落到es,这是为了提供比较复杂的查询。比如通过时间维度查询调用链,可以很快查询出所有符合的traceID,根据这些traceID再去 Hbase 查数据就快了。
  • logstash将kafka原始数据拉取到hbase中。hbase的rowkey为traceID,根据traceID查询是很快的。

3.2 pinpoint

3.3 skywalking

以上几种方案数据采集端都采用了字节码增强技术,原理如下:

在类加载的过程中,执行main方法前,会先执行premain方法来加载各种监控插件,从而在运行时实现整个链路的监控。

4、部署

下面重点介绍pinpoint部署,目前我们线上是集群部署,整体架构如下:

机器 部署应用
master zookeeper,hadoop,hbase,pinpoint-collector
node1 zookeeper,hadoop,hbase
node2 zookeeper,nginx,hadoop,hbase,pinpoint-web,pinpoint-collector

搭建pinpoint线上用了三台服务器,master、node1、node2。应用数据采集端agent-client将采集到的数据通过udp发送到部署在node2的nginx,通过负载均衡分流到两台pinpoint-collector服务器,落库通过hadoop集群master节点负载均衡到两台hbase服务器上。

4.1 编译

pinpoint编译条件比较苛刻,需要jdk6,7,8环境。

4.2 hbase

集群部署,需要先搭建hadoop集群,hbase集群。搭建完成后初始化表,执行 ./hbase shell /pinpoint-1.7.2/hbase/scripts/hbase-create.hbase,可以根据自己对历史数据的需求设置表的ttl时间。

4.3 pinpoint-web

/pinpoint-1.7.2/web/target/pinpoint-web-1.7.2.war拷贝到tomcat webapps目录下 修改tomcat目录/webapps/pinpoint-web-1.7.2/WEB-INF/classes/hbase.properties hbase配置启动

4.4 pinpoint-collector

/pinpoint-1.7.2/collector/target/pinpoint-collector-1.7.2.war拷贝到tomcat webapps目录下,修改tomcat目录/webapps/pinpoint-collector-1.7.2/WEB-INF/classes/hbase.properties和pinpoint-collector.properties配置并启动

4.5 agent

将/pinpoint-1.7.2/agent整个目录拷贝到应用服务器指定目录下修改/agent/target/pinpoint-agent-1.7.2/pinpoint.config配置业务应用启动时增加参数-javaagent:/root/agent/target/pinpoint-agent-1.7.2/pinpoint-bootstrap-1.7.2.jar -Dpinpoint.agentId=application01 -Dpinpoint.applicationName=application

具体集群部署可以参考: blog.csdn.net/yue530tomto…

需要注意: 默认配置的日志级别是DEBUG,会产生海量日志,要将其修改成INFO级别

5、功能简介

首页能看到应用的拓扑信息,接口调用的成功失败数,响应时间等。

可以查看具体的某一次请求的整个调用链路信息 可以查看jvm相关信息 针对某个慢请求,我们可以通过pinpoint跟踪整个调用链,从而定位慢在哪里。

应用性能监控(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. 小程序性能监控_通过应用程序性能管理升级监控

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

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

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

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

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

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

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

  7. Android apm监控框架,移动性能监控 SDK 详细集成文档

    移动性能监控 SDK 详细集成文档 一. Gradle配置 在 Project 的 build.gradle 文件中添加ArgusAPM的相关配置,示例如下: 在项目根目录的 build.gradle ...

  8. APPDynamics APM性能监控软件

    一.软件介绍 APPDynamics 是一款APM性能监控软件,可用于监控和管理服务器.虚拟机.数据库等运行情况. 二.软件使用 1.基础架构 App agent : tomcat agent,用于监 ...

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

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

  10. 阿里云产品专家解读链路追踪(Tracing Analysis)和应用性能监控(APM)的联系和区别

    阿里云上最近推出了一款新产品链路追踪 ,专注于帮助开发者快速分析和诊断分布式应用架构下的性能瓶颈,提高微服务时代下的开发诊断效率,并省去用户搭建各类链路监控应用(Jaeger, Zipkin等)和相关 ...

最新文章

  1. 微生物群落来自哪里,我们说了算-FEAST or SourceTracker
  2. [20150113]关于oracle的存储结构.txt
  3. android xml 文件里面的宽度Match_Parent 被 替换成了wrap_content
  4. 比较Visual Studio中的两个文件
  5. python decode()函数 (使用登记用于编码的编解码器解码字节)
  6. HDU - 1223 DP 分类
  7. vue 常用ui组件
  8. calendar前推n天_Shell获取ES3天的索引列表进行迁移操作
  9. windows怎么将图片变为单色图片_印刷丨单色黑与四色黑
  10. vc可以实现对话框里显示html文档内容,也可以显示word内容吗,VC6中使用CHtmlView在对话框控制中显示HTML文档...
  11. LeetCode 208. Implement Trie (Prefix Tree)
  12. perl JSON与HASH 互相转换
  13. 力特usb转232驱动程序下载_电脑USB接口、U盘接口不能使用的原因及解决方法
  14. 小米蓝牙驱动_小米降噪项圈蓝牙耳机:随时随地享受奢侈静谧空间
  15. 开发实战:舍得网44587行代码开发经验
  16. 装完金蝶电脑无限重启_电脑一直自动重启的原因与解决方法
  17. MySQL数据库下.frm .MYD .MYI损坏恢复操作——筑梦之路
  18. python一行输入两个数据中间用空格隔开
  19. MATLAB绘制雷达图并导出矢量图到Visio编辑(论文用图)
  20. 如何将您的iPhone更新到最新的iOS版本

热门文章

  1. MSE, R2, R等误差指标
  2. 世界地球日——“珍爱地球 人与自然和谐共生”主题知识竞赛
  3. 自由意志与人的存在状态——贯彻生化奇兵系列的两个命题
  4. miui12超级壁纸怎么设置?
  5. 页面嵌套iframe
  6. 看下玫琳凯公司怎么介绍自己
  7. Spring框架——AOP入门笔记以及个人总结
  8. 软件测试中如何区分问题是属于前端还是后端?
  9. Swift截取字符串
  10. 20221216:sigmastar系列1-222D硬件DIVP加速接口使用