日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

测试使用skywalking_skywalking初体验

發布時間:2024/9/3 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 测试使用skywalking_skywalking初体验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景分布式鏈路追蹤是微服務分析和監控的利器,試想一下如果服務接口涉及到幾十個以上調用關系,當出現問題或者需要排查鏈路瓶頸,沒有相應的工具,將會非常頭疼。我們系統目前已經有一套鏈路追蹤系統,系根據OpenTracing規范進行自研,目前已經線上跑了兩年多。至于為什么采用自研,主要是歷史原因和當時的技術棧考量。現在反思起來,雖然系統還算穩定,也確實給業務帶來了一定幫助。但整個系統設計從擴展性,侵入性,可維護性等方面相對較差。近期看SkyWalking熱度挺高(github的star達到了14.4k),因此本人想做下調研學習,吸收一下優秀開源組件的優點,甚至看下引入到現有系統的可能性。

skywalking簡介

官網的簡介如上(讓人遺憾的是中國人開發的軟件居然沒有中文文檔),實現的功能挺多,間接說明了在鏈路追蹤功能的基礎上可以做很多事情。這次體驗主要是驗證鏈路追蹤的功能。

skywalking快速部署

skywalking的部署非常方便,我們以默認的配置為例,底層用了本地的h2存儲。首先下載最新的tar包,wget https://mirror.bit.edu.cn/apache/skywalking/8.1.0/apache-skywalking-apm-8.1.0.tar.gz,解壓之后執行./bin/startup.sh就啟動完成了。可以直接通過http://host:8080訪問dashboard,如下圖所示:

服務接入skywalking

1?服務啟動指定skywalking的javaagent,這里通過java探針實現了非侵入性

我們以spring boot項目為例,打包成jar,啟動命令如下:

java \

-javaagent:xxx/apache-skywalking-apm-bin/agent/skywalking-agent.jar \

-Dskywalking_config=./agent.config \

-jar ./target/sky-demo-1.0-SNAPSHOT.jar?

其中agent.config配置文件如下:

# 設置為應用名稱agent.service_name=skydemo# 設置為OAP地址collector.backend_service=yourhost:11800

引用agent注意的問題:

-?agent目錄下包含了plugin等相關插件,實際運行用到了這些插件,不能單獨只指定skywalking-agent.jar

-?skywalking-agent.jar的版本必須與skywalking服務端保持一致,避免不必要的兼容性問題

2 測試服務間的調用關系

在springboot服務中通過okhttp調用另外的服務,測試驗證服務間的調用關系

3?測試服務調用存儲系統

這里測試驗證以調用redis和mysql為例

4 系統中打印traceid

在日志中打印traceId有助于定位問題,根據traceid可以在skywalking dashboard上查詢到具體的調用鏈路。skywalking提供了sdk可以輕松實現,如下:log.info("{}", TraceContext.traceId());

5 golang語言接入

無疑,skywalking配合javaagent做無侵入性的接入,對業務來說接入成本非常低。如果業務是用其他語言如golang/c++實現的,則接入成本會相對較高,必須通過api封裝接入協議,跟我們當前實現的思路類似。這里以golang為例,使用了現成的sdk:github.com/SkyAPM/go2sky,該module實現了http服務的skywalking接入。具體demo可以參考/test/e2e/example-server/main.go

如上所示,我們實現了一個包含spring boot,golang服務,redis、mysql的調用關系,skywalking做了調用關系拓撲圖的展示,這對于業務梳理調用關系和系統瓶頸大有幫助。

skywalking體驗總結

(1)部署方便。從demo角度看幾乎零門檻,線上的話主要考慮存儲方面的部署和維護,比如es。

(2)無侵入性接入。由于本人并不擅長java技術棧,部署和驗證過程費了一些周折,如果是搞java的同學接入的話基本是分分鐘的事情。

(3)擴展性好。目前skywalking已經支持多種插件的探針實現,參考:https://github.com/apache/skywalking/blob/v6.6.0/docs/en/setup/service-agent/java-agent/Supported-list.md。我們甚至可以根據自己的情況添加相應的插件,而這對于業務側是無感知的。這種插件的方式具有極強的擴展性,同時可以集各路開發的力量完善整個社區。

(4)功能強大。實際上通過搜集鏈路信息本身就可以實現很多強大的功能,舉個例子我們可以根據SQL語句去分析慢查詢,可以對接口的質量進行告警,可以通過拓撲關系判斷鏈路的瓶頸等。

現有系統接入skywalking的可行性

我們現有的技術棧是Java+ServiceMesh(golang),并且現在已經有一套鏈路追蹤系統。首先業務側的java服務可以無侵入性地指定javaagent進行skywalking的接入,但是service mesh也必須進行改造,升級為支持skywalking的實現(螞蟻金服的mosn即實現了skywalking的上報),但這里帶來了兼容性問題,即mesh還需要兼容老的未升級的鏈路協議的支持,實現上比較復雜性。

另外一個問題是java服務接入也不是完全無侵入,因為現有系統日志中打印了traceId,而接入skywalking則相應的日志中的traceid要做修改。雖然改動不大,但系統的改造和過渡期會帶來各種問題。

總結

通過本次測試體驗,本人非常看好skywalking,如果是java技術棧,如果沒有歷史遺留問題,強烈建議將skywalking引入到業務系統中。

總結

以上是生活随笔為你收集整理的测试使用skywalking_skywalking初体验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。