APM程序性能监控

 

APM 程序性能监控

 

image-20200429204247517

什么是APM?

Application Performance Monitoring

中文直译:应用程序性能监控,是对企业的应用系统进行实时监控,它是用于实现对应用程序性能管理和故障管理的系统化的解决方案

一般地包括内容有应用控制、链路追踪、故障排查

 

各大厂商的调用链追踪工具

市面上常见的或者说调用链追踪工具有?

  • Dapper(Google) : 各 tracer 的基础 未开源

  • StackDriver Trace (Google)

  • Zipkin(twitter)

  • Appdash(golang)

  • 鹰眼(taobao) 未开源

  • 谛听(盘古,阿里云云产品使用的Trace系统)

  • 云图(蚂蚁Trace系统)

  • sTrace(神马)

  • X-ray(aws)

  • CAT(大众点评)

  • skywalking (华为)开源

  • ES APM (Elastic)开源

  • Naver Pinpoint

  • Uber-jaeger

    image-20200429205102169

     

方案对比

 pinpointzipkinjaegerskywalkingElastic APM
OpenTracing兼容
客户端支持语言java、phpjava,c#,go,php等java,c#,go,php等Java, .NET Core, NodeJS and PHPJava,.NET,GO,Nodejs,python,ruby,javascript
存储hbaseES,mysql,Cassandra,内存ES,kafka,Cassandra,内存ES,H2,mysql,TIDB,sharding sphereES
传输协议支持thrifthttp,MQudp/httpgRPChttp
ui丰富程度
实现方式-代码侵入性字节码注入,无侵入拦截请求,侵入拦截请求,侵入字节码注入,无侵入字节码注入,无侵入
扩展性
trace查询不支持支持支持支持支持
告警支持支持不支持不支持支持支持
jvm监控支持不支持不支持支持支持
性能损失

 

分布式追踪链基本实现原理

1,

image-20200429203403333

2,

image-20200429203428707

 

3,

image-20200429203518436

4,

image-20200429203549242

5,

image-20200429203612222

6,

image-20200429203645673

7,

image-20200429203709332

8,

image-20200429203742318

9,

 

image-20200429203859579

 

 

10,

其实span块内除了记录这几个参数之外,还可以记录一些其他信息,

比如发起调用服务名称、被调服务名称、返回结果、IP、调用服务的名称等,

最后,我们再把相同spanid的信息合成一个大的span块,就完成了一个完整的调用链

image-20200429203923618

 

 

openTrancing数据模型

Git OpenTracing简介

 

image-20200426131559479

 

 

image-20200426125335421

 

image-20200426125520993

 

选用 Skywalking 、Elastic APM

1,基础设施

ElasticSearch (ES) kibana(数据分析展示UI)

目前使用的版本

  • elasticsearch-7.5.1
  • kibana-7.5.1

elasticsearch安装与使用

https://linpxing.cn/elk-evn-build/

kibana安装与使用

https://linpxing.cn/elk-install-kibana-7-5-1/

 

Skywalking

文档帮助:skywalking doc

版本:apache-skywalking-apm-es7-6.6.0 (支持集群部署)

安装:

注意 config目录为 agent的配置文件目录

image-20200429224145646

一般要关注的文件为 log4j2.xml (日志) application.yml(skywalking 代理配置)

修改存储使用es7,ip端口号为可更改

 

代理配置

1,准备代码的jar

下载skywalking安装包的时候,安装包里会带着agent部分

解压后的文件目录如下

image-20200429223705344

cd agent #目录如下

image-20200429223802604

 

以下为支持的插件

image-20200429225736340

集成的钩子

image-20200429225857541

 

config/agent.conf

 

skywalking-agent.jar 为tomcat或者要监控的应用要使用的jar包 如果是监控别的平台,则会对应的语言的类库

logs: 为日志存放目录

一般会将agent copy到要用的服务器的目录直接进行引用

 

2,修改 tomcat-x/bin/catalina.sh

 

3,启动应用

4,查看数据是否正常流通

 

5,可能会遇到的问题

 

Skywalking UI相关页面的截图

 

 

 

image-20200426130100634

 

image-20200426130316926

 

skywalking log4j plugin:

