Skywalking微服务监控分析


Skywalking微服务监控分析

文章插图
 
转载本文需注明出处:微信公众号EAWorld,违者必究 。
引言:微服务框架落地后,分布式部署架构带来的问题就会迅速凸显出来 。服务之间的相互调用过程中,如果业务出现错误或者异常,如何快速定位问题?如何跟踪业务调用链路?如何分析解决业务瓶颈?...本文我们来看看如何解决以上问题 。
目录:一、SkyWalking初探
二、业务调用链路监控
三、服务性能指标监控
四、服务告警
一、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支持环境变量配置加载,在启动的时候优先读取环境变量中的相关配置 。
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端口设置
Skywalking微服务监控分析

文章插图
 
downsampling: 采样汇总统计维度,会分别按照分钟、【小时、天、月】(可选)来统计各项指标数据 。
通过设置TTL相关配置项可以对数据进行自动清理 。
Skywalking 在6.X中简化了配置 。collector提供了gRPC和HTTP两种通信方式 。
UI使用rest http通信,agent在大多数场景下使用grpc方式通信,在语言不支持的情况下会使用http通信 。
关于绑定IP和端口需要注意的一点是,通过绑定IP,agent和collector必须配置对应ip才可以正常通信 。
Collector存储配置
在Application.yml中配置的storage模块配置中选择要使用的数据库类型,并填写相关的配置信息 。
Skywalking微服务监控分析

文章插图
 
Collector Receiver
Receiver是Skywalking在6.x提出的新的概念,负责从被监控的系统中接受指标数据 。用户完全可以参照OpenTracing规范来上传自定义的监控数据 。Skywalking官方提供了service-mesh、istio、zipkin的相关能力 。
Skywalking微服务监控分析

文章插图
 
现在Skywalking支持服务端采样,配置项为sampleRate,比例采样,如果配置为5000则采样率就是50% 。
关于采样设置的一点注意事项
关于服务采样配置的一点建议,如果Collector以集群方式部署,比如:Acollector和Bcollector,建议Acollector.sampleRate = Bcollector.sampleRate 。如果采样率设置不相同可能会出现数据丢失问题 。


推荐阅读