论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
DevOps与敏捷开发
›
专为云原生、微服务架构而设计的链路追踪工具 【SkyWalk ...
专为云原生、微服务架构而设计的链路追踪工具 【SkyWalking介绍及搭建】 ...
伤心客
金牌会员
|
2022-6-26 01:53:46
|
显示全部楼层
|
阅读模式
楼主
主题
797
|
帖子
797
|
积分
2391
文章目录
前言. 当前企业级分布式微服务集群架构图
一. skywalking是什么
二. 为什么需要服务追踪
三 链路追踪框架对比
3.1 性能对比
四. 链路追踪的实际应用预览
4.1 捋清业务
4.2 分析耗时
4.3 可视化错误
4.4 优化链路
4.5 生成网络拓扑
4.6 SkyWalking 主要功能特性
五. 使用Docker安装部署SkyWalking
5.1 查看官网版本
5.1 拉取镜像
5.1.1 尝鲜版
5.1.2 稳定版
5.1.3 备份镜像
5.2 docker-compose 启动SkyWalking
5.2.1 docker-compose的安装
5.2.2 编写SkyWalking的docker-compose文件
5.2.3 测试SkyWalking的UI界面
六 总结
前言. 当前企业级分布式微服务集群架构图
服务链路追踪已成为不可或缺的一环
一. skywalking是什么
skywalking是一个优秀的
国产
开源框架,2015年由个人
吴晟
(华为开发者)开源 , 2017年加入apache 孵化器。
skywalking是分布式系统的应用
程序性能监视工具
,专为微服务、云原生架构和基于容器化技术
(docker、K8s、Mesos)架构而设计,它是一款优秀的
APM
(Application Performance Management)工具。skywalking是观察性分析平台和应用性能管理系统。提供分布
式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
二. 为什么需要服务追踪
在微服务架构下,由于进行了服务拆分,一次请求往往需要涉及多个服务,每个服务可能是由不同的团队开发,使用了不同的编程语言,有可能部署在不同的机器上,分布在不同的数据中心。服务跟踪系统可以跟踪记录一次用户请求都发起了哪些调用,经过哪些服务处理,并且记录每一次调用所涉及的服务的详细信息,通过查看完整的调用链路,形成拓补图可以更加直观的了解业务,也可以针对当前的系统进行分析,是否需要扩容、优化接口、失败缓解,还有通过日志快速定位是调用失败的环节。
SkyWalking专门为微服务架构和云原生架构系统而设计并且支持分布式链路追踪的APM系统。
SkyWalking通过加载探针的方式收集应用调用链路信息,并对采集的调用链路信息进行分析,生成应用间关系和服务间关系以及服务指标。Apache SkyWalking (Incubating)目前支持多种语言,其中包括Java,.Net Core ,Node.js和Go语言。
目前skywalking已经支持从
6个可视化维度
剖析分布式系统的运行情况。
总览视图是应用和组件的全局视图,其中包括组件
应用数量
,
应用的告警波动
,慢服务列表以及应用吞吐量;
拓扑图
从应用依赖关系出发,展现整个应用的拓扑关系;
应用视图
则是从单个应用的角度,展现应用的上下游关系,TopN的服务和服务器,JVM的相关信息以及对应的主机信息。
服务视图
关注单个服务入口的运行情况以及此服务的上下游依赖关系,依赖度,帮助用户针对单个服务的优化和监控;调用链展现了调用的单次请求经过的所有埋点以及每个埋点的执行时长;
告警视图
根据配置阈值针对应用、服务器、服务进行实时告警。
SkyWalking中默认使用的端口有8080、11800、12800,请保证这些端口未被占用 。
三 链路追踪框架对比
Zipkin是Twitter开源的调用链分析工具,目前基于springcloud sleuth得到了广泛的使用,特点是轻量,使用部署简单。
Pinpoint是韩国人开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能强大,接入端无 代码侵入。
SkyWalking是本土开源的基于字节码注入的调用链分析,以及应用监控分析工具。特点是支持多种插件,UI功能较强,接入端 无代码侵入。目前已加入Apache孵化器。
CAT是大众点评开源的基于编码和配置的调用链分析,应用监控分析,日志采集,监控报警等一系列的监控平台工具。
3.1 性能对比
模拟了三种并发用户:500,750,1000。使用jmeter测试,每个线程发送30个请求,设置思考时间为10ms。使用的采样率为1,即 100%,这边与生产可能有差别。pinpoint默认的采样率为20,即50%,通过设置agent的配置文件改为100%。zipkin默认也是1。组合 起来,一共有12种。下面看下汇总表:
从上表可以看出,在三种链路监控组件中,
skywalking的探针对吞吐量的影响最小,zipkin的吞吐量居中。pinpoint的探针对吞吐量的 影响较为明显
,在500并发用户时,测试服务的吞吐量从1385降低到774,影响很大。然后再看下CPU和memory的影响,在内部服务器 进行的压测,对CPU和memory的影响都差不多在10%之内。
四. 链路追踪的实际应用预览
4.1 捋清业务
我们都知道,在一般场景下,我们很难直观的了解系统的运行、业务的流程,因为传统的都是文字需求说明和枯燥的代码。通过链路追踪,可以根据调用链路来捋清楚服务间的调用关系,如果 API 设计符合规范,甚至可以直观的了解调用的服务作用。这对于刚刚接触系统的开发人员十分重要。
4.2 分析耗时
链路的基本功能,服务间的调用耗时记录,如果服务耗时过长,会影响整体的用户体验,甚至会抛出超时异常等,这样的情况在微服务架构中也是时有发生。
4.3 可视化错误
微服务调用链路发生错误,可以直观的显示查看,定位到被调用服务的接口,及时排查微服务中错误原因。
4.4 优化链路
显示完整的调用链路,根据业务分析合理性、可读性、健壮性,是否重复调用某一个服务,是否链路过长,有没有可以优化的,链路是否清晰。有些场景比较复杂,比如数据中心比较分散,服务分布在不同的数据中心,但是服务中心之间因为地域原因,距离远,延迟高,这可能不符合设计要求,因此就要根据链路来找到最近的数据中心,然后配置调用最近的数据中心的服务。
4.5 生成网络拓扑
通过服务追踪系统中记录的链路信息,可以生成一张系统的网络调用拓扑图,它可以反映系统都依赖了哪些服务,以及服务之间的调用关系是什么样的,可以一目了然。除此之外,在网络拓扑图上还可以把服务调用的详细信息也标出来,也能起到服务监控的作用。
4.6 SkyWalking 主要功能特性
多种监控手段,可以通过语言探针和service mesh获得监控的数据;
支持多种语言自动探针,包括 Java,.NET Core 和 Node.JS;
轻量高效,无需大数据平台和大量的服务器资源;
模块化,UI、存储、集群管理都有多种机制可选;
支持告警;
优秀的可视化解决方案;
五. 使用Docker安装部署SkyWalking
5.1 查看官网版本
官网:
http://skywalking.apache.org/
下载:
http://skywalking.apache.org/downloads/
Github:
https://github.com/apache/skywalking/
文档:
https://skywalking.apache.org/docs/main/v8.4.0/readme/
中文文档:
https://skyapm.github.io/document-cn-translation-of-skywalking/
从官网可以看出 最新版本已经9.0版本了,但是我们使用es作为存储最好是使用明确存储了方式的版本 8.7.0
5.1 拉取镜像
5.1.1 尝鲜版
docker pull elasticsearch:7.12.0
默认es存储数据镜像
docker pull apache/skywalking-oap-server:8.7.0-es7
webUI界面镜像
docker pull apache/skywalking-ui:8.7.0
制作微服项目镜像
docker pull openjdk:8-alpine3.9
复制代码
5.1.2 稳定版
docker pull elasticsearch:7.9.0
默认es存储数据镜像
docker pull apache/skywalking-oap-server:8.1.0-es7
webUI界面镜像
docker pull apache/skywalking-ui:8.1.0
制作微服项目镜像
docker pull openjdk:8-alpine3.9
复制代码
5.1.3 备份镜像
最新版:
docker save apache/skywalking-oap-server:8.7.0-es7 apache/skywalking-ui:8.7.0 elasticsearch:7.12.0 -o skywalking8.7.0.tar
稳定版:
docker save apache/skywalking-oap-server:8.1.0-es7 apache/skywalking-ui:8.1.0 elasticsearch:7.9.1 -o skywalking8.1.0.tar
复制代码
5.2 docker-compose 启动SkyWalking
5.2.1 docker-compose的安装
下载v2.2.2版本的docker-compose
curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-composeln -s /usr/local/bin/docker-compose /usr/bin/docker-composedocker-compose --version
复制代码
添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
复制代码
测试安装是否成功
5.2.2 编写SkyWalking的docker-compose文件
这里使用最新版本的Skywalking镜像
version: '3'
services:
es7:
image: elasticsearch:7.12.1
container_name: es7
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
volumes:
- /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins #插件文件挂载
- /mydata/elasticsearch/data:/usr/share/elasticsearch/data #数据文件挂载
ports:
- 9200:9200
- 9300:9300
oap:
image: apache/skywalking-oap-server:8.7.0-es7
container_name: oap
depends_on:
- es7
links:
- es7
ports:
- "11800:11800"
- "12800:12800"
healthcheck:
test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
environment:
SW_STORAGE: elasticsearch7
SW_STORAGE_ES_CLUSTER_NODES: es7:9200
SW_HEALTH_CHECKER: default
TZ: Asia/Shanghai
SW_TELEMETRY: prometheus
JAVA_OPTS: "-Xms2048m -Xmx2048m"
ui:
image: apache/skywalking-ui:8.7.0
container_name: ui
depends_on:
- oap
links:
- oap
ports:
- "8088:8080" #为了防止8080端口冲突 这里用8088端口映射
environment:
SW_OAP_ADDRESS: http://oap:12800
TZ: Asia/Shanghai
复制代码
启动服务
docker-compose up -d
复制代码
查看启动
docker-compose ps
复制代码
5.2.3 测试SkyWalking的UI界面
在浏览器输入 服务器地址:8088
例如:http://192.168.198.120:8088
六 总结
skywalking就介绍到这里,本章节仅仅只是入门,简单使用skywalking,实际上里面还有很多功能没有介绍,有兴趣的同学可以按照上面的教程安装部署,然后自己探索一下。在现在微服务架构比较流行的环境下,如果没有一个调用链追踪框架,会导致很难排查线上服务调用的问题。skywalking是目前发展势头最快的技术框架的技术框架,因为对代码是无侵入性的,所以目前很多公司都采用skywalking。
以上是根据《官方文档》、观看《图灵架构师课堂》时做的笔记、自己私下练习并成功应用到公司测试环境中。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
伤心客
金牌会员
这个人很懒什么都没写!
楼主热帖
Java打怪之路----谷粒商场认证服务 ...
原型设计工具比较及实践--滴爱音乐 ...
基于 SpringBoot + MyBatis 的博客系统 ...
Flink-使用流批一体API统计单词数量 ...
《百万IT毕业生的心声:IT专业大学生毕 ...
Excelize 发布 2.6.1 版本,支持工作簿 ...
xtrabackup2版本和xtrabackup8版本对比 ...
sqlserver导入sql文件的方式
Spring IOC官方文档学习笔记(十)之类 ...
NineData:高效高质量的 Redis 可视化 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表