skywalking簡介


監控的分類

Logging,Metrics和Tracing

  • Logging用於記錄離散的事件例如,應用程序的調試信息或錯誤信息,Logging是我們診斷問題的依據。
  • Metrics用於記錄可聚合的數據例如,隊列的當前深度可被定義為一個度量值,在元素入隊或出隊時被更新;HTTP請求個數可被定義為一個計數器,新請求到來時進行累加。
  • Tracing用於記錄請求范圍內的信息例如,一次遠程方法調用的執行過程和耗時。Tracing是我們排查系統性能問題的利器。


通過以上信息,可以對已有系統進行分類。
Zipkin,Skywalking等專注於tracing領域;
Prometheus開始專注於metrics,隨着時間推移可能會集成更多的tracing功能,但不太可能深入logging領域;
ELK這樣的系統開始專注於logging領域。

APM工具

現代APM(Application Performance Management/應用性能管理)體系,基本都是參考Google的Dapper(大規模分布式系統的跟蹤系統)的體系來做的。
通過跟蹤請求的處理過程,來對應用系統在前后端處理、服務端調用的性能消耗進行跟蹤。

簡介

Zipkin

由Twitter公司開源,開放源代碼分布式的跟蹤系統,用於收集服務的定時數據,以解決微服務架構中的延遲問題,包括:數據的收集、存儲、查找和展現。

SkyWalking

國產的優秀APM組件,2015年由個人吳晟(華為開發者)開源 ,2017年加入Apache孵化器;是一個對JAVA分布式應用程序集群的業務運行情況進行追蹤、告警和分析的系統。使用java探針字節碼增加技術,實現對整個應用的監控 ;對應用零侵入。針對分布式系統的應用性能監控系統,特別針對微服務、cloud native和容器化(Docker, Kubernetes, Mesos)架構, 其核心是個分布式追蹤系統;

CAT

CAT 作為服務端項目基礎組件,提供了 Java, C/C++, Node.js, Python, Go 等多語言客戶端,已經在美團點評的基礎架構中間件框架(MVC框架,RPC框架,數據庫框架,緩存框架等,消息隊列,配置系統等)深度集成,為美團點評各業務線提供系統豐富的性能指標、健康狀況、實時告警等。

Spring Cloud Sleuth

Spring Cloud Sleuth 主要功能就是在分布式系統中提供追蹤解決方案,並且兼容支持了 zipkin,你只需要在pom文件中引入相應的依賴即可。

特性

| ​

Zipkin+Sleuth SkyWalking CAT
開發者 Twitter Apache
實現方式 攔截請求,發送(HTTP,mq)數據至zipkin服務 java探針,字節碼增強,配置文件
接入方式 基於linkerd或者sleuth方式,引入配置即可 javaagent字節碼
顆粒度 接口級 方法
traceid查詢 支持 支持

選擇

上面都提供了分布式服務追蹤能力。但是我們業務系統之間調用使用dubbo調用。且需要TraceId. 所以我們選擇skywalking.

SkyWalking介紹

架構


SkyWalking邏輯上分為四個部分:Probes(探針), Platform backend(平台后端), Storage(存儲), UI
探針就是Agent負責采集數據並上報給服務端,服務端對數據進行處理和存儲,UI負責展示.

安裝

docker-compose 安裝

version: '3.3'
services:
  skywalking-oap:
    image: apache/skywalking-oap-server:8.6.0-es7
    container_name: skywalking-oap
    ports:
      - 11800:11800
      - 12800:12800
    environment:
      JAVA_OPTS: " -Xms256M -Xmx1024M"
      # es7存儲
      SW_STORAGE: elasticsearch7
      SW_STORAGE_ES_CLUSTER_NODES: 10.0.11.61:9200
      SW_ES_USER: elastic
      SW_ES_PASSWORD: xxx
      # 健康檢查
      SW_HEALTH_CHECKER: default
      SW_STORAGE_ES_BULK_ACTIONS: 4000
      SW_STORAGE_ES_BULK_SIZE: 40
      SW_STORAGE_ES_FLUSH_INTERVAL: 30
      SW_STORAGE_ES_CONCURRENT_REQUESTS: 4
      SW_STORAGE_ES_QUERY_MAX_SIZE: 8000
      SW_TRACE_SAMPLE_RATE: 5000
      TZ: Asia/Shanghai
    restart: on-failure



  skywalking-ui:
    image: apache/skywalking-ui:8.6.0
    container_name: skywalking-ui
    restart: always
    depends_on:
      - skywalking-oap
    ports:
      - 8848:8080
    environment:
      TZ: Asia/Shanghai
      SW_OAP_ADDRESS: skywalking-oap:12800

這里es是采用的 單獨安裝的。因為sw的主要性能瓶頸在es

SkyWalking Server配置文件說明

SkyWalking Server配置文件說明

SkyWalking UI指標使用說明

SkyWalking UI指標使用說明

Agent配置及使用

將apache-skywalking-apm-bin-es7/agent文件夾拷貝到發布容器中,位置可以根據情況調整

文件說明

  • config/agent.config:為客戶端代理配置文件
  • logs:SW agent相關運行情況日志。
  • bootstrap-plugins:引導插件
  • optional-plugins:可選插件
  • plugins:內置插件
  • skywalking-agent.jar:agent代理jar包。

啟動

-javaagent:D:/agent/skywalking-agent.jar -Dskywalking.agent.service_name=anqiu -Dskywalking.collector.backend_service=localhost:11800

apm-toolkit配置

添加依賴

    compile 'org.apache.skywalking:apm-toolkit-log4j-2.x:8.6.0'

修改log4j2-spring.xml

<Property name="CONSOLE_LOG_PATTERN">${APPNAME} %d{yyyy-MM-dd HH:mm:ss.SSS} [%traceId] %-5level [%t] %c - %msg%xEx%n</Property>

「ps:」 pattern 中的內容按需修改,其中的 %traceId 就是traceId,默認 TID:N/A,當有請求調用時會生成並顯示 traceId

效果如下

anqiu-education 2021-08-09 16:39:56.092 [TID: c9104f52d1ad448a9972f65fd37ceed3.107.16284983960320001] INFO  [qtp2021051054-107] com.anqiu.HttpAspect - 請求參數ARGS = [*] 

總結

  • 「優點」:無需編碼,業務無入侵,可與 SkyWalking 的圖形化界面中使用該ID快速定位各種接口的調用關系

  • 「缺點」:強耦合 SkyWalking 才能生效

      - 必須添加sk的 javaagent
      - 必須部署 SkyWalking 服務端
    


免責聲明!

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



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