SkyWalking-分布式鏈路追蹤

什么是鏈路追蹤

微服務(wù)架構(gòu)是通過(guò)業(yè)務(wù)來(lái)劃分服務(wù)的,使用 REST 調(diào)用。對(duì)外暴露的一個(gè)接口,可能需要很多個(gè)服務(wù)協(xié)同才能完成這個(gè)接口功能,如果鏈路上任何一個(gè)服務(wù)出現(xiàn)問(wèn)題或者網(wǎng)絡(luò)超時(shí),都會(huì)形成導(dǎo)致接口調(diào)用失敗。隨著業(yè)務(wù)的不斷擴(kuò)張,服務(wù)之間互相調(diào)用會(huì)越來(lái)越復(fù)雜。


服務(wù)調(diào)用

隨著服務(wù)的越來(lái)越多,對(duì)調(diào)用鏈的分析會(huì)越來(lái)越復(fù)雜。它們之間的調(diào)用關(guān)系也許如下:

性能瓶頸

面對(duì)以上情況,我們就需要一些可以幫助理解系統(tǒng)行為、用于分析性能問(wèn)題的工具,以便發(fā)生故障的時(shí)候,能夠快速定位和解決問(wèn)題,這就是所謂的 APM(應(yīng)用性能管理)。

什么是 SkyWalking (華為吳晟)

目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWalking;Apache SkyWalking 是觀(guān)察性分析平臺(tái)和應(yīng)用性能管理系統(tǒng)。提供分布式追蹤、服務(wù)網(wǎng)格遙測(cè)分析、度量聚合和可視化一體化解決方案。

什么是 SkyWalking
  • Skywalking Agent: 使用 JavaAgent 做字節(jié)碼植入,無(wú)侵入式的收集,并通過(guò) HTTP 或者 gRPC 方式發(fā)送數(shù)據(jù)到 SkyWalking Collector。
  • SkyWalking Collector: 鏈路數(shù)據(jù)收集器,對(duì) agent 傳過(guò)來(lái)的數(shù)據(jù)進(jìn)行整合分析處理并落入相關(guān)的數(shù)據(jù)存儲(chǔ)中。
  • Storage: SkyWalking 的存儲(chǔ),時(shí)間更迭,SW 已經(jīng)開(kāi)發(fā)迭代到了 6.x 版本,在 6.x 版本中支持以 ElasticSearch(支持 6.x)、Mysql、TiDB、H2、作為存儲(chǔ)介質(zhì)進(jìn)行數(shù)據(jù)存儲(chǔ)。
  • UI: Web 可視化平臺(tái),用來(lái)展示落地的數(shù)據(jù)。

SkyWalking 優(yōu)勢(shì)

  • 多種監(jiān)控手段,語(yǔ)言探針和服務(wù)網(wǎng)格(Service Mesh)
  • 多語(yǔ)言自動(dòng)探針,Java,.NET Core 和 Node.JS
  • 輕量高效,不需要大數(shù)據(jù)
  • 模塊化,UI、存儲(chǔ)、集群管理多種機(jī)制可選
  • 支持告警
  • 優(yōu)秀的可視化方案

SkyWalking 安裝配置


下載并構(gòu)建 SkyWalking 鏡像

官方已經(jīng)為我們準(zhǔn)備好了編譯過(guò)的服務(wù)端版本,下載地址為 http://skywalking.apache.org/downloads/,這里我們需要下載 6.x releases 版本

下載tar包

wget http://mirror.bit.edu.cn/apache/skywalking/6.1.0/apache-skywalking-apm-6.1.0.tar.gz 
配置 SkyWalking

下載完成后解壓縮,進(jìn)入 apache-skywalking-apm-incubating/config 目錄并修改 application.yml 配置文件
這里需要做三件事:

  • 注釋 H2 存儲(chǔ)方案
  • 啟用 ElasticSearch 存儲(chǔ)方案
  • 修改 ElasticSearch 服務(wù)器地址
