当前位置:网站首页>skywalking 6.4 分布式链路跟踪 使用笔记
skywalking 6.4 分布式链路跟踪 使用笔记
2022-07-01 14:54:00 【不会飞的小龙人】

介绍(摘自上一篇 “skywalking5.X 使用笔记”):
skywalking 简介(链路跟踪与分析)
随着业务越来越复杂,企业应用也进入了分布式服务化的阶段,随着模块的不断增多,一次请求可能会涉及到十几个甚至几十个服务的协同处理,那么如何准确快速的定位到线上故障和性能瓶颈,便成为我们不得不面对的棘手问题,传统的日志监控等方式无法很好达到跟踪调用,排查问题等需求。在谷歌论文《 Dapper,大规模分布式系统的跟踪系统》的指导下,许多优秀的 APM 应运而生。
分布式追踪系统发展很快,种类繁多,给我们带来很大的方便。但在数据采集过程中,有时需要侵入用户代码,并且不同系统的 API 并不兼容,这就导致了如果您希望切换追踪系统,往往会带来较大改动。OpenTracing 为了解决不同的分布式追踪系统 API 不兼容的问题,诞生了 OpenTracing 规范。OpenTracing 是一个轻量级的标准化层,它位于应用程序 / 类库和追踪或日志分析程序之间。详细介绍见
Skywalking 是一款国内开源的应用性能监控工具,支持对分布式系统的监控、跟踪和诊断。
Skywalking 是一款 APM(应用程序性能监视器),尤其适用于微服务,Cloud Native 和基于容器的架构系统。也称为分布式跟踪系统。它提供了一种自动检测应用程序的方法:无需更改目标应用程序的任何源代码;以及具有高效流媒体模块的收集器。
针对分布式系统的 APM(应用性能监控)系统,特别针对微服务、cloud native 和容器化 (Docker, Kubernetes, Mesos) 架构, 其核心是个分布式追踪系统。
该项目由国人吴晟基于 OpenTracking 实现的开源项目 skywalking(码云、github)
2017 年 12 月 8 日,Apache 软件基金会孵化器项目管理委员会 ASF IPMC 宣布 “SkyWalking 全票通过,进入 Apache 孵化器”
官方的首页的图片上可以到 skywalking 大致架构;

特性:
存储,集群管理多种机制可选;
优秀的可视化方案;
多种监控手段,语言探针和服务网格;
轻量高效,不需要大数据(官网这句没懂);
支持告警;
多语言自动探针,Java,.NET Core 和 Node.JS;
模块化,用户界面化;
目前最新版的能够支持 jdk1.9;
国内众多一线大厂在采用 skywalking 做为监控与链路性能分析平台,如:华为、当当、小米、招商等;
2019 年 4 月 SkyWalking 已毕业成为 Apache 顶级项目,有多位大牛技术支撑以及社区有大量受众参与;
性能好,针对单实例 5000tps 的应用,在全量采集的情况下,只增加 10% 的 CPU 开销。详细评测见《skywalking agent performance test》。
采用探针技术,在使用过程中,完全是 0 代码,无侵入,分布式自动采集与监控系统运行;
支持自动及手动探针;
自动探针:Java 支持的中间件、框架与类库列表;
手动探针:OpenTrackingApi、@Trace 注解、trackId 集成到日志中。
总体特性(来源于官网博客):
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 可视化平台,用来展示落地的数据。
参见官方(博客):http://skywalking.apache.org/zh/blog/2019-01-03-monitor-microservice.html
官网
apache 官网:http://skywalking.apache.org/zh/
github:https://github.com/apache/skywalking/
官方示例:http://122.112.182.72:8080/
官方文档(可用谷歌翻译看):https://github.com/apache/skywalking/tree/master/docs
下载
全文检索引擎:elasticsearch-6.6.2
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz
elasticsearch-head 管理插件
wget https://codeload.github.com/mobz/elasticsearch-head/zip/master
apache-skywalking6.4 安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/6.4.0/apache-skywalking-apm-6.4.0.zip
注意:skywalking6.4 使用数据源 elasticsearch-6.x 系统版本(我下载最新的 elasticsearch-7.x 版本折腾了半天,最后放弃,因 skywalking 会向 elasticsearch 创建大量 template 索引模板,因 elasticsearch-7.x 的版本过新,其中部份字段配置有变化,导制无法创建成功)
安装步骤
安装数据源与插件(相关安装与使用,网上资料众多)
elasticsearch-6.6.2 (安装过程省略,请自行百度)
elasticsearch-head (安装过程省略,请自行百度)
解压 apache-skywalking-apm-6.4.0.zip,目录说明:

agent:监控代理程序,请在系统服务所在的主机保留该目录内所有内容(该目录做为独立程序);
bin:启动脚本
webapp:UI 程序与服务目录
config:相关数据源、注册中心等配置存放目录
配置数据源
使用 elasticsearch
打开 config/application.yml 配置文件 ,在 storage 节点,注释 h2 数据源,启用 elasticsearch 全文检索引擎做为数据源存储;
h2 是默认自带的内嵌式数据库(有兴趣可自行百度)

