基于docker部署skywalking實現(xiàn)全鏈路監(jiān)控功能
一、概述
簡介
skywalking是一個開放源碼的,用于收集、分析,聚合,可視化來自于不同服務(wù)和本地基礎(chǔ)服務(wù)的數(shù)據(jù)的可觀察的平臺,
skywalking提供了一個簡單的方法來讓你對你的分布式系統(tǒng)甚至是跨云的服務(wù)有清晰的了解。
它更像是一個現(xiàn)代的系統(tǒng)性能管理,特別為分布式系統(tǒng)而設(shè)計。

功能
skywalking提供了在很多不同的場景下用于觀察和監(jiān)控分布式系統(tǒng)的方式。
首先,像傳統(tǒng)的方法,skywalking為java,c#,Node.js等提供了自動探針代理.
同時,它為Go,C++提供了手工探針。
隨著本地服務(wù)越來越多,需要越來越多的語言,掌控代碼的風(fēng)險也在增加,
Skywalking可以使用網(wǎng)狀服務(wù)探針收集數(shù)據(jù),以了解整個分布式系統(tǒng)。
通常,skywalking提供了觀察service,service instance,endpoint的能力。
- service: 一個服務(wù)
- Service Instance: 服務(wù)的實例(1個服務(wù)會啟動多個節(jié)點)
- Endpoint: 一個服務(wù)中的其中一個接口
架構(gòu)圖

二、快速部署
環(huán)境說明
操作系統(tǒng):centos 7.6
docker版本:19.03.12
ip地址:192.168.31.146
配置:4核8g
下載鏡像
docker pull elasticsearch:7.5.1 docker pull apache/skywalking-oap-server:6.6.0-es7 docker pull apache/skywalking-ui:6.6.0
說明:使用最新版本的elasticsearch和skywalking-oap-server鏡像,啟動會有問題。
因此,必須使用上述版本才可以。
下載源碼包,下面會用到agent
https://archive.apache.org/dist/skywalking/6.6.0/apache-skywalking-apm-6.6.0.tar.gz
安裝elasticsearch
修改系統(tǒng)參數(shù)
vi /etc/sysctl.conf
調(diào)整參數(shù)
vm.max_map_count=262144
刷新參數(shù)
sysctl -p
啟動elasticsearch
docker run -d --name=es7 \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" elasticsearch:7.5.1
等待30秒左右,查看docker日志,如果有出現(xiàn)
"publish_address {172.17.0.2:9300}, bound_addresses {0.0.0.0:9300}"說明啟動成功了。
創(chuàng)建持久化目錄,并重啟啟動elasticsearch
mkdir -p /data/elasticsearch docker cp es7:/usr/share/elasticsearch/data /data/elasticsearch/ docker cp es7:/usr/share/elasticsearch/logs /data/elasticsearch/ docker rm -f es7 docker run -d --name=es7 \ --restart=always \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -v /data/elasticsearch/data:/usr/share/elasticsearch/data \ -v /data/elasticsearch/logs:/usr/share/elasticsearch/logs \ elasticsearch:7.5.1
安裝oap
注意:等待elasticsearch完全啟動之后,再啟動oap
docker run --name oap --restart always -d \ --restart=always \ -e TZ=Asia/Shanghai \ -p 12800:12800 \ -p 11800:11800 \ --link es7:es7 \ -e SW_STORAGE=elasticsearch \ -e SW_STORAGE_ES_CLUSTER_NODES=es7:9200 \ apache/skywalking-oap-server:6.6.0-es7
說明:這里指定elasticsearch 來存儲數(shù)據(jù)
安裝ui
docker run -d --name skywalking-ui \ --restart=always \ -e TZ=Asia/Shanghai \ -p 8088:8080 \ --link oap:oap \ -e SW_OAP_ADDRESS=oap:12800 \ apache/skywalking-ui:6.6.0
注意:這里映射的端口為8088,防止端口沖突。
三、spring-boot實例部署
項目地址
這里一個SpringBootDemo為例,github地址:
https://github.com/solochen84/SpringBootDemo
制作jar包
找一臺安裝了jdk1.8和maven的服務(wù)器,使用maven構(gòu)建命令進行打包
mvn clean package
打包好之后,會在target目錄,生成jar包,文件名為:spring-boot-demo-0.0.1-SNAPSHOT.jar
啟動jar包
原來的啟動方式為:
java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar
那么使用skywalkingagent,啟動命令為:
java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -Dskywalking.agent.service_name=xxxtest -Dskywalking.collector.backend_service=127.0.0.1:11800 -jar /opt/spring-boot-demo-0.0.1-SNAPSHOT.jar
說明:
-javaagent 指定agent包位置。這里我將apache-skywalking-apm-6.6.0.tar.gz解壓到/opt目錄了,因此路徑為:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar
-Dskywalking.agent.service_name 指定服務(wù)名
-Dskywalking.collector.backend_service 指定skywalking oap地址,由于在本機,地址為:127.0.0.1:11800
-jar 指定jar包的路徑,這里我直接放到/opt/目錄了。
訪問ui
效果如下:

因為機制為懶加載,所以當(dāng)只有你調(diào)用該java接口時,頁面上才有顯示。所以第一次訪問時,數(shù)據(jù)是沒有的。
訪問demo接口
SpringBootDemo啟動端口為:8080,api接口有3個
GET / GET /?name=cheney GET /random
頁面多刷新幾次接口
http://192.168.31.146:8080/
http://192.168.31.146:8080/?name=cheney
http://192.168.31.146:8080/randomAbout
儀表盤
刷新ui頁面,選擇最近15分鐘的。

拓?fù)鋱D
點擊拓?fù)鋱D,選擇最近15分鐘的

可以看到xxxtest,就是我們定義的服務(wù)名稱
追蹤
同樣,可是查看最近15分鐘的。

告警
查看最近15分鐘的。

指標(biāo)
這里可以選定3個指標(biāo),進行對比。>

參考鏈接:
https://blog.csdn.net/OptimusPP/article/details/106425807
到此這篇關(guān)于基于docker部署skywalking實現(xiàn)全鏈路監(jiān)控的文章就介紹到這了,更多相關(guān)docker部署skywalking全鏈路監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器中Mysql數(shù)據(jù)的導(dǎo)入/導(dǎo)出詳解
服務(wù)器在使用了 Docker 后,對于備份和恢復(fù)數(shù)據(jù)庫的事情做下記錄,下面這篇文章主要給大家介紹了Docker容器中Mysql數(shù)據(jù)導(dǎo)入/導(dǎo)出的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09

