猿创征文|链路追踪-Skywalking入门
背景
旁友,你的线上服务是不是偶尔来个超时,或者突然抖动一下,造成用户一堆反馈投诉。然后你费了九牛二虎之力,查了一圈圈代码和日志才总算定位到问题原因了。或者公司内部有链路追踪系统,虽然可以很轻松地通过监控判断问题出现的原因,但是对其中的逻辑完全摸不着头脑。只能上网搜索一番。
旁友,skywalking分布式链路追踪框架了解一下。
有的旁友会有疑惑,我的Spring Boot 就是一个单体应用么,不需要链路追踪?有问题直接翻日志就行了,但是即使是一个 Spring Boot 单体应用,也会和以下服务打交道:
- 关系数据库,例如说 MySQL、PostgreSQL 等等。
- 缓存数据库,例如说 Redis、Memcached 等等。
- 外部三方服务,例如说微信公众号、微信支付、支付宝支付、短信平台等等
可见,仅仅一个 Spring Boot 单体应用,就已经涉及到分布在不同进程中的服务了。此时,就非常有必要用上skywalking。例如说,线上某个 接口访问非常慢,用SkyWalking 可以定位是MySQL 查询比较慢呢,还是调用的第三方服务比较慢。
而在分布式服务中,各个大厂内部系统成百上千的,链路关系更加复杂。比如你在外卖平台上的一个点击请求可能跨了内部几十个Java应用了,在这么长的链路里去排查问题,没有好使的工具怎么行呢。如图是当前分布式系统的现状,图片来源:鹰眼下的淘宝分布式调用跟踪系统介绍
根据上图,我们设想:
1.系统中有可能每天都在增加新服务或删除旧服务,也可能进行升级,当系统出现错误,我们如何定位问题?
2.当用户请求时,响应缓慢,怎么定位问题?
3.服务可能由不同的编程语言开发,1、2 定位问题的方式,是否适合所有编程语言?
Skywalking框架
1.介绍
SkyWalking 是什么?
官方网址 http://skywalking.apache.org/
skywalking是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。短短两年就被Apache收入麾下,实力可见一斑。
分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。
提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。
代码无侵入,通信方式采用GRPC,实现方式是java探针,支持告警,JVM监控,支持全局调用统计等等
skywalking的架构参考了谷歌的Dapper框架的论文,Dapper并没有开源,只给了篇论文,感兴趣但又不喜英文文档的旁友可以看看论文的中文翻译Dapper,大规模分布式系统的跟踪系统
整体架构如下:
- Tracing Metrics Logging :负责从应用中,收集链路信息,发送给 SkyWalking OAP 服务器。目前支持 SkyWalking、Zikpin、Jaeger 等提供的 Tracing 数据信息。Java应用通常使用SkyWalking Agent 收集数据
- SkyWalking OAP :skywalking服务端(Transport layer,Receiver cluster,Aggregator cluster)负责接收 Agent 发送的 Tracing 数据信息,然后进行分析,存储到外部存储器( Storage ),最终提供查询功能。
- Storage option :Tracing 数据存储。目前支持 ES、H2 多种存储器。我们用ES存储即可 。
- GUI :负责提供可视化控台,查看链路等
- Alarm:提供告警功能,这里不展示讲
2.Docker方式搭建Skywalking环境
为了快速搭建环境,避免各种系统、配置环境不同造成踩坑的情况。我们用docker直接创建ElasticSearch、Skywalking-OAP、Skywalking-UI以及ES的管理工具Kibana。这样一套运行环境直接就能用了。话不多说,直接开干
整体架构如下:
用到的工具版本号如下表:
工具 | 版本号 |
---|---|
ElasticSearch | 7.14.2 |
Kibana | 7.14.2 |
skywalking-oap-server | 9.1.0 |
skywalking-ui | 9.1.0 |
其中skywalking的docker-compos.yml运行脚本可以从官方的Github上获取apache/skywalking/docker
脚本需要修改,直接参考我的就行,不懂的参数都有具体说明:
version: '3'
services:elasticsearch:image: docker.elastic.co/elasticsearch/elasticsearch:7.14.2container_name: elasticsearchports:- 9200:9200- 9300:9300environment:- "cluster.name=elasticsearch"- "bootstrap.memory_lock=true"- "ES_JAVA_OPTS=-Xms256m -Xmx512m"- "discovery.type=single-node"kibana:image: docker.elastic.co/kibana/kibana:7.14.2container_name: kibanadepends_on:- elasticsearchports:- 5601:5601environment:# IP地址为运行电脑的IP地址,Mac上通过 ifconfig en0 命令获取- "elasticsearch.hosts=http://192.168.1.5:9200" skywalking-oap:image: apache/skywalking-oap-server:9.1.0container_name: skywalking-oapdepends_on:- elasticsearchports:- "11800:11800"- "12800:12800"healthcheck:test: [ "CMD-SHELL", "/skywalking/bin/swctl ch" ]interval: 30stimeout: 10sretries: 3start_period: 10senvironment:TZ: Asia/ShanghaiSW_STORAGE: elasticsearchSW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200SW_HEALTH_CHECKER: defaultSW_TELEMETRY: prometheusskywalking-ui:image: apache/skywalking-ui:9.1.0container_name: skywalking-uidepends_on:- skywalking-oaplinks:- skywalking-oapports:# UI界面程序占用的端口- "8080:8080"environment:TZ: Asia/Shanghai# IP地址为运行电脑的IP地址,Mac上通过 ifconfig en0 命令获取SW_OAP_ADDRESS: http://192.168.1.8:12800
2.1 Docker镜像加速
按上述配好docker-compose.yml文件后,命令行到所在目录下执行docker-compose up
可以拉起镜像,第一次运行时会下载镜像,docker默认的镜像仓库在国外,所以下载速度和蜗牛一样慢。为了加速下载,需要配置国内的docker镜像
获取国内docker镜像库地址的方法:
- 阿里云官方镜像加速,获取加速器地址文档:阿里云官方镜像加速
- 网上搜索docker镜像加速,下面是测过有效的公共镜像库
- 网易云 https://hub-mirror.c.163.com
- 百度云 https://mirror.baidubce.com
配置方法:
Docker桌面版Preference
-> Docker Engine
在Json配置里加上,加好之后重启Docker,然后再重新拉镜像,速度立马快得飞起
猿创征文|链路追踪-Skywalking入门相关推荐
- 分布式链路追踪-skywalking入门体验
背景 旁友,你的线上服务是不是偶尔来个超时,或者突然抖动一下,造成用户一堆反馈投诉.然后你费了九牛二虎之力,查了一圈圈代码和日志才总算定位到问题原因了.或者公司内部有链路追踪系统,虽然可以很轻松地通过 ...
- 猿创征文|Android开发入门工具的那些事儿
今年是我读硕士的第一年,机缘巧合接触到了Android开发并进行了学习.工欲善其事必先利其器,那么在学习Android开发中我也使用到了很多的工具,今天就来记录一下,这些工具使用的场合及其发挥的作用, ...
- 猿创征文 | 国产数据库之openGauss的单机主备部署及快速入门
猿创征文 | 国产数据库之openGauss的单机主备部署及快速入门 一.openGauss介绍 1.openGauss简介 2.openGauss特点 3.openGauss的逻辑架构图 二.环境检 ...
- 猿创征文 | 国产数据库实战之TiDB 数据库快速入门
猿创征文 | 国产数据库实战之TiDB 数据库快速入门 一.系统检查 1.检查系统版本 2.查看本地IP地址 3.TiDB集群介绍 二.快速部署本地测试集群 1.安装 TiUP工具 2.声明全局环境变 ...
- 猿创征文|当我在追光 我与光同航--我与Java的技术成长之路
文章目录 前言 材料转码 初识JAVA 大学建议 1. 参加比赛 2. 坚持创作 3.养成看书的习惯 Java路线 1. java基础 2. 数据库 3. javaWeb 4. 框架 前言 今天借着官 ...
- 分布式链路追踪SkyWalking进阶实战之RPC上报和WebHook通知(三)
目录 1.自定义SkyWalking链路追踪配置 1.1 什么是TraceId 1.2 使用的背景 1.3 编码 2.SkyWalking-RocketBot性能剖析 3.SkyWalking链路追踪 ...
- 猿创征文|最长回文子串-力扣
猿创征文|最长回文子串 [猿创征文]最长回文子串-力扣 ✌字符串快速入门
- Admin监控Sleuth链路追踪 skywalking链路追踪
Admin监控&Sleuth链路追踪,skywalking **Sleuth&Zipkin** 一.Sleuth&Zipkin介绍 二.搭建环境 三.Sleuth入门操作 四. ...
- 猿创征文|工作中遇到技术盲区后的自我成长
猿创征文|工作中遇到技术盲区后的自我成长 1.立场 我是一名python后端开发程序员,在一家创业公司中兢兢业业工作快两年了,从软件架构.开发.测试.部署.运维一手经办,到开发文档.API接口.开发周 ...
最新文章
- java工具集_Java 工具集
- ios: coreData的NSManagedObject setvalue为null
- 解决Mysql读写分离数据延迟
- java 监听客户端的退出_Java ServerSocket 手动关闭监听
- 奥特曼系列ol服务器名称带怪兽,《奥特曼系列ol》怪兽图鉴 怪兽阵容
- QT信号(signal)和槽(slot)问题
- Java实现Excel中的NORMSDIST函数和NORMSINV函数
- Django Model出现的中文问题
- 2021-09-14 if__name__ == ‘__main__‘的用法
- 使用Java根据约定格式生成Oracle建表语句
- linux远程文件复制,Linux远程复制文件
- 【Unity】AvProVideo 实现当前视频播放完毕自动加载下一视频
- matlab dsb调制,幅度调制(AM、DSB、SSB、VSB)
- matlab用方程的解赋值,Matlab隐式符号方程求解和赋值
- 高数 下总复习 完结
- 能解决 80% 需求的 10个 CSS动画库
- C语言 | 函数参数
- Word 自动更新编号(插入题注、交叉引用)
- EasyRules动态规则实现
- 计算机组成原理指令系统的设计,计算机组成原理与系统设计
热门文章
- [css]:css中不支持的字体,如“Barlow Semi Condensed SemiBold”,使用@font-face引入外部字体
- Python 动态生成变量
- JAVA计算机毕业设计茶叶企业管理系统Mybatis+系统+数据库+调试部署
- 微信内使用支付宝支付
- TUF GAMING 飞行堡垒7重新装系统,也适用于各类品牌机
- C语言静态内存分配与动态内存分配
- 简单好用的书签管理器OneNav
- 如何将别人Google云端硬盘中的数据进行保存
- png、jpg、jpeg、bmp、svg、tiff、webp和gif的优缺点
- 从App Lab就一鸣惊人的Gorilla Tag,创始人竟是个电竞选手