skywalking 6.4 分佈式鏈路跟蹤 使用筆記

介紹(摘自上一篇 「skywalking5.X使用筆記」):html

skywalking 簡介(鏈路跟蹤與分析)java

隨着業務愈來愈複雜,企業應用也進入了分佈式服務化的階段,隨着模塊的不斷增多,一次請求可能會涉及到十幾個甚至幾十個服務的協同處理,那麼如何準確快速的定位到線上故障和性能瓶頸,便成爲咱們不得不面對的棘手問題,傳統的日誌監控等方式沒法很好達到跟蹤調用,排查問題等需求。在谷歌論文《 Dapper,大規模分佈式系統的跟蹤系統》的指導下,許多優秀的APM應運而生。mysql

分佈式追蹤系統發展很快,種類繁多,給咱們帶來很大的方便。但在數據採集過程當中,有時須要侵入用戶代碼,而且不一樣系統的 API 並不兼容,這就致使了若是您但願切換追蹤系統,每每會帶來較大改動。OpenTracing爲了解決不一樣的分佈式追蹤系統 API 不兼容的問題,誕生了 OpenTracing 規範。OpenTracing 是一個輕量級的標準化層,它位於應用程序/類庫和追蹤或日誌分析程序之間。詳細介紹見linux

Skywalking是一款國內開源的應用性能監控工具,支持對分佈式系統的監控、跟蹤和診斷。git

Skywalking是一款APM(應用程序性能監視器),尤爲適用於微服務,Cloud Native和基於容器的架構系統。也稱爲分佈式跟蹤系統。它提供了一種自動檢測應用程序的方法:無需更改目標應用程序的任何源代碼; 以及具備高效流媒體模塊的收集器。github

針對分佈式系統的APM(應用性能監控)系統,特別針對微服務、cloud native和容器化(Docker, Kubernetes, Mesos)架構, 其核心是個分佈式追蹤系統。web

該項目由國人吳晟基於OpenTracking實現的開源項目skywalking(碼雲、github)sql

2017年12月8日,Apache軟件基金會孵化器項目管理委員會 ASF IPMC宣佈「SkyWalking全票經過,進入Apache孵化器」數據庫

官方的首頁的圖片上能夠到skywalking大體架構;apache

 

特性:

存儲,集羣管理多種機制可選;

優秀的可視化方案;

多種監控手段,語言探針和服務網格;

輕量高效,不須要大數據(官網這句沒懂);

支持告警;

多語言自動探針,Java,.NET Core和Node.JS;

模塊化,用戶界面化;

目前最新版的可以支持jdk1.9;

國內衆多一線大廠在採用skywalking作爲監控與鏈路性能分析平臺,如:華爲、噹噹、小米、招商等;

2019年4月SkyWalking已畢業成爲Apache頂級項目,有多位大牛技術支撐以及社區有大量受衆參與;

性能好,針對單實例5000tps的應用,在全量採集的狀況下,只增長 10% 的CPU開銷。詳細評測見《skywalking agent performance test》。

採用探針技術,在使用過程當中,徹底是0代碼,無侵入,分佈式自動採集與監控系統運行;

支持自動及手動探針;

    自動探針:Java支持的中間件、框架與類庫列表;

    手動探針:OpenTrackingApi、@Trace註解、trackId集成到日誌中。

 

整體特性(來源於官網博客):

    1.Skywalking Agent:使用Javaagent作字節碼植入,無侵入式的收集,並經過HTTP或者gRPC方式發送數據到Skywalking Collector。

    2. Skywalking Collector :鏈路數據收集器,對agent傳過來的數據進行整合分析處理並落入相關的數據存儲中。

    3. Storage:Skywalking的存儲,時間更迭,sw已經開發迭代到了6.x版本,在6.x版本中支持以ElasticSearch、Mysql、TiDB、H二、做爲存儲介質進行數據存儲。

    4. UI :Web可視化平臺,用來展現落地的數據。

參見官方(博客):http://skywalking.apache.org/zh/blog/2019-01-03-monitor-microservice.html

 

官網

apache官網:http://skywalking.apache.org/zh/

github:https://github.com/apache/skywalking/

官方示例:http://122.112.182.72:8080/

官方文檔(可用谷歌翻譯看):https://github.com/apache/skywalking/tree/master/docs

 

下載

全文檢索引擎:elasticsearch-6.6.2

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.6.2.tar.gz

elasticsearch-head管理插件

wget https://codeload.github.com/mobz/elasticsearch-head/zip/master

apache-skywalking6.4安裝包

wget https://mirrors.tuna.tsinghua.edu.cn/apache/skywalking/6.4.0/apache-skywalking-apm-6.4.0.zip

 

注意:skywalking6.4使用數據源elasticsearch-6.x系統版本(我下載最新的elasticsearch-7.x版本折騰了半天,最後放棄,因skywalking會向elasticsearch建立大量template索引模板,因elasticsearch-7.x的版本過新,其中部份字段配置有變化,導制沒法建立成功)

 