storage:
  elasticsearch:
    #    nameSpace: ${SW_NAMESPACE:""}
    clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:elasticsearch:9200}
    #    user: ${SW_ES_USER:""}
    #password: ${SW_ES_PASSWORD:""}
    indexShardsNumber: ${SW_STORAGE_ES_INDEX_SHARDS_NUMBER:2}
    indexReplicasNumber: ${SW_STORAGE_ES_INDEX_REPLICAS_NUMBER:0}
    # Batch process setting, refer to https://www.elastic.co/guide/en/elasticsearch/client/java-api/5.5/java-docs-bulk-processor.html
    bulkActions: ${SW_STORAGE_ES_BULK_ACTIONS:2000} # Execute the bulk every 2000 requests
    bulkSize: ${SW_STORAGE_ES_BULK_SIZE:20} # flush the bulk every 20mb
    flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10} # flush the bulk every 10 seconds whatever the number of requests
    concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2} # the number of concurrent requests
    metadataQueryMaxSize: ${SW_STORAGE_ES_QUERY_MAX_SIZE:5000}
    segmentQueryMaxSize: ${SW_STORAGE_ES_QUERY_SEGMENT_SIZE:200}
#  h2:
#    driver: ${SW_STORAGE_H2_DRIVER:org.h2.jdbcx.JdbcDataSource}
#    url: ${SW_STORAGE_H2_URL:jdbc:h2:mem:skywalking-oap-db}
#    user: ${SW_STORAGE_H2_USER:sa}
#    metadataQueryMaxSize: ${SW_STORAGE_H2_QUERY_MAX_SIZE:5000}

構(gòu)建 SkyWalking 鏡像并啟動(dòng)

Dockerfile

FROM centos:7

# Timezone, Asia/Shanghai by default
ENV Timezone=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$Timezone /etc/localtime && echo '$Timezone' > /etc/timezone

RUN yum install -y wget && \
    yum install -y java-1.8.0-openjdk

WORKDIR /app
COPY apache-skywalking-apm-bin skywalking
RUN echo "tail -f /dev/null" >> /app/skywalking/bin/startup.sh

CMD ["/bin/sh","-c","/app/skywalking/bin/startup.sh" ]

docker-compose.yml

version: '3.3'
services:
  elasticsearch:
    image: wutang/elasticsearch-shanghai-zone:6.3.2
    container_name: elasticsearch
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      cluster.name: elasticsearch
  skywalking:
      build: .
      container_name: skywalking
      ports:
        - 10800:10800
        - 11800:11800
        - 12800:12800
        - 8090:8080
      links:
        - elasticsearch:elasticsearch
      depends_on:
        - elasticsearch      

通過(guò)瀏覽器訪(fǎng)問(wèn) http://serverIP:8090 出現(xiàn)如下界面即表示啟動(dòng)成功

駕駛艙

默認(rèn)的用戶(hù)名密碼為:admin/admin,登錄成功后,效果如下圖

image
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 隨著微服務(wù)架構(gòu)的流行,一些微服務(wù)架構(gòu)下的問(wèn)題也會(huì)越來(lái)越突出,比如一個(gè)請(qǐng)求會(huì)涉及多個(gè)服務(wù),而服務(wù)本身可能也會(huì)依賴(lài)其他...
    BeckJin閱讀 428,212評(píng)論 44 122
  • 說(shuō)明:本次對(duì)比基于skywalking-6.0.0-GA和Pinpoint-1.8.2(截止2019-02-19最...
    阿飛的博客閱讀 15,467評(píng)論 0 31
  • APM(Application Performance Management)理論模型 Dapper,大規(guī)模分布式...
    superlee01閱讀 33,084評(píng)論 1 17
  • 什么是 SkyWalking 目前主要的一些 APM 工具有: Cat、Zipkin、Pinpoint、SkyWa...
    Lucie_xxm閱讀 910評(píng)論 0 0
  • 你是我假想的第三者是我靈魂缺失的完美一點(diǎn),你是我愛(ài)的理由堅(jiān)持的腳步,可是你卻是你而根本不是人群中的你的假象如果對(duì)照...
    maizidexin520閱讀 205評(píng)論 0 1

友情鏈接更多精彩內(nèi)容