Skywalking介紹

微服務架構已經是一個很通用的系統(tǒng)架構狼荞,常見的技術棧如下圖所示部凑,這張架構圖基本涵括了當前微服務體系下的各種技術棧分歇,可能不同的技術棧有不同的開源實現(xiàn)善炫。


Screen Shot 2022-01-23 at 12.48.19 PM.png

今天主要介紹Skywalking例驹,數(shù)據(jù)鏈路追蹤捐韩,主要的資料來源于網上的教程。

鏈路追蹤介紹

對于一個大型的幾十個鹃锈,幾百個微服務構成的微服務架構系統(tǒng)荤胁,通常會遇到下面的一系列問題。

  • 如何串聯(lián)整個調用鏈路仪召,快速定位問題寨蹋?
  • 如何澄清各個微服務之間的依賴關系?
  • 如何進行各個微服務接口的性能分析扔茅?
  • 如何追蹤各個業(yè)務流程的調用處理順序已旧?

Skywalking介紹

Skywalking是一個國產的開源框架,2015年有吳晟個人開源召娜,2017年加入Apache孵化器运褪,國人開源的產品,主要開發(fā)人員來自于華為玖瘸,2019年4月17日Apache董事會批準SkyWalking成為頂級項目秸讹,支持Java、.Net雅倒、NodeJs等探針璃诀,數(shù)據(jù)存儲支持Mysql、Elasticsearch等蔑匣,跟Pinpoint一樣采用字節(jié)碼注入的方式實現(xiàn)代碼的無侵入劣欢,探針采集數(shù)據(jù)粒度粗,但性能表現(xiàn)優(yōu)秀裁良,且對云原生支持凿将,目前增長勢頭強勁,社區(qū)活躍价脾。
Skywalking是分布式系統(tǒng)的應用程序性能監(jiān)視工具牧抵,專為微服務,云原生架構和基于容器(Docker侨把,K8S,Mesos)架構而設計犀变,它是一款優(yōu)秀的APM(Application Performance Management)工具妹孙,包括了分布式追蹤,性能指標分析和服務依賴分析等弛作。

鏈路追蹤框架對比

目前市面上開源的APM系統(tǒng)主要有CAT涕蜂、Zipkin华匾、Pinpoint映琳、SkyWalking,大都是參考Google的Dapper實現(xiàn)的

功能和技術方案對比

  • Zipkin是Twitter開源的調用鏈路分析工具蜘拉,目前基于Spingcloud sleuth得到了廣泛的應用萨西,特點是輕量,部署簡單旭旭。
  • 一個韓國團隊開源的產品谎脯,運用了字節(jié)碼增強技術,只需要在啟動時添加啟動參數(shù)即可持寄,對代碼無侵入源梭,目前支持Java和PHP語言,底層采用HBase來存儲數(shù)據(jù)稍味,探針收集的數(shù)據(jù)粒度非常細废麻,但性能損耗大,因其出現(xiàn)的時間較長模庐,完成度也很高烛愧,應用的公司較多
  • Skywalking是本土開源的基于字節(jié)碼注入的調用鏈路分析以及應用監(jiān)控分析工具,特點是支持多種插件掂碱,UI功能較強怜姿,接入端無代碼侵入。
  • CAT是由國內美團點評開源的疼燥,基于Java語言開發(fā)沧卢,目前提供Java、C/C++醉者、Node.js但狭、Python、Go等語言的客戶端湃交,監(jiān)控數(shù)據(jù)會全量統(tǒng)計熟空,國內很多公司在用,例如美團點評搞莺、攜程息罗、拼多多等,CAT跟下邊要介紹的Zipkin都需要在應用程序中埋點才沧,對代碼侵入性強迈喉。


    Screen Shot 2022-01-23 at 1.19.18 PM.png

性能對比

模擬了三種并發(fā)用戶绍刮,500,750挨摸,1000孩革,使用JMeter測試,每個線程發(fā)送30個請求得运,設置間隔時間為10ms膝蜈,使用采用頻率為1,即100%熔掺。下面是性能測試報告:


Screen Shot 2022-01-23 at 1.29.45 PM.png

從上表可以看出饱搏,在三種鏈路監(jiān)控組件中,skywalking探針對吞吐量影響最小置逻,zipkin對吞吐量影響適中推沸,pinpoint的探針對吞吐量影響最大。對于內存和cpu的使用券坞,都差不多鬓催,相差在10%之內。

