1.背景知识
Application Performance Management是什么?
维基百科:
In the fields of information technology and systems management, Application Performance Management (APM) is the monitoring and management of performance and availability of software applications. APM strives to detect and diagnose complex application performance problems to maintain an expected level of service. APM is “the translation of IT metrics into business meaning ([i.e.] value).”
APM监控和管理软件应用的性能和可用性,探测和诊断复杂的应用性能问题。
APM 理论框架:
APM的鼻祖是Google Dapper
英文版paper: http://research.google.com/pubs/pub36356.html
中文翻译版: http://bigbully.github.io/Dapper-translation/
国外工具列表:
ZIPKIN: https://github.com/openzipkin/zipkin
pinpoint:https://github.com/naver/pinpoint
appdash: https://github.com/sourcegraph/appdash
国内工具列表:
阿里的鹰眼介绍: http://club.alibabatech.org/resource_detail.htm?topicId=102
点评的cat: https://github.com/dianping/cat
京东的hydra(不维护): https://github.com/odenny/hydra
还有个商业化的oneAPM。
本文以naver的pinpoint为例,搭建一套自己的APM平台。
2.pinpoint介绍
Pinpoint provides a solution to help analyze the overall structure of the system and how components within them are interconnected by tracing transactions across distributed applications.
Install agents without changing a single line of code
Minimal impact on performance (approximately 3% increase in resource usage)
Pinpoint能帮助分析整个系统架构,在分布式应用中通过追踪事务解释系统组件间是怎么进行连接的。
Pinpoint架构图:
Pinpoint由4部分组成:
1.Pinpoint Agent, 2. Pinpoint Collector, 3. HBase, 4.Pinpoint Web UI
其中2,4必须启web容器。
Pinpoint使用了字节码增强技术,在类加载时,注入到观察的应用Class文件中。
所以在启动应用时,必须设置-javaagent为Pinpoint的agent。
目前Pinpoint支持的模块:
JDK 6+
Tomcat 6/7/8, Jetty 8/9
Spring, Spring Boot
Apache HTTP Client 3.x/4.x, JDK HttpConnector, GoogleHttpClient, OkHttpClient, NingAsyncHttpClient
Thrift Client, Thrift Service
MySQL, Oracle, MSSQL, CUBRID, DBCP, POSTGRESQL
Arcus, Memcached, Redis
iBATIS, MyBatis
gson, Jackson, Json Lib
log4j, Logback
3.安装Pinpoint
因为Pinpoint依赖JDK6,7,8; 所以必须配置JDK6,7,8环境变量
在/etc/profile 添加:
JAVA_6_HOME="/data1/hugang/jdk1.6.0_45"
export JAVA_6_HOME
JAVA_7_HOME="/usr/local/jdk"
export JAVA_7_HOME
JAVA_8_HOME="/data1/hugang/jdk1.8.0_71"
export JAVA_8_HOME
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 1
- 2
- 3
- 4
- 5
- 6
- 7
#source /etc/profile
- 1
- 1
拷贝工程:
# git clone https://github.com/naver/pinpoint.git
- 1
- 2
- 3
- 1
- 2
- 3
本地安装:
# mvn install -Dmaven.test.skip=true
- 1
- 2
- 1
- 2
安装期间报错
报错info:
[ERROR] /data3/pinpoint/pinpoint-1.5.1/commons-hbase/src/main/java/com/navercorp/pinpoint/common/hbase/HbaseTemplate2.java:[303,22] error: cannot access CellScannable
[ERROR] /data3/pinpoint/pinpoint-1.5.1/commons-hbase/src/main/java/com/navercorp/pinpoint/common/hbase/PooledHTableFactory.java:[82,29] error: cannot access TableName
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
解决办法:
mvn install:install-file -Dfile=/data3/pinpoint/pinpoint-master/lib/zookeeper-3.4.5-cdh5.4.0.jar -DgroupId=org.apache.zookeeper -DartifactId=zookeeper -Dversion=3.4.5-cdh5.4.0 -Dpackaging=jar -DcreateChecksum=true
mvn install:install-file -Dfile=/data3/pinpoint/pinpoint-master/lib/mariaDB4j-2.1.3.jar -DgroupId=ch.vorburger.mariaDB4j -DartifactId=mariaDB4j -Dversion=2.1.3 -Dpackaging=jar -DcreateChecksum=true
mvn install:install-file -Dfile=/data3/pinpoint/pinpoint-master/lib/hbase-client-1.0.0-cdh5.4.0.jar -DgroupId=org.apache.hbase -DartifactId=hbase-client -Dversion=1.0.0-cdh5.4.0 -Dpackaging=jar -DcreateChecksum=true
mvn install:install-file -Dfile=/data3/pinpoint/pinpoint-master/lib/hbase-0.90.3.jar -DgroupId=org.apache.hbase -DartifactId=hbase -Dversion=0.90.3 -Dpackaging=jar -DcreateChecksum=true
/data3/pinpoint/pinpoint-1.5.1/commons-hbase/pom.xml新增
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-core</artifactId>
<version>1.2.1</version>
</dependency>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
HBase可以自己安装,也可以直接使用工程的脚本(建议使用脚本):
Download & Start - Run quickstart/bin/start-hbase.sh
Initialize Tables - Run quickstart/bin/init-hbase.sh
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
部署Collector端:
将pinpoint-collector-1.5.1.war部署到你的web容器下,我的配置:/data3/tomcat8-Collector port:18080
部署Web UI端:
将pinpoint-web-1.5.1.war部署到你的web容器下,我的配置:/data3/tomcat8-Web port:28080
打开前端: http://10.210.228.50:28080
这时还没有被测试应用,本文以tomcat容器为例, 在bin/catalina.sh中添加:
#pinpoint agent路径
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/data1/hugang/pinpoint/pinpoint-agent-1.5.1/pinpoint-bootstrap-1.5.1.jar"
#被监控工程使用agent的标识号
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=0000002"
#被监控工程名字
CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=10.75.0.101_8086_自定义"
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
并且需修改pinpoint-agent的配置文件/data1/hugang/pinpoint/pinpoint-agent-1.5.1/pinpoint.config,指定pinpoint Collector的ip
profiler.collector.ip=10.210.228.50
- 1
- 1
启动被测试服务,访问该服务。
4.查看数据
这时查看Pinpoint web UI,左上下拉框选择你的应用:
4.1 trace 链路分析
圈中你想查看这次访问的链路信息,圈中右上访问时间散列图中的某个点(一个点代表一次访问)
4.2 性能数据
http://blog.csdn.net/neven7/article/details/51043307
相关推荐
该统一监控平台主要关注于**日志监控**、**方法监控**、**调用链路监控**三大核心领域,并结合先进的大数据技术如Flume、Kafka、Spark和Elasticsearch,以确保高效、准确的数据采集与分析能力。此外,还计划集成自研...
Pinpoint是一款强大的全链路分布式追踪系统,专为大型企业级分布式应用程序设计。它提供无侵入式的调用链监控,能够深入到应用程序的方法执行细节,帮助开发者和运维人员理解系统内部的工作流程。此外,Pinpoint还...
除了基本的监控功能,Pinpoint 还支持自定义插件,以便扩展到特定的应用框架和库,如Spring、MyBatis等。此外,它还可以与其他监控工具如Prometheus、ELK(Elasticsearch, Logstash, Kibana)集成,提供更丰富的监控...
最后,`plugin`目录存放的是Pinpoint的插件,它们用于监控特定的应用框架,如Spring、MyBatis等。每个插件都针对性地收集框架内的关键性能指标,提供详细的调用链路信息。 总结起来,pinpoint-1.7.3版本提供了全面...
Pinpoint 是一个强大的分布式追踪系统,专为大型分布式应用程序设计,尤其在微服务架构中,它提供了全面的性能监控和问题诊断能力。 Pinpoint-Agent-2.0.4.tar.gz 是该系统的特定版本,用于安装和配置在目标服务器上...
1. **调用链跟踪**:Pinpoint能够生成完整的调用链路,展示服务间的依赖关系,帮助开发者了解请求在系统中的流转过程,快速定位性能瓶颈。 2. **性能指标监控**:Pinpoint可以收集各种性能指标,如CPU使用率、内存...
随着微服务架构的流行,分布式链路追踪也蓬勃发展起来,出现了许多有名的产品,如 Jaeger、Pinpoint、Zipkin、Skywalking 等等。 二、OpenTracing 和 OpenCensus 在分布式链路追踪领域,出现了两个重要的标准:...
3. **插件支持**:Pinpoint 支持多种常用框架和服务的自动监控,如 Spring、Dubbo、Hadoop 等。 4. **丰富的可视化**:通过 Web UI 展示调用拓扑图和性能指标,直观易懂。 在 Pinpoint-1.8.x 中,我们主要关注以下...
#### 全链路监控行业介绍 随着微服务架构的普及,传统的单体应用被分解成了众多独立的服务单元,每个服务单元可能由不同的团队负责,使用不同的编程语言和技术栈实现,并且部署在成千上万台服务器上,甚至跨越多个...
它能够帮助开发者追踪和监控应用程序中的每一个请求,通过收集调用链路上的服务性能数据,使得开发者能够快速定位到导致问题的具体服务或调用路径。 在分布式系统中,前端向后台发起的一个查询请求可能会涉及多个...
5. **插件支持**:Pinpoint 提供了大量的插件,支持Spring、MyBatis、Hibernate 等常见框架,无需修改代码即可实现监控。 6. **Web UI**:通过直观的Web界面,用户可以查看各种图表和报告,了解系统的整体健康状况...
- **调用链追踪**:Pinpoint-Agent能够生成完整的请求调用链路,清晰展示服务间的依赖关系,帮助快速定位问题。 - **性能指标监控**:包括CPU使用率、内存消耗、线程状态、数据库查询等关键性能指标。 - **异常...
# 基于Spring Boot和Redis的分布式秒杀系统 ## 项目简介 本项目是一个基于Spring Boot框架和Redis缓存的分布式秒杀系统。...5. 数据采集监控通过Pinpoint、Grafana等工具对系统进行实时监控,确保系统的稳定运行。
分布式链路追踪作为一种重要的监控手段,能够帮助开发者更好地理解系统内部的行为,快速定位问题所在,从而提高系统的稳定性和用户体验。 #### 二、分布式链路追踪的重要性 1. **故障快速定位**:通过收集并分析一...
1. JVM兼容:Pinpoint与Java虚拟机(JVM)深度集成,无需修改代码即可对Java应用进行监控,支持Spring、Hibernate等常见框架。 2. Pinpoint-Agent:在Java应用启动时,通过Pinpoint-Agent注入监控代码,实现对应用...
SkyWalking 的性能对比测试结果表明,在三种链路监控组件中,SkyWalking 的探针对吞吐量的影响最小,Zipkin 的吞吐量居中,Pinpoint 的探针对吞吐量的影响较为明显。在 CPU 和内存的影响方面,三个组件的影响都...
可以引入监控工具如Zipkin或Pinpoint,收集调用链路信息,进行性能分析和调优。 9. **版本兼容性** 在分布式系统中,服务升级可能导致接口变化,需要考虑版本兼容性问题。可以通过版本号来区分不同的服务接口,...
常见的调用链路追踪工具有Zipkin、Jaeger和Pinpoint等,它们都支持Java环境,并提供SDK用于集成到项目中。 计时器(Timer)则是用来测量代码执行时间的工具,对于性能分析和优化非常有用。Java内置的`java.util....