微服務鏈路追蹤——skywalking

前言

        skywalking是分佈式系統的應用程序性能監視、分佈式鏈路追蹤工具,跟聽雲、博瑞等一系列服務器監控組件服務相似,開源的相關相似組件有zipkin、pinpoint等,因爲筆者所在項目組準備升級springcloud,缺乏相關鏈路監控組件,而zipkin屬於springcloud1.0相關,所以暫時選擇調研skywalking並對其進行搭建。         當前skywalking最新版本爲6.4,本博客示例中使用nacos做爲註冊中心,springcloudgateway做爲網關進行服務請求轉發。html

正文

skywalking架構

        以下圖所示,總體主要分爲三個部分:java

  1. skywalking-agent:在被監控的服務啓動時添加的探針,用來收集和推送數據到歸集器,將數據經過gRPC方式發送給collector組件;
  2. skywalking-collector:鏈路數據歸集器,接收agent發送的數據並作處理,數據能夠保存在H二、ElasticSearch、mysql等;
  3. skywalking-web:web的可視化管理後臺,對已經持久化的數據作回顯,顯示收集後的數據;

image

搭建skywalking

        搭建使用的各類服務版本以下:node

nacos elasticsearch skywalking springcloudgateway
1.1.3 6.4.2 6.4.0 Greenwich.SR1

        搭建以前下載各個對應版本的包,而且須要保證對應端口不被佔用,8848(nacos)、9200(es)、8080(skywalking-web)、11800、12800。mysql

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

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

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

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

        ./elasticsearch -d 後臺運行,本地訪問 http://localhost:9200/ 出現下述數據代表es服務基本正常。web

{
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 以下:spring

#註冊到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。sql

        接着啓動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…

相關文章
相關標籤/搜索