Skywalking介紹

Skywalking架構

SkyWalking 邏輯上分為四部分: 探針, 平臺后端, 存儲和用戶界面恨锚。


image.png
image.png
  • 探針 基于不同的來源可能是不一樣的, 但作用都是收集數(shù)據(jù), 將數(shù)據(jù)格式化為 SkyWalking 適用的格式.
  • 平臺后端, 支持數(shù)據(jù)聚合, 數(shù)據(jù)分析以及驅動數(shù)據(jù)流從探針到用戶界面的流程宇驾。分析包括 Skywalking 原生追蹤和性能指標以及第三方來源,包括 Istio 及 Envoy telemetry , Zipkin 追蹤格式化等眠冈。 你甚至可以使用 Observability Analysis Language 對原生度量指標用于擴展度量的計量系統(tǒng) 自定義聚合分析飞苇。
  • 存儲 通過開放的插件化的接口存放 SkyWalking 數(shù)據(jù). 你可以選擇一個既有的存儲系統(tǒng), 如 ElasticSearch, H2 或 MySQL 集群(Sharding-Sphere 管理),也可以選擇自己實現(xiàn)一個存儲系統(tǒng). 當然, 我們非常歡迎你貢獻新的存儲系統(tǒng)實現(xiàn)。
  • UI 一個基于接口高度定制化的Web系統(tǒng)蜗顽,用戶可以可視化查看和管理 SkyWalking 數(shù)據(jù)布卡。

Skywalking功能介紹

  • 多種監(jiān)控手段,可以通過語言探針和service mesh獲得監(jiān)控的數(shù)據(jù)
  • 支持多重語言的自動探針雇盖,包括JAVA, .NET Core和NodeJS
  • 輕量高效忿等,無需大數(shù)據(jù)平臺和大量的服務器資源
  • 模塊化,UI ,存儲崔挖,集群管理都有多種機制可選
  • 支持告警
  • 優(yōu)秀的可視化解決方案

環(huán)境搭建

Screen Shot 2022-01-23 at 2.49.08 PM.png
  • Skywalking agent和業(yè)務端綁定在一起贸街,負責收集各種監(jiān)控數(shù)據(jù)
  • Skywalking oapservice是負責處理監(jiān)控數(shù)據(jù),接受agent的數(shù)據(jù)并存儲在數(shù)據(jù)庫中狸相,接受來自UI的請求薛匪,查詢監(jiān)控數(shù)據(jù)。
  • Skywalking UI提供給用戶脓鹃,展現(xiàn)各種監(jiān)控數(shù)據(jù)和告警逸尖。

Skywalking目錄結構

Screen Shot 2022-01-23 at 2.57.49 PM.png

Skywalking告警

Screen Shot 2022-01-23 at 3.01.05 PM.png

Skywalking UI

image.png
Screen Shot 2022-01-23 at 5.27.51 PM.png

Skywalking數(shù)據(jù)下轉

Skywalking提供了詳細的數(shù)據(jù)分析功能,首先能分析出各個組件的調用關系拓撲圖,然后能從拓撲圖下轉到每個功能組件娇跟,模塊岩齿,方法的詳細性能,提供整個數(shù)據(jù)鏈路追蹤苞俘。如下示意圖盹沈,


WechatIMG8.jpeg
WechatIMG7.jpeg
WechatIMG6.jpeg
WechatIMG5.jpeg

WechatIMG4.jpeg

WechatIMG3.jpeg

WechatIMG2.jpeg

Skywalking log集成

Skywalking 可以與日志功能集成,將模塊的日志上傳到中心進行集中查看吃谣。
有l(wèi)ogback乞封,log4j等對應的jar來收集各個模塊的日志。比如集成logback基协,配置方式如下:

引入jar
<dependency>
    <groupId>org.apache.skywalking</groupId>
    <artifactId>apm-toolkit-logback-1.x</artifactId>
    <version>8.4.0</version>
