1.APM简介
1.1.概述
1、APM全称Application Performance Management应用性能管理,目的是通过各种探针采集数据,收集关键指标,同时搭配数据呈现以实现对应用程序性能管理和故障管理的系统化解决方案。
2、APM系统更重视程序内部执行过程指标和服务之间链路调用情况的监控,更有利于深入代码找到请求响应“慢”的根本问题。
3、目前市面上开源的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking,公司采用的是SkyWalking。
4、SkyWalking包含:
(1)Service
表示一组/一组工作负载,它们为传入的请求提供相同的行为。您可以在使用仪器代理或 SDK 时定义服务名称。SkyWalking 也可以使用您在 Istio 等平台中定义的名称。
(2)Service Instance
服务组中的每个单独的工作负载称为一个实例。就像pods在 Kubernetes 中一样,它不需要是单个 OS 进程,但是,如果您使用的是仪器代理,则实例实际上是一个真正的 OS 进程。
(3)Endpoint
传入请求的服务路径,例如 HTTP URI 路径或 gRPC 服务类 + 方法签名。
SkyWalking采用组件式开发,易于扩展,主要组件作用如下:
(1)Skywalking Agent:采集tracing(调用链数据)和metric(指标)信息并上报,上报通过HTTP或者gRPC方式发送数据到Skywalking Collector。
(2)Skywalking Collector :链路数据收集器,对agent传过来的tracing和metric数据进行整合分析通过Analysis Core模块处理并落入相关的数据存储中,同时会通过Query Core模块进行二次统计和监控告警。
(3)Storage:Skywalking的存储,支持以ElasticSearch、Mysql、TiDB、H2等作为存储介质进行数据存储。
(4)UI:Web可视化平台,用来展示落地的数据,目前官方采纳了RocketBot作为SkyWalking的主UI。
下载SkyWalking https://skywalking.apache.org/downloads/
目录结构:
1、Webapp: UI前端(web监控界面)的jar包和配置文件
2、oap-libs:后台应用的jar包,以及他的依赖jar包,里面有一个server-starter-*jar就是启动程序
3、config:启动后台应用程序的配置文件,是使用的各种配置
4、bin:各种启动脚本,windows系统使用startup*来启动web页面和对应的后台应用
5、Agent: skywalking-agent.jar:代理服务jar包
config:代理服务启动时使用的配置文件
plugins:包含多个插件,代理服务启动时会加载该目录下所有插件
optinal-plugins:可选插件,当需要支持某种功能时,可以把对应的jar拷贝到plugins下
启动服务
bin目录下双击startup.bat,会弹出一个服务窗口和一个webapp窗口。为防止端口冲突,建议进入webapp目录下的webapp.yml,修改服务端口,再启动服务。默认端口为8080。
启动成功后会启动两个服务,skywalking-oap-server和skywalking-web-ui,skywalking-oap-serve服务启动后会暴露11800和12800两个端口,分别为收集监控数据的端口11800和接受前端请求的端口12800。
logs目录下会产生启动日志,详细信息可进入logs查看。
通过浏览器访问:localhost:8080,即可看到skywalking的UI界面。
在项目中使用SkyWalking(IDEA运行项目)
1、测试以单个maven项目测试。
2、在运行的程序配置jvm参数(多个服务需分别配置):
-javaagent:D:\apache-skywalking-apm-es7-8.5.0\apache-skywalking-apm-bin-es7\agent\skywalking-agent.jar
-DSW_AGENT_NAME=springboot-skywalking-demo
-DSW_AGENT_COLLECTOR_BACKEND_SERVICES=192.168.2.198:11800
参数1:指定agent.jar所在位置
参数2:指定启动的服务名称
参数3:指定aollector连接地址
注:-DSW_AGENT_COLLECTOR_BACKEND_SERVICES可以指定远程地址,但是-javaagent必须绑定本机物理路径的skywalking-agent.jar
启动后,调用服务接口或功能,即可看到详细数据。
4.使用MySQL持久化跟踪数据
SkyWalking默认使用H2数据库存储,即保存在内存中。通过访问config目录下的application.yml文件可修改存储位置:
修改后重启服务日志会报错:没有mysql驱动,需要自己准备数据库驱动添加到oap-libs目录下,再次启动便可成功。
skywalking追踪数据便持久化到本地数据库中了,下次启动skywalking便可观察到以前的追踪数据。.