安裝步驟

安裝數據源與插件(相關安裝與使用,網上資料衆多)

elasticsearch-6.6.2(安裝過程省略,請自行百度)

elasticsearch-head(安裝過程省略,請自行百度)

 

解壓apache-skywalking-apm-6.4.0.zip,目錄說明:

agent:監控代理程序,請在系統服務所在的主機保留該目錄內全部內容(該目錄作爲獨立程序);

bin:啓動腳本

webapp:UI程序與服務目錄

config:相關數據源、註冊中心等配置存放目錄

 

配置數據源

使用elasticsearch

打開config/application.yml配置文件 ,在storage節點,註釋h2數據源,啓用elasticsearch全文檢索引擎作爲數據源存儲;

h2是默認自帶的內嵌式數據庫(有興趣可自行百度)

注意其中的幾個核心參數:

# 配置你的elasticsearch服務的IP和端口,集羣IP請用「,」逗號隔開

clusterNodes: ${SW_STORAGE_ES_CLUSTER_NODES:192.168.110.35:9200}

#存儲最多7天的內容,過時數據將會清理。所以請根據實際需求進行調整

recordDataTTL: ${SW_STORAGE_ES_RECORD_DATA_TTL:7} # Unit is day

# 每10秒刷新數據到收集器中

flushInterval: ${SW_STORAGE_ES_FLUSH_INTERVAL:10}

# 提供2個併發請求,若是系統業務量大,日誌產生的很是快,請根據實況調整

concurrentRequests: ${SW_STORAGE_ES_CONCURRENT_REQUESTS:2}

 

使用mysql

打開config/application.yml配置文件 ,在storage節點,一樣將h2註釋掉,將mysql的配置打開

打開config/datasource-settings.properties配置文件,根據自身的配置進行修改

後續本文演示的內容均基於elasticsearch數據源進行展現;

 

 

修改agent代理配置

注意如下修改:

# 將Your_ApplicationName修改成自已的項目名稱

agent.service_name=${SW_AGENT_NAME:Your_ApplicationName}

# 將代理程序的指向收集器服務的IP和端口

collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:192.168.110.35:11800}

 

運行

運行收集器與UI程序

進入bin目錄(我是上傳到linux環境下運行,若是是windows請雙擊運行 startup.bat)

./startup.sh

也能夠分別單獨啓動

單獨啓動collector,運行

./oapService.sh

單獨啓動UI,運行

./webappService.sh

 

使用agnet

在apache-skywalking-apm-bin解壓包下的agent目錄中爲代理程序獨立包目錄。該agent文件夾,能夠單獨複製出放在項目系統所在服務器的任意目錄下。

agent文件夾下的skywalking-agent.jar即爲監控代理程序,只須要在jvm的啓動命令中加載該jar包,便可完成監控代理;

 

部署 java agent

Linux Tomcat 7, Tomcat 8

修改 tomcat/bin/catalina.sh,在首行加入以下信息:

CATALINA_OPTS="$CATALINA_OPTS -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar"; export CATALINA_OPTS

Windows Tomcat 7, Tomcat 8

修改 tomcat/bin/catalina.bat,在首行加入以下信息:

set "CATALINA_OPTS=-javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar"

JAR file

在啓動你的應用程序的命令行中添加 -javaagent 參數. 並確保在-jar參數以前添加它. 例如:

java -javaagent:/opt/apache-skywalking-apm-bin/agent/skywalking-agent.jar -jar yourApp.jar

 

IDAE配置Agent

在IDEA中配置本地程序agent代理,在VM options中-javaagent:D:\test\apache-skywalking-apm-bin\agent\skywalking-agent.jar,配置完畢直接運行便可;

運行項目系統後,打開系統界面進行業務操做,則skywalking-agent.jar會根據代理計劃,收集相關日誌發送到skywalking收集器服務中。

 

skywalkingUI界面

打開skywalking管理界面(skywalking服務部署的IP):

http://localhost:8080

刷新界面,便可獲取agent發送的監控數據;

界在相對比較簡潔,功能很少,但都比較實用,能夠在多個項目與數據庫之間切換,相關指標能夠看懂,不在本文詳細描述,具體操做以下:

 

首頁概覽

 

URL鏈路追蹤

 

鏈接拓撲圖

當前數據庫

 

全局信息

當前服務

當前實例

 

總結

      簡潔又好用的軟件,比大衆點評的cat要容易上手(我的認爲不如cat功能強大與複雜),已經知足對於系統的鏈路跟蹤與分析需求,最後再次向skywalking原始做者大牛吳晟致敬;

     附上個人《skywalking 5.X 分佈式鏈路跟蹤 使用筆記》裏面有關於項目代碼中使用手動探針:OpenTrackingApi、@Trace註解、trackId集成到日誌中。

http://www.javashuo.com/article/p-qkjzoqvu-hk.html

相關文章
相關標籤/搜索