Skywalking 分布式系統(tǒng)的應(yīng)用程序性能監(jiān)視工具

隨著微服務(wù)架構(gòu)的流行,尤其是近年來(lái)SpringCloud的廣泛應(yīng)用升略,一些微服務(wù)架構(gòu)下的問(wèn)題也比較突出衷蜓,比如一個(gè)請(qǐng)求會(huì)涉及多個(gè)服務(wù),而服務(wù)本身可能也會(huì)依賴其他服務(wù)判呕,整個(gè)請(qǐng)求路徑就構(gòu)成了一個(gè)網(wǎng)狀的調(diào)用鏈倦踢,而在整個(gè)調(diào)用鏈中一旦某個(gè)節(jié)點(diǎn)發(fā)生異常送滞,整個(gè)調(diào)用鏈的穩(wěn)定性就會(huì)受到影響,為快速定位解決問(wèn)題辱挥,需要一套可以跟蹤犁嗅、分析系統(tǒng)性能的工具,即APM(應(yīng)用性能管理)晤碘。

目前主流的APM工具有Skywalking褂微、Cat、Zipkin园爷、Pinpoint宠蚂,本文主要介紹SkyWalking,它是一款優(yōu)秀的國(guó)產(chǎn) APM 工具童社,包括了分布式追蹤肥矢、性能指標(biāo)分析、應(yīng)用和服務(wù)依賴分析等叠洗。

官方給出的架構(gòu)圖如下


skywalking-arch

SkyWalking 的核心是數(shù)據(jù)分析和度量結(jié)果的存儲(chǔ)平臺(tái)甘改,通過(guò) HTTP 或 gRPC 方式向 SkyWalking Collecter 提交分析和度量數(shù)據(jù),SkyWalking Collecter 對(duì)數(shù)據(jù)進(jìn)行分析和聚合灭抑,存儲(chǔ)到 Elasticsearch十艾、H2、MySQL腾节、TiDB 等其一即可忘嫉,最后我們可以通過(guò) SkyWalking UI 的可視化界面對(duì)最終的結(jié)果進(jìn)行查看。Skywalking 支持從多個(gè)來(lái)源和多種格式收集數(shù)據(jù):多種語(yǔ)言的 Skywalking Agent 案腺、Zipkin v1/v2 庆冕、Istio 勘測(cè)、Envoy 度量等數(shù)據(jù)格式。

搭建部署

下面簡(jiǎn)要介紹Mac下Skywalking的搭建部署

下載

官方地址選擇合適的版本進(jìn)行下載

解壓安裝

解壓后目錄如下
├── agent // 本地代理模塊(探針)
│ ├── activations
│ ├── bootstrap-plugins
│ ├── config
│ ├── logs
│ ├── optional-plugins
│ └── plugins
├── bin // 啟動(dòng)腳本
├── config // 數(shù)據(jù)收集器、存儲(chǔ)鞍时、告警等配置
├── licenses
│ └── ui-licenses
├── logs
├── mesh-buffer
├── oap-libs
├── tools
│ └── profile-exporter
├── trace-buffer
└── webapp // 管理后臺(tái)UI工具

不需要修改配置文件父叙,在bin目錄下執(zhí)行startup.sh即可啟動(dòng)服務(wù)懈涛,成功后可查看到如下嘻嘻

./startup.sh

SkyWalking OAP started successfully!
SkyWalking Web Application started successfully!

然后就可以通過(guò)訪問(wèn)http://localhost:8080/查看SkywalkingUI界面了

skywalking-ui

啟動(dòng)后會(huì)啟動(dòng)兩個(gè)服務(wù)skywalking-webapp和skywalking-collector,其中

  1. skywalking-webapp,管理平臺(tái)頁(yè)面,默認(rèn)端口8080(可以在webapp/webapp.yml下修改)响巢,用戶名密碼 admin/admin
  2. skywalking-collector,追蹤信息收集器棒妨,通過(guò)gRPC或者h(yuǎn)ttp收集客戶端信息踪古,gRPC默認(rèn)端口11800,http默認(rèn)端口12800(可以在config/application.yml下修改)

收集器、存儲(chǔ)伏穆、可采集信息等配置均可在config/application.yml下修改

Java進(jìn)程使用

  • IDEA中使用拘泞,在VM options中增加
-javaagent:/path/to/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_name=服務(wù)名稱 -Dskywalking.collector.backend_service=127.0.0.1:12800

-javaagent,skywalking-agent.jar的絕對(duì)位置
-Dskywalking.agent.service_name蜈出,定義在UI中顯示的service名稱(可省略)
-Dskywalking.collector.backend_service田弥,收集服務(wù)器地址(可省略)

  • jar命令啟動(dòng)
    和IDEA使用方式相同

常用配置

可在config/application.yml下調(diào)整修改相關(guān)配置

部署方式

cluster:
  selector: ${SW_CLUSTER:standalone}
  standalone:

個(gè)人電腦可選取standalon涛酗,集群部署還支持zookeeper, kubernetes, consul, etcd, nacos等

信息采集協(xié)議配置