image-20200426144221563

 

ES APM

版本:apm-server-7.6.1

安装使用:

get start doc: https://www.elastic.co/guide/en/apm/get-started/7.5/index.html

 

安装好kibana后,kibana的管理后台有安装指引的入口

image-20200430085359217

 

image-20200430085046988

image-20200430085113433

apm-server的配置 文件:

 

apm-server.yml

 

image-20200430085143591

 

image-20200430085216942

java代理使用的版本:

elastic-apm-agent-1.15.0.jar

 

代码集成:

https://www.elastic.co/guide/en/apm/get-started/7.5/configure-apm.html

image-20200430100104839

 

 

帮助页面

配置参数指引:

https://www.elastic.co/guide/en/apm/agent/java/1.x/configuration.html

核心参数:

https://www.elastic.co/guide/en/apm/agent/java/1.x/config-core.html

手动配置参数:

https://www.elastic.co/guide/en/apm/agent/java/1.x/setup-javaagent.html

 

tomcat集成:文件目录: tomcat-x/bin/setnev.sh

 

apm的开销及性能调优:

https://www.elastic.co/guide/en/apm/agent/java/1.x/tuning-and-overhead.html

 

Elastic APM 版本对应代理版本的支持

https://www.elastic.co/guide/en/apm/get-started/7.6/agent-server-compatibility.html

 

 

ES 常用的查询

 

入场请求:

http://192.168.9.93:5601/app/apm#/services/82-apm-test-8001/transactions/view?rangeFrom=now-5m&rangeTo=now&refreshPaused=true&refreshInterval=0&traceId=edcf21c378b32dab5b9e595efbf9492a&transactionId=d253d0ea234f0db3&transactionName=iParkCloudBee_DataFilter&transactionType=request&flyoutDetailTab=&waterfallItemId=

扫码支付请求:

http://192.168.9.93:5601/app/apm#/services/82-apm-test-8001/transactions/view?rangeFrom=now-5m&rangeTo=now&refreshPaused=true&refreshInterval=0&traceId=d9e826c0e2dd21c6aaaea201d8e63fb8&transactionId=c7b27c5a96b93da8&transactionName=iParkCloudBee_DataFilter&transactionType=request&flyoutDetailTab=&waterfallItemId=

岗亭手动匹配订单:

http://192.168.9.93:5601/app/apm#/services/82-apm-test-8001/transactions/view?rangeFrom=now-5m&rangeTo=now&refreshPaused=true&refreshInterval=0&traceId=6a35dbfacd36ce4b2fdc05c694286dcf&transactionId=1a8dbfeff434dedb&transactionName=iParkCloudBee_DataFilter&transactionType=request&flyoutDetailTab=&waterfallItemId=

月卡扫码续费:

http://192.168.9.93:5601/app/apm#/services/82-apm-test-8001/transactions/view?rangeFrom=now-30h&rangeTo=now&refreshPaused=true&refreshInterval=0&traceId=c0a83496bc73538183ecd87256ff4fb5&transactionId=9dec083051030ae4&transactionName=iParkCloudBee_ReDirectFilter&transactionType=request&flyoutDetailTab=&waterfallItemId=

扫码支付回调报错:

http://192.168.9.93:5601/app/apm#/services/82-apm-test-8001/transactions/view?rangeFrom=now-30h&rangeTo=now&refreshPaused=true&refreshInterval=0&traceId=38d3969d293902c935615f6be7f59d6f&transactionId=e6991a653a1ef3a7&transactionName=iParkCloudBee_ReDirectFilter&transactionType=request&flyoutDetailTab=&waterfallItemId=

扫码支付回调成功:

http://192.168.9.93:5601/app/apm#/services/82-apm-test-8001/transactions/view?rangeFrom=now-10m&rangeTo=now&refreshPaused=true&refreshInterval=0&traceId=27164f7b393f992cb4433cc86e08d533&transactionId=d73fd6f23c393df3&transactionName=iParkCloudBee_ReDirectFilter&transactionType=request&flyoutDetailTab=&waterfallItemId=

 

 

ES APM

image-20200429174353638

 

image-20200430125503328

 

 

image-20200429200104506

 

image-20200429200130213

 


0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注