注意其中的几个核心参数:
# 配置你的elasticsearch服务的IP和端口,集群IP请用“,”逗号隔开
clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.110.35:9200}
#存储最多7天的内容,过期数据将会清理。因此请根据实际需求进行调整
recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day
# 每10秒刷新数据到收集器中
flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}
# 提供2个并发请求,如果系统业务量大,日志产生的非常快,请根据实况调整
concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}使用 mysql
打开 config/application.yml 配置文件 ,在 storage 节点,同样将 h2 注释掉,将 mysql 的配置打开

打开 config/datasource-settings.properties 配置文件,根据自身的配置进行修改

后续本文演示的内容均基于 elasticsearch 数据源进行展示;
修改 agent 代理配置

注意以下修改:
# 将Your_ApplicationName修改为自已的项目名称
agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}
# 将代理程序的指向收集器服务的IP和端口
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.110.35:11800}运行
运行收集器与 UI 程序
进入 bin 目录(我是上传到 linux 环境下运行,如果是 windows 请双击运行 startup.bat)
./startup.sh也可以分别单独启动
单独启动 collector,运行
./oapService.sh单独启动 UI, 运行
./webappService.sh使用 agnet
在 apache-skywalking-apm-bin 解压包下的 agent 目录中为代理程序独立包目录。该 agent 文件夹,可以单独复制出放在项目系统所在服务器的任意目录下。
agent 文件夹下的 skywalking-agent.jar 即为监控代理程序,只需要在 jvm 的启动命令中加载该 jar 包,即可完成监控代理;
部署 java agent
Linux Tomcat 7, Tomcat 8
修改 tomcat/bin/catalina.sh, 在首行加入如下信息:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar"; export CATALINA_OPTSWindows Tomcat 7, Tomcat 8
修改 tomcat/bin/catalina.bat, 在首行加入如下信息:
set "CATALINA_OPTS=-javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar"JAR file
在启动你的应用程序的命令行中添加 -javaagent 参数。并确保在 - jar 参数之前添加它。例如:
java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar yourApp.jarIDAE 配置 Agent
在 IDEA 中配置本地程序 agent 代理,在 VM options 中 - javaagent:D:\test\apache-skywalking-apm-bin\agent\skywalking-agent.jar,配置完毕直接运行即可;

运行项目系统后,打开系统界面进行业务操作,则 skywalking-agent.jar 会根据代理计划,收集相关日志发送到 skywalking 收集器服务中。
skywalkingUI 界面
打开 skywalking 管理界面(skywalking 服务部署的 IP):
刷新界面,即可获取 agent 发送的监控数据;
界在相对比较简洁,功能不多,但都比较实用,可以在多个项目与数据库之间切换,相关指标可以看懂,不在本文详细描述,具体操作如下:
首页概览

URL 链路追踪

连接拓扑图

当前数据库

全局信息

当前服务

当前实例

总结
简洁又好用的软件,比大众点评的 cat 要容易上手(个人认为不如 cat 功能强大与复杂),已经满足对于系统的链路跟踪与分析需求,最后再次向 skywalking 原始作者大牛吴晟致敬;
附上我的《skywalking 5.X 分布式链路跟踪 使用笔记》里面有关于项目代码中使用手动探针:OpenTrackingApi、@Trace 注解、trackId 集成到日志中。
边栏推荐
- Solid basic structure and array, private / public function, return value and modifier of function, event
- Word2vec yyds dry goods inventory
- 643. Maximum average number of subarrays I
- IDEA全局搜索快捷键(ctrl+shift+F)失效修复
- 项目中字符串判空总结
- Day-02 database
- Rearrangement of overloaded operators
- [dynamic programming] p1004 grid access (four-dimensional DP template question)
- Salesforce、约翰霍普金斯、哥大 | ProGen2: 探索蛋白语言模型的边界
- 一波三折,终于找到src漏洞挖掘的方法了【建议收藏】
猜你喜欢

What problems should be considered for outdoor LED display?
![[leetcode 324] swing sorting II thinking + sorting](/img/cb/26d89e1a1f548b75a5ef9f29eebeee.png)
[leetcode 324] swing sorting II thinking + sorting

JVM second conversation -- JVM memory model and garbage collection

One of the data Lake series | you must love to read the history of minimalist data platforms, from data warehouse, data lake to Lake warehouse

opencv学习笔记四--银行卡号识别

643. Maximum average number of subarrays I

Written on the first day after Doris graduated

Yyds dry goods inventory hcie security day13: firewall dual machine hot standby experiment (I) firewall direct deployment, uplink and downlink connection switches

Build your own website (14)

In hot summer, please put away this safe gas use guide!
随机推荐
Mongodb second call -- implementation of mongodb high availability cluster
The markdown editor uses basic syntax
Vnctf2022 open web gocalc0
111. Minimum depth of binary tree
Day-02 database
Build MySQL master-slave server under Ubuntu 14.04
cmake 基本使用过程
Tensorflow 2. X realizes iris classification
职场太老实,总被欺负怎么办?
In hot summer, please put away this safe gas use guide!
写在Doris毕业后的第一天
tensorflow2-savedmodel convert to pb(frozen_graph)
Basic operations of SQL database
C#学习笔记(5)类和继承
建立自己的网站(14)
Basic operation of database
Written on the first day after Doris graduated
Task.Run(), Task.Factory.StartNew() 和 New Task() 的行为不一致分析
期末琐碎知识点再整理
从零开发小程序和公众号【第三期】