Docker-Compose搭建單體SkyWalking 6.2


SkyWalking簡介

SkyWalking是一款高效的分布式鏈路追蹤框架,對於處理分布式的調用鏈路的問題定位上有很大幫助

有以下特點:

  • 性能好
    針對單實例5000tps的應用,在全量采集的情況下,只增加 10% 的CPU開銷。

  • 支持多語言探針

  • 支持自動及手動探針
    自動探針:Java支持的中間件、框架與類庫列表
    手動探針:OpenTrackingApi、@Trace注解、trackId集成到日志中。

本文基於Skywalking 6.2版本,使用自動探針演示效果,Elasticsearch作存儲,由低版本升級到此版本需要刪除ES的全部索引

Docker啟動的環境變量可以設置很多參數,這里只演示最基本的參數,其實Docker版本只是把服務部署在容器的操作系統中,通過查看鏡像的啟動入口腳本,發現只是將配置文件換傳入的參數是否存在輸出配置文件,與一行一行echo類似。。所以想對Docker版本的SkyWalking進行調整,只需要傳入對應的參數名kv對,這里把參數配置地址貼出https://github.com/apache/skywalking-docker/blob/master/6/6.2/oap/docker-entrypoint.sh

目錄結構

.
├── docker-compose.yml
└── .env

文件說明

  • docker-compose.yml Docker-compose配置文件
  • .env 環境變量配置文件

配置文件

docker-compose.yml

version: '3.3'
services:
  oap:
    image: apache/skywalking-oap-server:6.2.0
    container_name: skywalking-oap
    restart: always
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      - SW_STORAGE=elasticsearch #Es的存儲
      - SW_STORAGE_ES_CLUSTER_NODES=${ES_NODE} # Es的節點地址,從.env文件中取
      - TZ=Asia/Shanghai #設定東八區的城市,防止Oap記錄數據時用0時區
  ui:
    image: apache/skywalking-ui:6.2.0
    container_name: skywalking-ui
    depends_on:
      - oap
    links:
      - oap
    restart: always
    ports:
      - 18080:8080 #默認8080端口,這里設置18080映射到宿主機,可修改
    environment:
      collector.ribbon.listOfServers: oap:12800

.env

# set default props for docker-compose.yml
# set ES_Cluster or standalone Elasticsearch node. format is "ip:port"
ES_NODE=10.2.7.70:9204

准備工作

  • 進入與docker-compose.yml同級目錄
  • 查看118001280018080這三個端口不能被占用,如果已占用,請自行修改docker-compose.yml的端口號
  • 修改.env
ES_NODE=10.2.7.70:9204 #這里的ip:port應指向Elasticsearch的協調節點,請盡量不要指向主節點和數據節點

啟動服務端

執行docker-compose up -d

查看前端

瀏覽器訪問宿主機ip:18080,效果如下圖

此圖為已經使用探針后的表現

Agent自動探針采集數據設置

這里的Agent要與OAP的版本保持一致,這里使用6.2版本

Java只需要在VM options中追加格式為

-javaagent:/path/to/path/skywalking-agent.jar 
-Dskywalking.agent.service_name=YOUR_APP_NAME 
-Dskywalking.collector.backend_service=OAP_SEVER_HOST:gRPC_PORT

舉例如下:

-javaagent:D:/skywalking-agent/skywalking-agent.jar 
-Dskywalking.agent.service_name=eureka-peer2 
-Dskywalking.collector.backend_service=10.2.7.70:11800
  • 這里僅舉例agent gRPC方式,Restful請求方式默認使用12800端口,請自行對應
  • /path/to/path為agent的jar包位置,啟動進程中會讀取config/agent.conf,我們通過-D添加了參數會覆蓋這些配置,所以一個agent包是可以支持多個服務啟動的

效果圖

問題發現與解決

Q1:

graphql.execution.SimpleDataFetcherExceptionHandler -1061995 [qtp1609086753-159] WARN [] - Exception while fetching data (/latencyS) : IDs can't be null java.lang.RuntimeException: IDs can't be null

A1:

此問題為ui端的問題,無需解決,對SkyWalking后端無影響

包括其它IDs can't be null的問題,均為UI端的問題,影響不大,可以忽略


Q2:

探針已經連接成功了,UI端已經顯示終端/端點有連接數,但是無論怎么請求都沒有調用鏈和請求展示

A2:

請檢查操作系統時區設置,SkyWalking默認會讀取當前操作系統的時區設置,如果使用0時區,基於時間戳方式查詢自然不會查詢到結果,所以設置時區為東八區即可,如果是Docker方式,可以使用 -e TZ=Asia/Shanghai

本文系搭建筆記,拒絕轉載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM