簡介
接下來對分布式項目實現(xiàn)鏈路追蹤,本操作要先完成前置步驟,詳情請參照【Spring Cloud Alibaba】Spring Cloud Alibaba 搭建教程
在分布式系統(tǒng),尤其是微服務(wù)系統(tǒng)中,一次外部請求往往需要內(nèi)部多個模塊,多個中間件,多臺機器的相互調(diào)用才能完成。在這一系列的調(diào)用中,可能有些是串行的,而有些是并行的。在這種情況下,我們?nèi)绾尾拍艽_定這整個請求調(diào)用了哪些應(yīng)用?哪些模塊?哪些節(jié)點?以及它們的先后順序和各部分的性能如何呢?
這就是涉及到鏈路追蹤。
什么是鏈路追蹤
鏈路追蹤是分布式系統(tǒng)下的一個概念,它的目的就是要解決上面所提出的問題,也就是將一次分布式請求還原成調(diào)用鏈路,將一次分布式請求的調(diào)用情況集中展示,比如,各個服務(wù)節(jié)點上的耗時、請求具體到達哪臺機器上、每個服務(wù)節(jié)點的請求狀態(tài)等等。
目前主要的一些 APM
工具有: Cat
、Zipkin
、Pinpoint
、SkyWalking
等;
什么是SkyWalking
Apache SkyWalking
是分布式系統(tǒng)的應(yīng)用程序性能監(jiān)視工具,專為微服務(wù)、云原生架構(gòu)和基于容器(Docker
、K8s、Mesos)架構(gòu)而設(shè)計。
提供分布式追蹤、服務(wù)網(wǎng)格遙測分析、度量聚合和可視化一體化解決方案。
功能列表
- 多種監(jiān)控手段??梢酝ㄟ^語言探針和 service mesh 獲得監(jiān)控是數(shù)據(jù)。
- 多個語言自動探針。包括 Java,.NET Core 和 Node.JS。
- 輕量高效。無需大數(shù)據(jù)平臺,和大量的服務(wù)器資源。
- 模塊化。UI、存儲、集群管理都有多種機制可選。
- 支持告警。
- 優(yōu)秀的可視化解決方案。
整體架構(gòu)
- 上部分
Agent
:負責從應(yīng)用中,收集鏈路信息,發(fā)送給SkyWalking OAP
服務(wù)器。目前支持SkyWalking
、Zikpin
、Jaeger
等提供的Tracing
數(shù)據(jù)信息。而我們目前采用的是,SkyWalking Agent
收集SkyWalking Tracing
數(shù)據(jù),傳遞給服務(wù)器。 - 下部分
SkyWalking OAP
:負責接收Agent
發(fā)送的Tracing
數(shù)據(jù)信息,然后進行分析(Analysis Core
) ,存儲到外部存儲器(Storage
),最終提供查詢(Query
)功能。 - 右部分
Storage
:Tracing
數(shù)據(jù)存儲。目前支持ES
、MySQL
、Sharding Sphere
、TiDB
、H2
多種存儲器。SkyWalking
開發(fā)團隊自己的生產(chǎn)環(huán)境采用ES
為主。 - 左部分
SkyWalking UI
:負責提供控臺,查看鏈路等等。
單機搭建步驟
- 搭建一個
Elasticsearch
服務(wù)。 - 下載
SkyWalking
軟件包。 - 搭建一個
SkyWalking OAP
服務(wù)。 - 啟動一個
Spring Boot
應(yīng)用,并配置SkyWalking Agent
。 - 搭建一個
SkyWalking UI
服務(wù)。
官網(wǎng)文檔
安裝數(shù)據(jù)存儲源
目前支持 ES
、MySQL
、Sharding Sphere
、TiDB
、H2
多種存儲器,這里主要介紹下Elasticsearch
和Mysql
方式。
注意:Elasticsearch 和 MySQL的安裝這里只做最簡單使用,具體請自行搜索,如果你已有部署,可以跳過這部!
基于Docker安裝Elasticsearch
新建docker-compose.yml
文件,內(nèi)容如下:
docker-compose.yml
version: '3.3'
services:
elasticsearch:
image: docker.io/elasticsearch:7.7.0
container_name: elasticsearch
restart: always
ports:
- 9200:9200
- 9300:9300
environment:
discovery.type: single-node
TZ: Asia/Shanghai
cluster.name: elasticsearch
運行命令
docker-compose up
或者
#拉取鏡像
docker pull elasticsearch:7.7.0
#啟動鏡像
docker run --name elasticsearch -d -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e "discovery.type=single-node" -p 9200:9200 -p 9300:9300 elasticsearch:7.7.0
新版(v8.6.2)Elasticsearch詳細安裝教程
基于Docker安裝MySQL
拉取鏡像
#拉取鏡像
docker pull mysql:5.7
#啟動鏡像
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql mysql:5.7
基于Docker配置SkyWalking OAP
Elasticsearch
方式比較簡單,推薦使用
Elasticsearch 方式
docker run --name oap --restart always -d -p 12800:12800 -p 11800:11800 -e SW_STORAGE=elasticsearch -e SW_STORAGE_ES_CLUSTER_NODES=172.16.92.230:9200 apache/skywalking-oap-server:9.4.0
MySQL方式
創(chuàng)建數(shù)據(jù)庫
首先在我們的mysql數(shù)據(jù)庫中新建數(shù)據(jù)庫實例swtest
運行命令
docker exec -it mysql mysql -uroot -p
輸入剛剛設(shè)置的密碼123456
創(chuàng)建數(shù)據(jù)庫swtest
create DATABASE swtest;
下載mysql-connector-java
MySQL
驅(qū)動程序在Apache
官方發(fā)行版和源代碼中是不允許的。 所以需要我們自己去下載。
mysql-connector-java。jar
包下載地址:https://downloads.mysql.com/archives/c-j/
解壓
創(chuàng)建
運行命令創(chuàng)建SkyWalking OAP
docker run --name oap --restart always -d -p 12800:12800 -p 11800:11800 -e SW_STORAGE=mysql -e SW_JDBC_URL=jdbc:mysql://172.16.92.230:3306/swtest?allowMultiQueries=true -e SW_DATA_SOURCE_USER=root -e SW_DATA_SOURCE_PASSWORD=123456 apache/skywalking-oap-server:9.4.0
這里我們創(chuàng)建完成查看日志docker logs -f --tail=200 oap
,報錯如下,這是因為沒有引入mysql-connector-java
包
我們將下載好的mysql-connector-j-8.0.31.jar
包復(fù)制到oap
容器中
docker cp E:\soft\oap\mysql-connector-j-8.0.31.jar oap:/skywalking/oap-libs/
E:\soft\oap\mysql-connector-j-8.0.31.jar
是我這邊放的路徑,具體看你下載的包放在那里
重新啟動
docker restart oap
這時,我們看日志,發(fā)現(xiàn)oap
已成功連接mysql
,正在創(chuàng)建表
耐心等待,創(chuàng)建完成即可!
參數(shù)說明
參數(shù) | 默認值 | 說明 |
---|---|---|
SW_STORAGE | h2 | 存儲源:h2、 elasticsearch、 mysql、 postgresql等 |
SW_STORAGE_ES_CLUSTER_NODES | localhost:9200 | elasticsearch地址 |
SW_JDBC_URL | “jdbc:mysql://localhost:3306/swtest?rewriteBatchedStatements=true” | jdbc地址 |
SW_DATA_SOURCE_USER | root | mysql數(shù)據(jù)庫用戶名 |
SW_DATA_SOURCE_PASSWORD | root@1234 | mysql數(shù)據(jù)庫密碼 |
配置SkyWalking Agent
下載
打開官網(wǎng)下載地址:https://skywalking.apache.org/downloads/
點擊想要下載的SkyWalking Agent
版本
如果下載的比較慢,可以試試國內(nèi)的鏡像地址
阿里云:https://mirrors.aliyun.com/apache/skywalking
清華大學:https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking
北京理工大學:http://mirror.bit.edu.cn/apache/skywalking
解壓
tar -zxvf apache-skywalking-java-agent-8.14.0.tgz
windows上我用的7z解壓兩次,沒啥損壞,正常使用~~~
目錄如下
activations
bootstrap-plugins
config # SkyWalking Agent 配置
licenses
logs # SkyWalking Agent 日志
optional-plugins # 可選插件
optional-reporter-plugins
plugins # 插件
LICENSE
NOTICE
skywalking-agent.jar # SkyWalking Agent
集成
在我們的項目中新建目錄moonce-skywalking-agent
將我們下載的skywalking-agent
目錄下內(nèi)容拷貝到該路徑下(其實現(xiàn)在放在哪里都無所謂的,只要在項目VM指定就行了)
配置
修改項目的 VM
運行參數(shù),點擊菜單欄中的 Run
-> EditConfigurations...
,此處我們以 moonce-provider
項目為例,修改參數(shù)如下
-javaagent:E:\code\spring-cloud-alibaba\moonce-skywalking-agent\skywalking-agent.jar
-Dskywalking.agent.service_name=moonce-provider
-Dskywalking.collector.backend_service=172.16.92.230:11800
基于Docker配置SkyWalking UI
docker run --name oap-ui --restart always -d -e SW_OAP_ADDRESS=http://172.16.92.230:12800 -p 18080:8080 apache/skywalking-ui:9.4.0
測試
啟動Nacos
服務(wù),運行ProviderApplication
,訪問地址http://172.16.92.230:18080/
(默認是空的,我這邊訪問過)
然后我們來訪問地址http://localhost:8081/test/hi
(可以多點幾次)
可以看到我們的訪問信息
點擊servce names
可以查看詳情
點擊Topology
,查看請求鏈路情況,這里只是簡單的一個
我們把ConsumerApplication
也進行添加探針文章來源:http://www.zghlxwxcb.cn/news/detail-677652.html
啟動這項目,訪問地址:http://localhost:9091/test/app/name
(多訪問幾次)
查看SkyWalking UI
文章來源地址http://www.zghlxwxcb.cn/news/detail-677652.html
到了這里,關(guān)于【Spring Cloud Alibaba】11.鏈路追蹤(SkyWalking)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!