首頁 > 軟體

基於docker部署skywalking實現全鏈路監控功能

2022-03-02 16:01:11

一、概述

簡介

skywalking是一個開放原始碼的,用於收集、分析,聚合,視覺化來自於不同服務和本地基礎服務的資料的可觀察的平臺,
skywalking提供了一個簡單的方法來讓你對你的分散式系統甚至是跨雲的服務有清晰的瞭解。
它更像是一個現代的系統效能管理,特別為分散式系統而設計。

功能

skywalking提供了在很多不同的場景下用於觀察和監控分散式系統的方式。
首先,像傳統的方法,skywalking為java,c#,Node.js等提供了自動探針代理.
同時,它為Go,C++提供了手工探針。
隨著本地服務越來越多,需要越來越多的語言,掌控程式碼的風險也在增加,
Skywalking可以使用網狀服務探針收集資料,以瞭解整個分散式系統。
通常,skywalking提供了觀察service,service instance,endpoint的能力。

  • service: 一個服務
  • Service Instance: 服務的範例(1個服務會啟動多個節點)
  • Endpoint: 一個服務中的其中一個介面

架構圖

二、快速部署

環境說明

作業系統: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

修改系統引數

vi /etc/sysctl.conf

調整引數

vm.max_map_count=262144

重新整理引數

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紀錄檔,如果有出現

"publish_address {172.17.0.2:9300}, bound_addresses {0.0.0.0:9300}"

說明啟動成功了。

建立持久化目錄,並重啟啟動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 來儲存資料

安裝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的伺服器,使用maven構建命令進行打包

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 指定服務名

-Dskywalking.collector.backend_service 指定skywalking oap地址,由於在本機,地址為:127.0.0.1:11800

-jar 指定jar包的路徑,這裡我直接放到/opt/目錄了。

存取ui

http://192.168.31.146:8088/

效果如下:

因為機制為懶載入,所以當只有你呼叫該java介面時,頁面上才有顯示。所以第一次存取時,資料是沒有的。

存取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分鐘的。

拓撲圖

點選拓撲圖,選擇最近15分鐘的

可以看到xxxtest,就是我們定義的服務名稱

追蹤

同樣,可是檢視最近15分鐘的。

告警

檢視最近15分鐘的。

指標

這裡可以選定3個指標,進行對比。>

參考連結:

https://blog.csdn.net/OptimusPP/article/details/106425807

到此這篇關於基於docker部署skywalking實現全鏈路監控的文章就介紹到這了,更多相關docker部署skywalking全鏈路監控內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com