目录
Skywalking介绍
Skywalking架构
Skywalking安装
Skywalking使用
Skywalking配置
Skywalking数据持久化
Skywalking告警
-
Skywalking介绍
Apache Skywalking是一个开源的应用性能监控(Application Performance Monitoring,APM)工具,它提供了实时的、端到端的、基于跟踪的应用程序性能监测。Apache Skywalking是一个跨语言、跨平台的解决方案,支持Java、.NET、Go、Node.js等多种语言,可以在各种不同的部署环境中使用。
-
Skywalking架构
1、Tracing、Metrics:负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器;
2、SkyWalking UI:负责提供页面控制台,查看链路、告警等信息;
3、SkyWalking OAP:负责接收Agent发送的Tracing数据信息,然后进行分析(Analysis Core),存储到外部存储器(Storage),还提供查询(Query)功能;
4、Storage:数据存储,目前支持ES、MySQL、Sharding Sphere、TiDB、H2多种存储器,目前采用较多的是ES;
-
Skywalking安装
安装步骤如下:
1、官网下载Index of /dist/skywalking apache-skywalking-apm-6.6.0.zip(本文以6.6.0版本在windows环境为例讲解)
2、解压apache-skywalking-apm-6.6.0.zip
3、启动skywalking
cd D:\software\apache-skywalking-apm-bin\bin
startup.bat
4、验证skywalking
http://localhost:8090/ 端口默认8080,更改为8090(D:\software\apache-skywalking-apm-bin\webapp\webapp.yml)
-
Skywalking使用
本文介绍基于java agent的方式使用skywalking。
使用步骤如下:
1、准备好后台服务,本文以decoration-1.0.jar项目为例讲解
2、将apache-skywalking-apm-bin中的agent目录拷贝到另外一个地方,示例拷贝到D:\software\agent
3、修改D:\software\agent\config\agent.config文件,修改服务名称:
agent.service_name=decoration
4、给应用增加skywalking监控
java -javaagent:D:\software\agent\skywalking-agent.jar -jar decoration-1.0.jar
5、应用decoration请求一些接口,测试skywalking监控,从下图可以看出接口已经被监控到。
-
Skywalking配置
1、设置skywalking采样率:默认值是全部采样,在高并发的环境下,全采样会影响应用的性能,建议设置一定的采样率 ,示例:每隔3秒采样3条数据(D:\software\agent\config\agent.config)
agent.sample_n_per_3_secs=3
2、设置获取mysql的语句的参数信息:默认值是false(D:\software\agent\config\agent.config)
plugin.mysql.trace_sql_parameters=true
3、查看controller--service--db完整链路执行耗时
将optional-plugins\apm-spring-annotation-plugin-6.6.0.jar拷贝到D:\software\agent\plugins文件下即可,测试效果如下:可以看到从controller层到数据库执行层的完整链路耗时
-
Skywalking数据持久化
skywalking数据默认持久化到H2数据库中,实际项目中,数据往往持久化到ES或mysql中,示例演示skywalking数据持久化到mysql(本文用的mysql版本是5.7)中,步骤如下:
1、修改D:\software\apache-skywalking-apm-bin\config\application.yml
storage节点下注释H2的配置,添加mysql的配置,配置如下:
2、mysql连接包mysql-connector-java-5.1.41.jar拷贝到D:\software\apache-skywalking-apm-bin\oap-libs目录中
3、再次启动skywalking,然后发起请求,观察mysql发现,skywalking数据已经落入到mysql中。
-
Skywalking告警
在实际项目中,需要对应用的相关性能指标进行配置,当指标超过阈值时,需要对外发布告警,让项目的管理者及时收到告警信息并处理。
skywalking的告警规则设置在alarm-settings.yml(D:\software\apache-skywalking-apm-bin\config)中,默认的告警规则如下:
1、过去3分钟内服务平均响应时间超过1秒
2、服务成功率在过去2分钟内低于80%
3、服务90%响应时间在过去3分钟内高于1000毫秒
4、服务实例在过去2分钟内的平均响应时间超过1秒
5、端点平均响应时间过去2分钟超过1秒
如果要设置新的告警规则,参考上图文本修改即可,其中metrics-name在official_analysis.oal文件中约定。配置的告警规则一旦触发,会在skywalking告警栏显示,如下图:
在实际项目中,当触发了告警规则后,需要立即通知相关管理者,skywalking通过webhooks功能实现了通知的效果:
当告警规则触发时,webhooks下方的url地址就会执行,实际项目中将地址发布成专门处理告警信息服务,在服务内部通过邮件或者短信的方式发送给项目管理者。
如果希望告警规则支持动态修改配置,引入Nacos配置管理器可以实现,步骤如下:
1、修改D:\software\apache-skywalking-apm-bin\config\application.yml,配置nacos地址
2、在nacos中配置告警规则,如下图:
3、发送接口测试,观察skywalking的告警栏已修改为nacos中的配置