Skywalking微服务监控分析
引⾔:
微服务框架落地后,分布式部署架构带来的问题就会迅速凸显出来。服务之间的相互调⽤过程中,如果业务出现错误或者异常,如何快速定位问题?如何跟踪业务调⽤链路?如何分析解决业务瓶颈?...本⽂我们来看看如何解决以上问题。
分布式和微服务的关系⽬录:
⼀、SkyWalking初探
⼆、业务调⽤链路监控
三、服务性能指标监控
四、服务告警
⼀、SkyWalking初探
Skywalking 简介
Skywalking是⼀款国内开源的应⽤性能监控⼯具,⽀持对分布式系统的监控、跟踪和诊断。
它提供了如下的主要功能特性:
Skywalking 技术架构
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⽀持环境变量配置加载,在启动的时候优先读取环境变量中的相关配置。
agent.namespace: 跨进程链路中的header,不同的namespace会导致跨进程的链路中断
agent.service_name:⼀个服务(项⽬)的唯⼀标识,这个字段决定了在sw的UI上的关于service的展⽰名称
agent.sample_n_per_3_secs: 客户端采样率,默认是-1代表全采样
agent.authentication: 与collector进⾏通信的安全认证,需要同collector中配置相同
agent.ignore_suffix: 忽略特定请求后缀的trace
collecttor.backend_service: agent需要同collector进⾏数据传输的IP和端⼝
logging.level: agent记录⽇志级别
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那么,这些数据将是被忽略的,由此就会造成数据丢失。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论