skywalking链路监控8.1.0集群安装及性能测试.docx
《skywalking链路监控8.1.0集群安装及性能测试.docx》由会员分享,可在线阅读,更多相关《skywalking链路监控8.1.0集群安装及性能测试.docx(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、skywalking链路监控8.1.0集群安装及性能测试kywalking链路监控1、 kywalking ,概述请求链路追踪,故障快速定位:可以通过调用链结合业务日志快速定位错误信息。可视化:各个阶段耗时,进行性能分析。依赖优化:各个调用环节的可用性、梳理服务依赖关系以及优化。数据分析,优化链路:可以得到用户的行为路径,汇总分析应用在很多业务场景1.1 系统概述APM (Application Performance Management) 即应用性能管理系统,是对企业系统即时监控以实现 对应用程序性能管理和故障管理的系统化的解决方案。应用性能管理,主要指对企业的关键业务应用进 行监测、优化
2、,提高企业应用的可靠性和质量,保证用户得到良好的服务,降低IT总拥有成本。APM系统是可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。1.2 分 布式链路追踪随着分布式系统和微服务架构的出现,一次用户的请求会经过多个系统,不同服务之间的调用关系十分 复杂,任何一个系统出错都可能影响整个请求的处理结果。以往的监控系统往往只能知道单个系统的健 康状况、一次请求的成功失败,无法快速定位失败的根本原因。1 .主流的开源产品SkyWalkingSkyWalking是apache基金会下面的一个开源APM项目,为微服务架构和云原生架构系统设计。它通过探针自动收集所
3、需的指标,并进行 分布式追踪。通过这些调用链路以及指标,Skywalking APM会感知应用间关系和服务间关系,并进行相应的指标统计。Skywalking支持 链路追踪和监控应用组件基本涵盖ZipkinZipkin是由Twitter开源,是分布式链路调用监控系统,聚合各业务系统调用延迟数据,达到链路调用监控跟踪。Zipkin基于Google的 Dapper论文实现,主要完成数据的收集、存储、搜索与界面展示。PinPointPinpoint是由一个韩国团队实现并开源,针对Java编写的大规模分布式系统设计,通过JavaAgent的机制做字节代码植入,实现加入 traceid和获取性能数据的目的
4、,对应用代码零侵入。CATCAT是由大众点评开源的项目,基于Java开发的实时应用监控平台,包括实时应用监控,业务监控,可以提供十几张报表展示。2 kywalking 原理.1 a a原理n使用Skywalking去监控服务,需要在其VM参数中添加“-2.1.1、 Java agent 是什么?Java agent是java命令的一个参数。参数javaagent可以用于指定一个jar包。1 .这个jar包的MANIFEST.MF文件必须指定Premain-Class项。2 . Premain-Class指定的那个类必须实现premain()方法。当Java虚拟机启动时,在执行main函数之前,
5、JVM会先运行-javaagent所指定jar包内Premain- Class这个类的premain方法。2.1.2、 如何使用java agent?使用java agent需要几个步骤:1,定义一个 MANIFEST.MF 文件,必须包含 Premain-Class 选项,通常也会加入Can-Rfidee- Classes 和 Can-Retransform- Classes 选项。2 .创建一个Premain-Class指定的类,类中包含premain方法,方法逻辑由用户自己确定。3 . 将 premain 的类和 MANIFEST.MF 文件打成 jar 包。4 .使用参数-javaag
6、ent: jar包路径启动要代理的方法。*示例代码*import net.bytebuddy.agent.builder.AgentBuilder;import net.bytebuddy.description.method.MethodDescription;import net.bytebuddy.description.type.TypeDescription;import net.bytebuddy.dynamic.DynamicType;import net.bytebuddy.implementation.MethodDelegation;import net.bytebuddy
7、.matcher.ElementMatchers;import net.bytebuddy.utility.JavaModule;import java.lang.instrument.Instrumentation;public class PreMainAgent public static void premain(String agentArgs, Instrumentation inst) 方法执行System.out.println(agentArgs);类中提供两个静态方法,方法名均为premain,不能拼错 在pom文件中添加打包插件maven-assembly-pluginf
8、alsejar-with-dependenciestruePreMainAgentPreMainAgenttruetruemake-assemblypackagesingle 该插件会在自动生成META-INF/MANIFEST.MF文件时,帮我们添加agent相关的配置信息。使用maven的package命令进行打包:2.1.3、统计方法调用时间Skywalking中对每个调用的时长都进行了统计,使用ByteBuddy和Java agent技术来统计方法的调用时长。Byte Buddy是开源的、基于Apache 2.0许可证的库,它致力于解决字节码操作和instrumentation API
9、的复杂性。Byte Buddy所声称的 目标是将显式的字节码操作隐藏在一个类型安全的领域特定语言背后。通过使用Byte Buddy,任何熟悉Java编程语言的人都有望非常容易 地进行字节码操作。Byte Buddy提供了额外的API来生成Java agent,可以轻松的增强我们已有的代码。添加依赖:net.bytebuddybyte-buddynet.bytebuddybyte-buddy-agent修改PreMainAgent代码public class PreMainAgent public static void premain(String agentArgs, Instrumenta
10、tion inst) 创建一个转换器,转换器可以修改类的实现/ByteBuddy对java agent提供了转换器的实现,直接使用即可AgentBuilder.Transformer transformer = new AgentBuilder.Transformer() public DynamicType.Builder transform(DynamicType.Builder builder, TypeDescription typeDescription, ClassLoader classLoader, JavaModu le javaModule) return builder/
11、拦截任意方法.method(ElementMatchers.any()/拦截到的方法委托给TimeInterceptor.intercept(MethodDelegation.to(MyInterceptor.class); ;new AgentBuilder / Byte Buddy专门有个 AgentBuilder 来处理 Java Agent 的场景 .Default。/根据包名前缀拦截类/拦截到的类由transformer处理.transform(transformer).installOn(inst);先生成一个转换器,ByteBuddy提供了java agent专用的转换器。通过实
12、现Transformer接口利用builder对象来创建一个转换器。转换器 可以配置拦截方法的格式,比如用名称,本例中拦截所有方法,并定义一个拦截器类Mylnterceptor。public class MyInterceptor RuntimeTypepublic static Object intercept(Origin Method method, SuperCall Callable callable) throws Exception long start = System.currentTimeMillis();try /执行原方法return callable.call();
13、finally , , /打印调用时长MyInterceptor就是一个拦截器的实现,统计的调用的时长。参数中的method是反射出的方法对象,而callable就是调用对象,可以通过 callable.callO方法来执行原方法。3、Skywalking 环境搭建3.1 软件准备软件包版本已经上传140Gitlabapache-skywalking-apm-8.1.0.tar.gzhttp:/39.100.254.140:12011/loit-Infrastructure-doc/loit-initproject-doc/tree/master/3%E3%80%81other/%E9%9B%
14、86%E6%88%90loit%E9%97%A8%E6%88 %B7/skywalking/8.1.0/apache-skywalking-apm-8.1.0.tar.gz将以上三个软件包上传至服务器/usr/local/src/路径下3.2 安装Skywalking服务端解压安装包cd /usr/local/srctar -zxvf apache-skywalking-apm-8.1.0.tar.gzmv apache-skywalking-apm-bin skywalkingmv skywalking/ /usr/local/修改配置文件vim /usr/local/skywalking/
15、config/application.yml1、其中修改:selector与clusterNodesstorage:selector: $SW_STORAGE:elasticsearchelasticsearch:clusterNodes: $SW_STORAGE_ES_CLUSTER_NODES:172.16.203.79:9200,172.16.203.78:9200,172.16.203.79:92002、其中gRPCHost改成本机服务器IPcore:selector: $SW_CORE:defaultdefault:gRPCHost: $SW_CORE_GRPC_HOST:172.1
16、6.203.772、其中存储为esstorage:selector: $SW_STORAGE:elasticsearchelasticsearch:clusterNodes: $SW_STORAGE_ES_CLUSTER_NODES:172.16.203.77:9200,172.16.203.78:9200,172.16.203.79:9200collector 集群分别在一下3台服务器启动collector :172.16.203.76172.16.203.77 172.16.203.78cd /usr/local/skywalking/bin/sh oapService.shdashboa
17、rd配置及启动在其中一台172.16.203.76配置及其启动vim /usr/local/skywalking/webapp/webapp.yml修改端口号server.port与listOfServers (根据实际情况修改)server:port: 8051collector:path: /graphqlribbon:ReadTimeout: 10000# Point to all backends restHost:restPort, split by ,listOfServers: 172.16.203.76:12800,172.16.203.77:12800,172.16.203.
18、78:12800启动dashboard:cd /usr/local/skywalking/bin/sh webappService.sh服务端产生的日志路径/usr/local/skywalking/logs停止skywalking# 关闭 skywalking webps -ef|grep skywalking-webappkill -9 pid注意skywalking默认会使用(8080, 10800, 11800, 12800)端口,前面已经把8080修改为80513.3 安装Skywalking agent 端实际开发时候,每一个jar包获取应用都应该单独使用一个agent,所以将ag
19、ent这个目录拷贝到各自对应的上包路径下。核心部分的目录信息如下:|activations|config| 1agent.config| logs| 1skywalking-api.log|optional-plugins|plugins1skywalking-agent.jar上传skywalking并解压cd /usr/local/srctar -zxvf apache-skywalking-apm-8.1.0.tar.gzmv apache-skywalking-apm-bin skywalkingmv skywalking/ /usr/local/添加gateway plugin 插件
20、cd /usr/local/skywalking/agent/optional-pluginscp apm-spring-cloud-gateway-2.0.x-plugin-8.1.0.jar /usr/local/skywalking/agent/plugins/设置好参数后,对于Java应用,添加核心的-javaagent进行启动-javaagent:/usr/local/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=loit-gateway -Dskywalking.collector.bac
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- skywalking 监控 8.1 集群 安装 性能 测试
限制150内