天天看點

搭建SkyWalking測試環境

SkyWalking整體上分為探針、背景、UI界面三大部分,探針使用位元組碼注入技術實作對服務資料的采集,然後将采集到的資料格式化後發送給背景,背景會把這些資料存儲,目前支援的存儲媒體為Mysql,H2,ElasticSearch,最後UI界面通路背景接口,進而可以看到追蹤的資料,大緻如下:

搭建SkyWalking測試環境

下面介紹安裝部署:

注:本次安裝隻有一台機器,ip為192.168.1.252,微服務、elasticsearch、skywalking都部署在本台機器,使用的是root使用者。

一、下載下傳安裝包并解壓

skywalking:

    https://www.apache.org/dyn/closer.cgi/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz

    

tar -zxvf apache-skywalking-apm-6.1.0.tar.gz

elasticserch:

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz

    

tar -zxvf elasticsearch-6.3.0.tar.gz

二、啟動elasticsearch

  • elasticsearch預設不允許使用root啟動服務,如果目前使用者是root,則需要建立一個使用者,我這裡建立一個使用者es:
adduser es
chown -R es elasticsearch-6.3.0
su es
cd elasticsearch-6.3.0
           
  • 配置除了localhost之外的其他機器通路elasticsearch,在config/elasticsearch.yml檔案中追加如下内容:
network.host: 0.0.0.0
           

生産環境建議将0.0.0.0調整為具體的ip

  • 啟動:
cd elasticsearch-6.3.0/bin
./elasticsearch
           

啟動的時候可能會報一些錯誤例如:每個程序最大同時打開檔案數太小、最大線程個數太低等,我這裡做了如下修改:

/etc/security/limits.conf

檔案中追加如下内容:

* soft nproc 4096
* hard nproc 4096
           

/etc/sysctl.conf

檔案中追加如下内容:

vm.max_map_count=262144
           

然後執行

sysctl -p

指令使配置生效,然後重新啟動elasticsearch,當然,也可以選擇背景啟動:

./elasticsearch -d

  • 打開浏覽器通路:http://192.168.1.252:9200/ ,如果可以看到有elasticsearch的字元串資訊傳回,則代表啟動成功。

三、啟動skywalking

進入skywalking根目錄,執行

ls

指令,結果如下:

agent  bin  config  LICENSE  licenses  NOTICE  oap-libs  README.txt  webapp
           

agent:可以了解為文章開頭的探針

config:配置skywalking背景的一些參數

bin:一些常見的腳本

oap-libs:背景需要的一些包

webapp:應該是UI界面的一些東西

  • 配置探針:為了實作端點過濾功能,将apm-trace-ignore-plugin-6.1.0.jar從agent/optional-plugins目錄下複制到agent/plugins下:
cp agent/optional-plugins/apm-trace-ignore-plugin-6.1.0.jar agent/plugins/
           
  • 配置背景:将背景預設的H2存儲媒體修改為elasticsearch,編輯config/application.yml檔案,将H2部分注釋掉,打開elasticsearch的配置:

    Esc進入指令行模式

顯示行号:
:set number

注釋掉H2:
:72,76s/^/#/g

打開elasticsearch的配置
:58,71s/^#//g
           

實際行号要看具體檔案,另外由于這裡skywalking和elasticsearch部署在同一台機器,是以elasticsearch采用的是預設ip和端口,具體怎麼配置要以實際情況考量

  • 啟動背景和UI界面:
cd bin
./startup.sh
           

此時打開elasticsearch的日志檔案:

logs/elasticsearch.log

,可以看到skywalking在建立一些中繼資料檔案

  • 打開浏覽器通路:http://192.168.1.252:8080/ ,如果看到skywalking的界面,則啟動成功,如果需要輸入使用者名密碼,預設都是admin

四、啟動自己的服務

nohup java -javaagent:/&&&/agent/skywalking-agent.jar -Dskywalking.agent.service_name=servicea -Dskywalking.trace.ignore_path=/eureka/** -jar servicea.jar servicea.log 1>log/servicea.log 2>&1 &
           

說明:

  • -javaagent:指明了要在自己的服務中使用哪個檔案進行位元組碼注入,&&&表示skywalking的根目錄
  • -Dskywalking.agent.service_name=指明了目前服務的名稱為servicea,用以在skywalking的UI界面的服務中展示
  • -Dskywalking.trace.ignore_path=使用Ant風格指明了不需要追蹤的endPoint,如果有多個,可以使用英文逗号隔開

五、存在的問題

  • UI界面有時會卡死,原因是背景報了ID can`t be null的異常,可能是由于浏覽器緩存導緻的,這是目前版本存在的一個問題,但是整體上不影響服務的運作,重新打開一個頁面即可
  • 目前是多個自己的服務啟動時執行了同一個skywalking-agent.jar,尚不清楚這樣是否是最佳實踐或者是否存在某些問題。

繼續閱讀