日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
基于Arthas的應(yīng)用在線診斷平臺(tái)實(shí)踐

背景介紹

在日常系統(tǒng)運(yùn)行過程中,故障總是不期而遇。一旦出現(xiàn)故障通常是查監(jiān)控,翻各種日志,從大量的日志中尋找蛛絲馬跡。如果問題現(xiàn)場的日志記錄缺失,會(huì)嘗試在本地重現(xiàn)問題并調(diào)試解決,本地難以重現(xiàn)的,只能再加日志,再部署,再重現(xiàn),然后再查日志,效率較低。對(duì)于復(fù)雜一些的比如程序性能問題,如何定位性能瓶頸,一不小心又要回到加日志、部署、查日志、再加日志的老路,不僅效率不高,也破壞了問題現(xiàn)場。

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、察哈爾右翼后網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為察哈爾右翼后等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

所以針對(duì)以上問題,我們的目標(biāo)是建立一個(gè)Java應(yīng)用在線診斷平臺(tái),讓開發(fā)人員無需登錄機(jī)器或修改系統(tǒng),就可以從日志、內(nèi)存、線程、類信息、調(diào)試、機(jī)器和系統(tǒng)屬性等各個(gè)方面對(duì)應(yīng)用進(jìn)行診斷,提升開發(fā)人員診斷問題的效率和能力。

系統(tǒng)架構(gòu)

我們期望有一套架構(gòu),讓開發(fā)人員以Web UI的方式使用各類在線診斷能力。

架構(gòu)概覽

架構(gòu)概覽

瀏覽器

瀏覽器是開發(fā)人員進(jìn)行在線診斷的入口,tunnel server通過Web UI的方式提供在線診斷能力,支持復(fù)雜的交互場景。

tunnel server

提供兩個(gè)方面的功能,分別是:

管理功能

瀏覽器通過http與tunnel server的12201端口進(jìn)行交互;

連接指定IP的arthas agent機(jī)器、斷開指定IP的arthas agent機(jī)器、查看指定IP的arthas agent生成的文件。

診斷功能

瀏覽器通過websocket與tunnel server的12202端口進(jìn)行交互;

支持各種arthas診斷指令:dashboard、heapdump、thread、vmtool等。

應(yīng)用程序服務(wù)器

arthas agent作為websocket客戶端與tunnel server的12202端口進(jìn)行交互;

arthas agent通過attach應(yīng)用進(jìn)程實(shí)現(xiàn)對(duì)應(yīng)用進(jìn)程的診斷。

原理介紹

核心流程

流程說明:

1.1 tunnel server 監(jiān)聽12201端口,該端口用于展示W(wǎng)eb UI

1.2 tunnel server監(jiān)聽12202端口,該端口用于與瀏覽器進(jìn)行websocket交互,也用于與arthas agent進(jìn)行websocket交互

1.3 應(yīng)用程序通過引入arthas pom依賴,在應(yīng)用部署的時(shí)候?qū)rthas安裝包安裝到服務(wù)器上

2.1 通過在瀏覽器上訪問:
http://tunner_server_ip:12201,打開Web UI

2.2 在Web UI上輸入要診斷的服務(wù)器IP,點(diǎn)擊Connect,建立與tunner server 12202端口的websocket連接,發(fā)送請(qǐng)求為:
ws://tunner_server_ip:12202/ws?method=connectArthas&id=服務(wù)器IP

2.3 tunner server根據(jù)服務(wù)器IP獲取與arthas agent的control connection

2.4 如果control connection沒有建立,則通過訪問
http://arthas_agent_IP:12230?tunnerserver=ws://tunner_server_ip:12202/ws,觸發(fā)arthas agent初始化、attach應(yīng)用進(jìn)程。

2.5 arthas agent創(chuàng)建與tunner server的websocket連接:

  • arthas agent tunnel client connect to tunnel server with URL: ws://tunner_server_ip:12202/ws?method=agentRegister
  • tunnel server response a text frame message: response:/?method=agentRegister&id=服務(wù)器IP

此時(shí)創(chuàng)建的websocket連接稱為:control connection。

2.6 control connection已創(chuàng)建成功,則向arthas agent tunnel client發(fā)送:response:/?method=startTunnel&id=服務(wù)器IP&clientCnotallow=connectionIDxxx,請(qǐng)求建立連接;

arthas agent tunnel client收到startTunnel請(qǐng)求后,新建與tunnel server的連接,并發(fā)送:ws://tunner_server_ip:12202/ws/?method=openTunnel&clientCnotallow=connectionIDxxx&id=服務(wù)器IP

此時(shí)創(chuàng)建的websocket連接稱為:tunnel connection;