core:
  selector: ${SW_CORE:default}
  default:
    # Mixed: Receive agent data, Level 1 aggregate, Level 2 aggregate
    # Receiver: Receive agent data, Level 1 aggregate
    # Aggregator: Level 2 aggregate
    role: ${SW_CORE_ROLE:Mixed} # Mixed/Receiver/Aggregator
    restHost: ${SW_CORE_REST_HOST:0.0.0.0}
    restPort: ${SW_CORE_REST_PORT:12800}
    restContextPath: ${SW_CORE_REST_CONTEXT_PATH:/}
    gRPCHost: ${SW_CORE_GRPC_HOST:0.0.0.0}
    gRPCPort: ${SW_CORE_GRPC_PORT:11800}
    gRPCSslEnabled: ${SW_CORE_GRPC_SSL_ENABLED:false}
    gRPCSslKeyPath: ${SW_CORE_GRPC_SSL_KEY_PATH:""}
    gRPCSslCertChainPath: ${SW_CORE_GRPC_SSL_CERT_CHAIN_PATH:""}
    gRPCSslTrustedCAPath: ${SW_CORE_GRPC_SSL_TRUSTED_CA_PATH:""}

restPort铡原、gRPCPort分別設(shè)置http和gRPC協(xié)議的端口,建議使用默認(rèn)值

存儲(chǔ)配置

storage:
  selector: ${SW_STORAGE:h2}
  elasticsearch:
    nameSpace: ${SW_NAMESPACE:""}

默認(rèn)的是H2(不需要任何其他安裝部署)商叹,還可以支持ES燕刻、mysql等,官方比較推薦ES剖笙,也可以增加其他存儲(chǔ)如TiDB等

webapp配置

webapp配置默認(rèn)位置webapp/webapp.yml

server:
  port: 8080

collector:
  path: /graphql
  ribbon:
    ReadTimeout: 10000
    # Point to all backend's restHost:restPort, split by ,
    listOfServers: 127.0.0.1:12800

管理后臺(tái)端口默認(rèn)為8080卵洗,使用graphql方式訪問(wèn)oap的數(shù)據(jù)收集端口,默認(rèn)為12800(rest方式)

agent配置

agent配置默認(rèn)在agent/config/agent.config

# 不同的namespace會(huì)導(dǎo)致調(diào)用鏈路追蹤中斷
agent.namespace=${SW_AGENT_NAMESPACE:hmall}

# 頁(yè)面上展示的service的名稱弥咪,也可以通過(guò)-Dskywalking.agent.service_name=xxx指定
agent.service_name=${SW_AGENT_NAME:gateway}

# 平臺(tái)的調(diào)用地址过蹂,也可以通過(guò)-Dskywalking.collector.backend_service=127.0.0.1:80指定
collector.backend_service=${SW_AGENT_COLLECTOR_BACKEND_SERVICES:172.28.51.141:11800}

# 忽略指定后綴的請(qǐng)求收集
agent.ignore_suffix=${SW_AGENT_IGNORE_SUFFIX:.jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg}


# 每3秒的采樣率,負(fù)數(shù)代表100%
agent.sample_n_per_3_secs=${SW_AGENT_SAMPLE:-1}

插件使用

默認(rèn)情況agent是不支持對(duì)spring-cloud-gateway的監(jiān)控的聚至,需要插件的支持酷勺。我們要將agent/optional-plugins下的插件apm-spring-cloud-gateway-2.x-plugin-7.0.0.jar拷貝到plugins下,使agent可以加載到該插件扳躬,其他一些需要額外插件支持的中間件和框架也是同理操作脆诉。

參考

Apache Skywalking
SkyWalking 分布式追蹤系統(tǒng)
全鏈路跟蹤skywalking簡(jiǎn)介

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市贷币,隨后出現(xiàn)的幾起案子击胜,更是在濱河造成了極大的恐慌,老刑警劉巖役纹,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偶摔,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡促脉,警方通過(guò)查閱死者的電腦和手機(jī)啰挪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嘲叔,“玉大人亡呵,你說(shuō)我怎么就攤上這事×蚋辏” “怎么了锰什?”我有些...
    開(kāi)封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我汁胆,道長(zhǎng)梭姓,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任嫩码,我火速辦了婚禮誉尖,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘铸题。我一直安慰自己铡恕,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布丢间。 她就那樣靜靜地躺著探熔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪烘挫。 梳的紋絲不亂的頭發(fā)上诀艰,一...
    開(kāi)封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音饮六,去河邊找鬼其垄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛卤橄,可吹牛的內(nèi)容都是我干的绿满。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼虽风,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼棒口!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起辜膝,我...
    開(kāi)封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤无牵,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后厂抖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體茎毁,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年忱辅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了七蜘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墙懂。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡橡卤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出损搬,到底是詐尸還是另有隱情碧库,我是刑警寧澤柜与,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站嵌灰,受9級(jí)特大地震影響弄匕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜沽瞭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一迁匠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧驹溃,春花似錦城丧、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搂鲫。三九已至傍药,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間魂仍,已是汗流浹背拐辽。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留擦酌,地道東北人俱诸。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像赊舶,于是被迫代替她去往敵國(guó)和親睁搭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容