Skywalking⼊门介绍,skywalking6.5.0+mysql(windows)搭建
⼀. 介绍
1. 基本信息
SkyWalking 创建于2015年,提供分布式追踪功能。从5.x开始,项⽬进化为⼀个完成功能的Application Performance Monitoring系统。
他被⽤于追踪、监控和诊断分布式系统,特别是使⽤微服务架构,云原⽣或容积技术。提供以下主要功能:
分布式追踪和上下⽂传输
应⽤、实例、服务性能指标分析
根源分析
应⽤拓扑分析
应⽤和服务依赖分析
慢服务检测
性能优化
特点
性能好:针对单实例5000tps的应⽤,在全量采集的情况下,只增加 10% 的CPU开销
⽀持多语⾔探针
⽀持⾃动及⼿动探针:其中⼿动探针通过OpenTrackingApi、@Trace注解、trackId集成到⽇志中。
OpenTracing 规范
OpenTracing通过提供平台⽆关、⼚商⽆关的API,使得开发⼈员能够⽅便的添加(或更换)追踪系统的实现。OpenTracing提供了⽤于运营⽀撑系统的和针对特定平台的辅助程序库。程序库的具体信息请参考详细的规范。是⼀个轻量级的标准化层,它位于应⽤程序/类库和追踪或⽇志分析程序之间。
OpenTracing API
分布式追踪,也称为分布式请求追踪,是⼀种⽤于分析和监视应⽤程序的⽅法,特别是那些使⽤微服务
体系结构构建的应⽤程序,IT和DevOps团队可以使⽤分布式追踪来监视应⽤程序; 分布式追踪有助于查明故障发⽣的位置以及导致性能低下的原因,开发⼈员可以使⽤分布式跟踪来帮助调试和优化他们的代码。⼤多数分布式追踪系统的思想模型都来⾃Google's Dapper论⽂,OpenTracing也使⽤相似的术语
1. Trace 事物在分布式系统中移动时的描述
2. Span ⼀种命名的、定时的操作,表⽰⼯作流的⼀部分。Spans接受key:value标签以及附加到特定Span实例的细粒度、带时间戳的结构化⽇志
3. Span Contenxt 携带分布式事务的跟踪信息,包括当它通过⽹络或消息总线将服务传递给服务时。SPAN上下⽂包含Trace标识符、SPAN标识符和跟踪系统需要传播到下
游服务的任何其他数据
OpenTracing API提供了⼀个标准的、与供应商⽆关的框架,这意味着如果开发者想要尝试⼀种不同的分布式追踪系统,开发者只需要简单地修改Tracer配置即可,⽽不需要替换整个分布式追踪系统
OpenTracing由API规范(描述了语⾔⽆关的数据模型和Opentracing API指南)、实现该规范的框架和库以及项⽬⽂档组成,OpenTracing不是⼀个标准,OpenTracing API项⽬正致⼒于为分布式跟踪创建更加标准化的API和⼯具
2. SkyWalking的主要部分及其功能
SkyWalking主要由三⼤部分组成:Agent,Collector,Web;
Agent:作⽤是使⽤JavaAgent字节码增强技术将Agent的代码织⼊程序中,完成Agent⽆代码侵⼊地获取程序内⽅法的上下⽂并进⾏增强和收集信息并发送给Collector;与Collector进⾏⼼跳,表明Agent客户端的存活。
Collector:作⽤是维护存活的Agent实例,并收集从Agent发送⾄Collector的数据,进⾏处理及持久化;
Web:作⽤是将Collector收集的参数进⾏不同维度的展⽰
链路追踪的主要流程.png
下⾯是 SkyWalking 6.x 的架构图:
说明: SkyWalking 的核⼼是数据分析和度量结果的存储平台,通过 HTTP 或 gRPC ⽅式向 SkyWalking Collecter 提交分析和度量数据,SkyWalking Collecter 对数据进⾏分析和聚合,存储到 Elasticsearch、H2、MySQL、TiDB 等其⼀即可,最后我们可以通过 SkyWalking UI 的可视化界⾯对最终的结果进⾏查看。Skywalking ⽀持从多个来源和多种格式收集数据:多种语⾔的 Skywalking Agent 、Zipkin v1/v2 、Istio 勘测、Envoy 度量等数据格式。
整体架构看似模块有点多,但在实际上还是⽐较清晰的,主要就是通过收集各种格式的数据进⾏存储,然后展⽰。所以搭建 Skywalking 服务我们需要关注的是 SkyWalking Collecter、SkyWalking UI 和存储设备,SkyWalking Collecter、SkyWalking UI 官⽅下载安装包内已包含,最终我们只需考虑存储设备即可。
SW总体可以分为四部分:
1.Skywalking Agent:使⽤Javaagent做字节码植⼊,⽆侵⼊式的收集,并通过HTTP或者gRPC⽅式发送数据到Skywalking Collector。
2. Skywalking Collector :链路数据收集器,对agent传过来的数据进⾏整合分析处理并落⼊相关的数据存储中。
3. Storage:Skywalking的存储,时间更迭,sw已经开发迭代到了6.x版本,在6.x版本中⽀持以ElasticSearch、Mysql、TiDB、H2、作为存储介质进⾏数据存储。
4. UI :Web可视化平台,⽤来展⽰落地的数据。
Skywalking Agent配置
通过了解配置,可以对⼀个组件功能有⼀个⼤致的了解。让我们⼀起看⼀下skywalking的相关配置。
解压开skywalking的压缩包,在agent/config⽂件夹中可以看到agent的配置⽂件。
从skywalking⽀持环境变量配置加载,在启动的时候优先读取环境变量中的相关配置。
skywalking agent使⽤javaagent⽆侵⼊式的配合collector实现对分布式系统的追踪和相关数据的上下⽂传递。
Skywalking Collector关键配置
Collector⽀持集部署,zookeeper、kubernetes(如果你的应⽤是部署在容器中的)、consul(GO语⾔开发的服务发现⼯具)是sw可选的集管理⼯具,结合⼤家具体的部署⽅式进⾏选择。详细配置⼤家可以去Skywalking官⽹下载介质包进⾏了解。
Collector端⼝设置
downsampling: 采样汇总统计维度,会分别按照分钟、【⼩时、天、⽉】(可选)来统计各项指标数据。
通过设置TTL相关配置项可以对数据进⾏⾃动清理。
Skywalking 在6.X中简化了配置。collector提供了gRPC和HTTP两种通信⽅式。
UI使⽤rest http通信,agent在⼤多数场景下使⽤grpc⽅式通信,在语⾔不⽀持的情况下会使⽤http通信。
关于绑定IP和端⼝需要注意的⼀点是,通过绑定IP,agent和collector必须配置对应ip才可以正常通信。
Collector存储配置
在l中配置的storage模块配置中选择要使⽤的数据库类型,并填写相关的配置信息。
Collector Receiver
Receiver是Skywalking在6.x提出的新的概念,负责从被监控的系统中接受指标数据。⽤户完全可以参照OpenTracing规范来上传⾃定义的监控数据。Skywalking官⽅提供了service-mesh、istio、zipkin的相关能⼒。
现在Skywalking⽀持服务端采样,配置项为sampleRate,⽐例采样,如果配置为5000则采样率就是50%。
关于采样设置的⼀点注意事项
关于服务采样配置的⼀点建议,如果Collector以集⽅式部署,⽐如:Acollector和Bcollector,建议Acollector.sampleRate = Bcollector.sampleRate。如果采样率设置不相同可能会出现数据丢失问题。
假设Agent端将所有数据发送到后端Collector处,A采样率设置为30%,B采样率为50%。
假设有30%的数据,发送到A上,这些数据被全部正确接受并存储,极端情况(与期望的采样数据量相同)下,如果剩下20%待采样的数据发送到了B,这个时候⼀切都是正常的,如果这20%中有⼀部分数据被送到了A那么,这些数据将是被忽略的,由此就会造成数据丢失。
⼆、业务调⽤链路监控
Service Topology监控
调⽤链路监控可以从两个⾓度去看待。我们先从整体上来认识⼀下我们所监控的系统。
通过给服务添加探针并产⽣实际的调⽤之后,我们可以通过Skywalking的前端UI查看服务之间的调⽤关系。
我们简单模拟⼀次服务之间的调⽤。新建两个服务,service-provider以及service-consumer,服务之间简单的通过Feign Client 来模拟远程调⽤。
从图中可以看到:
有两个服务节点:provider & consumer
有⼀个数据库节点:localhost【mysql】
⼀个注册中⼼节点
consumer消费了provider提供出来的接⼝。
⼀个系统的拓扑图让我们清晰的认识到系统之间的应⽤的依赖关系以及当前状态下的业务流转流程。细⼼的可能发现图⽰节点consumer上有⼀部分是红⾊的,红⾊是什么意思呢?
红⾊代表当前流经consumer节点的请求有⼀断时间内是响应异常的。当节点全部变红的时候证明服务现阶段内就彻底不可⽤了。运维⼈员可以通过Topology迅速发现某⼀个服务潜在的问题,并进⾏下⼀步的排查并做到预防。
Skywalking Trace监控
Skywalking通过业务调⽤监控进⾏依赖分析,提供给我们了服务之间的服务调⽤拓扑关系、以及针对每个endpoint的trace记录。
我们在之前看到consumer节点服务中发⽣了错误,让我们⼀起来定位下错误是发⽣在了什么地⽅⼜是什么原因呢?安装mysql失败

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。