1. 程式人生 > 程式設計 >微服務鏈路追蹤——skywalking

微服務鏈路追蹤——skywalking

前言

        skywalking是分散式系統的應用程式效能監視、分散式鏈路追蹤工具,跟聽雲、博瑞等一系列伺服器監控元件服務類似,開源的相關類似元件有zipkin、pinpoint等,由於筆者所在專案組準備升級springcloud,缺少相關鏈路監控元件,而zipkin屬於springcloud1.0相關,因此暫時選擇調研skywalking並對其進行搭建。         當前skywalking最新版本為6.4,本部落格示例中使用nacos作為註冊中心,springcloudgateway作為閘道器進行服務請求轉發。

正文

skywalking架構

        如下圖所示,整體主要分為三個部分:

  1. skywalking-agent:在被監控的服務啟動時新增的探針,用來收集和推送資料到歸集器,將資料通過gRPC方式傳送給collector元件;
  2. skywalking-collector:鏈路資料歸集器,接收agent傳送的資料並做處理,資料可以儲存在H2、ElasticSearch、mysql等;
  3. skywalking-web:web的視覺化管理後臺,對已經持久化的資料做回顯,顯示收集後的資料;

image

搭建skywalking

        搭建使用的各種服務版本如下:

nacos elasticsearch skywalking springcloudgateway
1.1.3 6.4.2 6.4.0 Greenwich.SR1

        搭建之前下載各個對應版本的包,並且需要保證對應埠不被佔用,8848(nacos)、9200(es)、8080(skywalking-web)、11800、12800。

搭建共分為以下幾步:1.nacos配置啟動;2.es配置啟動;3.skywalking-collector及skywalking-web配置啟動;4.skywalking-agent與服務啟動。

        1. 首先啟動nacos,詳見 nacos.io/zh-cn/docs/… ,本地訪問 http://localhost:8848/nacos 可以看到管理頁面。

        2. 其次配置和啟動es,首先修改es配置,在下載的es目錄 config/elasticsearch.yml,配置相應的節點名稱及host地址、埠,如下:

cluster.name: CollectorDBCluster
node.name: CollectorDBCluster
network.host: 127.0.0.1
http.port: 9200
複製程式碼

        ./elasticsearch -d 後臺執行,本地訪問 http://localhost:9200/ 出現下述資料表明es服務基本正常。

{
name: "CollectorDBCluster",cluster_name: "CollectorDBCluster",cluster_uuid: "NuJtMyOnShun26UWoXCQXw",version: {
number: "6.4.2",build_flavor: "default",build_type: "tar",build_hash: "04711c2",build_date: "2018-09-26T13:34:09.098244Z",build_snapshot: false,lucene_version: "7.4.0",minimum_wire_compatibility_version: "5.6.0",minimum_index_compatibility_version: "5.0.0"
},tagline: "You Know,for Search"
}
複製程式碼

        3.接著準備啟動skywalking,首先修改skywalking配置,config/application.yml 如下:

#註冊到nacos配置
cluster:
  nacos:
    serviceName: ${SW_SERVICE_NAME:"SkyWalking_OAP_Cluster"}
    # Nacos cluster nodes,example: 10.0.0.1:8848,10.0.0.2:8848,10.0.0.3:8848
    hostPort: ${SW_CLUSTER_NACOS_HOST_PORT:localhost:8848}

#儲存選擇es,注意nameSpace配置要一致,註釋掉h2;如果選擇使用h2,則不需要修改
storage:
  elasticsearch:
    nameSpace: CollectorDBCluster
    clusterNodes: 127.0.0.1:9200
    indexShardsNumber: 2
複製程式碼

        如果需要修改skywalking-web的埠號,需要修改webapp/webapp.yml。

        接著啟動skywalking,linux在skywalking bin目錄下執行./startup.sh,windows則執行startup.bat。此時我們應該能看到nacos控制檯(http://localhost:8848/nacos) 的服務列表中有skywalking註冊如列表中SkyWalking_OAP_Cluster,且能訪問skywalking控制檯(http://localhost:8080/)

image
image
        如果未能正常註冊、或者skywalking後臺無法正常訪問,就去skywalking/log/目錄下看一下日誌是否有異常。

        4.將skywalking目錄下agent附帶到相應的專案服務中啟動,如 java -javaagent:/software/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=127.0.0.1:11800 demo.jar 如果是在idea或eclipse中啟動專案,則在專案啟動的VM OPTIONS中增加引數 -javaagent:/software/skywalking/agent/skywalking-agent.jar -Dskywalking.agent.service_name=demo -Dskywalking.collector.backend_service=127.0.0.1:11800

        上面的-Dskywalking.agent.service_name是指註冊到skywalking的服務名稱,而-Dskywalking.collector.backend_service指的是skywalking接收agent傳送採集資料的服務及埠。 在啟動了兩個服務後,可以在後臺、拓撲圖中看到註冊的兩個服務及呼叫鏈,如下圖所示。

image

結語

        以上就是skywalking+nacos+elasticsearch+demo-service的搭建整個過程,我在這其中也遇到不少問題,如版本契合問題、skywalking現有bug問題、粗心配置寫錯問題等,一開始沒怎麼注意官方檔案,後續對照官方檔案改過之後才完成,希望與大家多多交流。

參考檔案: www.cnblogs.com/jackion5/p/…

blog.csdn.net/dpnice/arti…

github.com/apache/skyw…