</dependency>
配置logback
<configuration>  
    <!-- 控制臺輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>
    <! -- 配置異步記錄 AsyncAppender -->
    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>1024</queueSize>
        <neverBlock>true</neverBlock>
        <appender-ref ref="STDOUT"/>
    </appender>
    <!-- skywalking grpc 日志收集 8.4.0版本開始支持 -->
    <appender name="grpc-log" class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppender">
        <encoder class="ch.qos.logback.core.encoder.LayoutWrappingEncoder">
            <layout class="org.apache.skywalking.apm.toolkit.log.logback.v1.x.mdc.TraceIdMDCPatternLogbackLayout">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n</Pattern>
            </layout>
        </encoder>
    </appender>

    <!--系統(tǒng)操作日志-->
    <root level="DEBUG">  
        <appender-ref ref="STDOUT"/> 
        <appender-ref ref="ASYNC"/> 
        <appender-ref ref="grpc-log"/>
    </root>
</configuration>
配置日志插件
plugin.toolkit.log.grpc.reporter.server_host=${SW_GRPC_LOG_SERVER_HOST:127.0.0.1}
plugin.toolkit.log.grpc.reporter.server_port=${SW_GRPC_LOG_SERVER_PORT:11800}
plugin.toolkit.log.grpc.reporter.max_message_size=${SW_GRPC_LOG_MAX_MESSAGE_SIZE:10485760}
plugin.toolkit.log.grpc.reporter.upstream_timeout=${SW_GRPC_LOG_GRPC_UPSTREAM_TIMEOUT:30}

主要是配合Skywalking的遠程地址和端口

參考文章

這篇教程主要的內容來自于以下:

  • 圖靈學院培訓教材(徐庶老師)
  • 吳晟老師的演講稿
  • Skywalking官網
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末歌亲,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子澜驮,更是在濱河造成了極大的恐慌,老刑警劉巖惋鸥,帶你破解...
    沈念sama閱讀 221,548評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杂穷,死亡現(xiàn)場離奇詭異,居然都是意外死亡卦绣,警方通過查閱死者的電腦和手機耐量,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來滤港,“玉大人廊蜒,你說我怎么就攤上這事〗ρ” “怎么了山叮?”我有些...
    開封第一講書人閱讀 167,990評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長添履。 經常有香客問我屁倔,道長,這世上最難降的妖魔是什么暮胧? 我笑而不...
    開封第一講書人閱讀 59,618評論 1 296
  • 正文 為了忘掉前任锐借,我火速辦了婚禮,結果婚禮上往衷,老公的妹妹穿的比我還像新娘钞翔。我一直安慰自己,他們只是感情好席舍,可當我...
    茶點故事閱讀 68,618評論 6 397
  • 文/花漫 我一把揭開白布布轿。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪驮捍。 梳的紋絲不亂的頭發(fā)上疟呐,一...
    開封第一講書人閱讀 52,246評論 1 308
  • 那天,我揣著相機與錄音东且,去河邊找鬼启具。 笑死,一個胖子當著我的面吹牛珊泳,可吹牛的內容都是我干的鲁冯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,819評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼色查,長吁一口氣:“原來是場噩夢啊……” “哼薯演!你這毒婦竟也來了?” 一聲冷哼從身側響起秧了,我...
    開封第一講書人閱讀 39,725評論 0 276
  • 序言:老撾萬榮一對情侶失蹤跨扮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后验毡,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體衡创,經...
    沈念sama閱讀 46,268評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,356評論 3 340
  • 正文 我和宋清朗相戀三年晶通,在試婚紗的時候發(fā)現(xiàn)自己被綠了璃氢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,488評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡狮辽,死狀恐怖一也,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情喉脖,我是刑警寧澤椰苟,帶...
    沈念sama閱讀 36,181評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站动看,受9級特大地震影響尊剔,放射性物質發(fā)生泄漏。R本人自食惡果不足惜菱皆,卻給世界環(huán)境...
    茶點故事閱讀 41,862評論 3 333
  • 文/蒙蒙 一须误、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仇轻,春花似錦京痢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽臭家。三九已至,卻和暖如春方淤,著一層夾襖步出監(jiān)牢的瞬間钉赁,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評論 1 272
  • 我被黑心中介騙來泰國打工携茂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留你踩,地道東北人。 一個月前我還...
    沈念sama閱讀 48,897評論 3 376
  • 正文 我出身青樓讳苦,卻偏偏與公主長得像带膜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鸳谜,可洞房花燭夜當晚...
    茶點故事閱讀 45,500評論 2 359

推薦閱讀更多精彩內容