基于docker部署skywalking實(shí)現(xiàn)全鏈路監(jiān)控功能
一、概述
簡(jiǎn)介
skywalking是一個(gè)開(kāi)放源碼的,用于收集、分析,聚合,可視化來(lái)自于不同服務(wù)和本地基礎(chǔ)服務(wù)的數(shù)據(jù)的可觀察的平臺(tái),
skywalking提供了一個(gè)簡(jiǎn)單的方法來(lái)讓你對(duì)你的分布式系統(tǒng)甚至是跨云的服務(wù)有清晰的了解。
它更像是一個(gè)現(xiàn)代的系統(tǒng)性能管理,特別為分布式系統(tǒng)而設(shè)計(jì)。
功能
skywalking提供了在很多不同的場(chǎng)景下用于觀察和監(jiān)控分布式系統(tǒng)的方式。
首先,像傳統(tǒng)的方法,skywalking為java,c#,Node.js等提供了自動(dòng)探針代理.
同時(shí),它為Go,C++提供了手工探針。
隨著本地服務(wù)越來(lái)越多,需要越來(lái)越多的語(yǔ)言,掌控代碼的風(fēng)險(xiǎn)也在增加,
Skywalking可以使用網(wǎng)狀服務(wù)探針收集數(shù)據(jù),以了解整個(gè)分布式系統(tǒng)。
通常,skywalking提供了觀察service,service instance,endpoint的能力。
- service: 一個(gè)服務(wù)
- Service Instance: 服務(wù)的實(shí)例(1個(gè)服務(wù)會(huì)啟動(dòng)多個(gè)節(jié)點(diǎn))
- Endpoint: 一個(gè)服務(wù)中的其中一個(gè)接口
架構(gòu)圖
二、快速部署
環(huán)境說(shuō)明
操作系統(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
說(shuō)明:使用最新版本的elasticsearch和skywalking-oap-server鏡像,啟動(dòng)會(huì)有問(wèn)題。
因此,必須使用上述版本才可以。
下載源碼包,下面會(huì)用到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
啟動(dòng)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}"
說(shuō)明啟動(dòng)成功了。
創(chuàng)建持久化目錄,并重啟啟動(dò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完全啟動(dòng)之后,再啟動(dòng)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
說(shuō)明:這里指定elasticsearch 來(lái)存儲(chǔ)數(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實(shí)例部署
項(xiàng)目地址
這里一個(gè)SpringBootDemo為例,github地址:
https://github.com/solochen84/SpringBootDemo
制作jar包
找一臺(tái)安裝了jdk1.8和maven的服務(wù)器,使用maven構(gòu)建命令進(jìn)行打包
mvn clean package
打包好之后,會(huì)在target目錄,生成jar包,文件名為:spring-boot-demo-0.0.1-SNAPSHOT.jar
啟動(dòng)jar包
原來(lái)的啟動(dòng)方式為:
java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar
那么使用skywalkingagent,啟動(dòng)命令為:
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
說(shuō)明:
-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地址,由于在本機(jī),地址為:127.0.0.1:11800
-jar 指定jar包的路徑,這里我直接放到/opt/目錄了。
訪問(wèn)ui
效果如下:
因?yàn)闄C(jī)制為懶加載,所以當(dāng)只有你調(diào)用該java接口時(shí),頁(yè)面上才有顯示。所以第一次訪問(wèn)時(shí),數(shù)據(jù)是沒(méi)有的。
訪問(wèn)demo接口
SpringBootDemo啟動(dòng)端口為:8080,api接口有3個(gè)
GET / GET /?name=cheney GET /random
頁(yè)面多刷新幾次接口
http://192.168.31.146:8080/
http://192.168.31.146:8080/?name=cheney
http://192.168.31.146:8080/randomAbout
儀表盤(pán)
刷新ui頁(yè)面,選擇最近15分鐘的。
拓?fù)鋱D
點(diǎn)擊拓?fù)鋱D,選擇最近15分鐘的
可以看到xxxtest,就是我們定義的服務(wù)名稱
追蹤
同樣,可是查看最近15分鐘的。
告警
查看最近15分鐘的。
指標(biāo)
這里可以選定3個(gè)指標(biāo),進(jìn)行對(duì)比。>
參考鏈接:
https://blog.csdn.net/OptimusPP/article/details/106425807
到此這篇關(guān)于基于docker部署skywalking實(shí)現(xiàn)全鏈路監(jiān)控的文章就介紹到這了,更多相關(guān)docker部署skywalking全鏈路監(jiān)控內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器中Mysql數(shù)據(jù)的導(dǎo)入/導(dǎo)出詳解
服務(wù)器在使用了 Docker 后,對(duì)于備份和恢復(fù)數(shù)據(jù)庫(kù)的事情做下記錄,下面這篇文章主要給大家介紹了Docker容器中Mysql數(shù)據(jù)導(dǎo)入/導(dǎo)出的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-09-09將普通用戶加入Docker組,使用docker問(wèn)題
這篇文章主要介紹了將普通用戶加入Docker組,使用docker問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06Docker部署Apollo的實(shí)現(xiàn)步驟
眾所周知分布式配置中心在目前也可以說(shuō)是企業(yè)中項(xiàng)目的標(biāo)配了,本文主要介紹了Docker 部署Apollo的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02Docker 搭建lamp應(yīng)用實(shí)例詳解
這篇文章主要介紹了Docker 搭建lamp應(yīng)用實(shí)例詳解的相關(guān)資料,這里對(duì)搭建 LAMP的步驟做了詳細(xì)介紹,需要的朋友可以參考下2016-11-11Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐
本文主要介紹了Docker中部署Mino并掛載配置文件的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06docker?build與Dockerfile問(wèn)題
這篇文章主要介紹了docker?build與Dockerfile問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03