【SkyWalking】Java服務從零接入全鏈路追蹤解決方案

語言: CN / TW / HK

theme: v-green

我正在參加「掘金·啟航計劃」

SkyWalking基本結構

  • 探針

  • 基於不同的來源可能是不一樣的, 但作用都是收集資料, 將資料格式化為 SkyWalking 適用的格式.

  • 基於語言的原生代理
  • 服務網格探針
  • 第三放打點類庫

  • 平臺後端

  • 支援資料聚合, 資料分析以及驅動資料流從探針到使用者介面的流程。

  • 分析包括 Skywalking 原生追蹤和效能指標以及第三方來源,包括 Istio 及 Envoy telemetry , Zipkin 追蹤格式化等。
  • 甚至可以使用 Observability Analysis Language 對原生度量指標用於擴充套件度量的計量系統 自定義聚合分析。

  • 儲存

  • 通過開放的外掛化的介面存放 SkyWalking 資料.

  • 你可以選擇一個既有的儲存系統, 如 ElasticSearch, H2 或 MySQL 叢集(Sharding-Sphere 管理),也可以選擇自己實現一個儲存系統. 當然, 我們非常歡迎你貢獻新的儲存系統實現。

  • UI

  • 一個基於介面高度定製化的Web系統,使用者可以視覺化檢視和管理 SkyWalking 資料。

SkyWalking程式碼結構

  • agent

    1. skwwalking-agent.jar 代理服務jar包
    2. config: 代理服務啟動時使⽤的配置⽂件
    3. plugins: 包含多個外掛,代理服務啟動時會載入該⽬錄下的所有外掛(實際上時各種jar包) optional-plugins:可選外掛,當需要⽀持某些功能時,⽐如 Spring Cloud Gateway,則需要把對 應的jar包拷⻉到plugins⽬錄下;
  • webapp: UI前端(web監控⻚⾯)的jar包配置⽂件

    1. webapp.yml : 預設配置啟動UI時訪問端⼝ 8080,需要更改
    2. listOfServers表示接收前端請求端⼝12800
  • oap-libs:

    1. 後臺應⽤的jar包,以及它的依賴jar包,⾥⾯有⼀個server-starter-*.jar就時對應的啟動程式
  • config:啟動後臺應⽤程式的配置⽂件

    1. application.yml:可配置儲存資料庫型別、⾼可⽤註冊服務等 ,需要修改儲存方式改為ES儲存
  • bin: 各種啟動指令碼,⼀般使⽤指令碼startup.*來啟動web⻚⾯和對應的後臺應⽤;

    1. oapServer.*: 預設使⽤的後臺程式的啟動指令碼;(使⽤的預設模式啟動,還⽀持)
    2. oapServerInit.*: 使⽤init模式啟動,在此模式下,OAP伺服器啟動以執⾏初始化⼯作,然後退出
    3. oapServerNoInit.*:使⽤no init模式啟動,在此模式下,OAP伺服器不進⾏初始化
    4. webappService.*: UI前端的啟動指令碼
    5. startup.:組合指令碼,同時啟動oapServer. ,webappService.*指令碼

    SkyWalking搭建8.6.0-es版本

  • 下載連結:https://archive.apache.org/dist/skywalking/8.6.0/

  • 首先需要修改啟動埠

vi apache-skywalking-apm-bin-es7/webapp/webapp.yml,修改server.port(原8080)

  1. 修改儲存型別

vi apache-skywalking-apm-bin-es7/config/application.yml

image.png

image.png

  1. sh apache-skywalking-apm-bin-es7/bin/startup.sh  啟動
  2. skywalking服務日誌儲存到apache-skywalking-apm-bin-es7/logs中
  3. 啟動成功後會啟動兩個服務,⼀個是skywalking-oap-server,⼀個是skywalking-web-ui
  4. skywalking-oap-server服務啟動後會暴露11800 和 12800 兩個端⼝,分別為收集監控資料的端⼝11800和接受前端請求的端⼝12800

Java服務接入SkyWalking

  • 使用Java agent方式監控服務,編寫sheel啟動指令碼,直接執行改指令碼即可 export SW_AGENT_NAME=sky_service export SW_AGENT_COLLECTOR_BACKEND_SERVICES=127.0.0.1:11800 #skywalking Collector地址 export SW_AGENT_SPAN_LIMIT=2000 #配置鏈路最大Span數量,預設為300 export JAVA_AGENT=-javaagent:../apache-skywalking-apm-bin-es7/agent/skywalking-agent.jar #agent包地址 nohup java $JAVA_AGENT -jar *.jar &

  • 控制檯列印tracid,需要更改日誌格式,配置logback-spring.xml檔案 ````

-%clr(%d{${LOG_DATEFORMAT_PATTERN:-yyyy-MM-dd HH:mm:ss.SSS}}){faint}%clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} [%tid] %clr(---){faint}%clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint}%m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}

     </layout>

  </encoder>

%d{yyyy-MM-dd HH:mm:ss.SSS} [%X{tid}] [%thread] %-5level %logger{36} -%msg%n

````

接入效果

指標儀表盤

image.png

拓撲圖

image.png

日誌監控

image.png

image.png