同時(shí)創(chuàng)建與arthas agent的本地連接:ws://127.0.0.1:3658/ws,此時(shí)創(chuàng)建的連接稱為:local connection

3.13.2 執(zhí)行診斷命令鏈路如下:

交互邏輯

關(guān)鍵問題分析

arthas本身提供了tunner server功能,我們主要需要解決的有兩個(gè)問題:

  1. 如何安裝arthas到指定服務(wù)器
  2. 如何按需加載arthas agent,即只有對(duì)指定服務(wù)器進(jìn)行診斷的時(shí)候才進(jìn)行arthas agent的初始化

安裝Arthas

獨(dú)立安裝運(yùn)維

將arthas打包進(jìn)操作系統(tǒng)鏡像中,保證新初始化的ECS實(shí)例中含有最新版本的arthas;對(duì)于已經(jīng)存在的ECS實(shí)例則需要想辦法進(jìn)行arthas版本更新。

通過SSH腳本

第2.2步驟當(dāng)對(duì)指定服務(wù)器進(jìn)行診斷的時(shí)候,在tunnel server或其他旁路系統(tǒng)通過ssh方式將arthas安裝包拷貝的指定服務(wù)器。

通過javaagent

在應(yīng)用進(jìn)程初始化的時(shí)候,加載自定義的javaagent,該javaagent實(shí)現(xiàn)下載、解壓arthas的功能。

第2.2步驟當(dāng)對(duì)指定服務(wù)器進(jìn)行診斷的時(shí)候,tunnel server或其他旁路系統(tǒng)通過與指定服務(wù)器javaagent通訊,通過javaagent完成arthas下載、解壓。

通過POM

應(yīng)用通過引入arthas pom,將arthas打包進(jìn)應(yīng)用部署包中。


com.taobao.arthas
arthas-agent-attach
3.6.7


com.taobao.arthas
arthas-packaging
3.6.7

初始化ArthasAgent

復(fù)用Web Server端口

在應(yīng)用工程中新建一個(gè)Controller,該Controller實(shí)現(xiàn)arthas agent初始化功能。

tunnel server通過現(xiàn)有的Web Server訪問Controller接口觸發(fā)arthas agent初始化。

注意:

  • 需要tunnel server能夠訪問Web Server端口
  • 不同應(yīng)用的Web Server Context路徑可能不一樣

通過獨(dú)立的HTTPServer

創(chuàng)建獨(dú)立的HTTP Server,主要是為了使得tunnel server能夠訪問新監(jiān)聽的端口,解決【復(fù)用Web Server】端口面臨的兩個(gè)問題。

注意:

  • 新監(jiān)聽的http端口需要對(duì)tunnel server開放
  • http server的context路徑都是一致的

通過HSF/gRPC/dubbo等RPC

根據(jù)應(yīng)用使用的RPC框架,新建對(duì)應(yīng)的RPC Provider,tunnel server直接調(diào)用指定IP的RPC Provider完成arthas agent的初始化。該方式的好處是不用新開放監(jiān)聽端口。

注意:

  • RPC Client需要能夠調(diào)用指定IP的RPC Provider

通過MQ

tunnel server作為MQ Producer發(fā)送報(bào)文(報(bào)文中包含指定服務(wù)器的IP)到MQ Broker,應(yīng)用中新建MQ Consumer消費(fèi)tunnel server的報(bào)文,如果報(bào)文中IP與本機(jī)一致則處理,不一致則丟棄。

通過Apollo等配置中心

思路與【通過MQ】一致,按照apollo等配置中心相關(guān)API進(jìn)行實(shí)現(xiàn)。

通過Redis緩存

思路與【通過MQ】一致,按照Redis相關(guān)通訊機(jī)制進(jìn)行實(shí)現(xiàn)。

通過SSH

tunner server或旁路系統(tǒng)有權(quán)限直接ssh指定服務(wù)器,通過腳本方式觸發(fā)arthas agent初始化。

展示效果

tunnel server

在AgentId的文本框里輸入要診斷的服務(wù)器IP,稍等一會(huì)就可以進(jìn)行診斷了。

web console

指定服務(wù)器Web UI

dashboard

dashboard

immediacy

thread示例

thread

real time

monitor示例

monitor

option

JVM options示例

jvm options

console

console

terminal

terminal與tunner server UI基本一致,不同的是該terminal是直接訪問的目標(biāo)服務(wù)器。

總結(jié)

以上方案只是簡單的應(yīng)用,期望以后可以不斷的迭代優(yōu)化。


當(dāng)前題目:基于Arthas的應(yīng)用在線診斷平臺(tái)實(shí)踐
文章分享:http://www.dlmjj.cn/article/dpjjpdp.html