91在线一级黄片|91视频在线观看18|成人夜间呦呦网站|91资源欧美日韩超碰|久久最新免费精品视频一区二区三区|国产探花视频在线观看|黄片真人免费三级片毛片|国产人无码视频在线|精品成人影视无码三区|久久视频爱久久免费精品

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

新聞中心

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

背景介紹

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

創(chuàng)新互聯(lián)專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、察哈爾右翼后網(wǎng)站定制設(shè)計、自適應(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è)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為察哈爾右翼后等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

所以針對以上問題,我們的目標(biāo)是建立一個Java應(yīng)用在線診斷平臺,讓開發(fā)人員無需登錄機(jī)器或修改系統(tǒng),就可以從日志、內(nèi)存、線程、類信息、調(diào)試、機(jī)器和系統(tǒng)屬性等各個方面對應(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

提供兩個方面的功能,分別是:

管理功能

瀏覽器通過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)程實現(xiàn)對應(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)用部署的時候?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ā)送請求為:
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

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

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

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

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

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

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

交互邏輯

關(guān)鍵問題分析

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

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

安裝Arthas

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

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

通過SSH腳本

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

通過javaagent

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

第2.2步驟當(dāng)對指定服務(wù)器進(jìn)行診斷的時候,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)用工程中新建一個Controller,該Controller實現(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】端口面臨的兩個問題。

注意:

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

通過HSF/gRPC/dubbo等RPC

根據(jù)應(yīng)用使用的RPC框架,新建對應(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ā)送報文(報文中包含指定服務(wù)器的IP)到MQ Broker,應(yīng)用中新建MQ Consumer消費(fèi)tunnel server的報文,如果報文中IP與本機(jī)一致則處理,不一致則丟棄。

通過Apollo等配置中心

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

通過Redis緩存

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

通過SSH

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

展示效果

tunnel server

在AgentId的文本框里輸入要診斷的服務(wù)器IP,稍等一會就可以進(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)化。


名稱欄目:基于Arthas的應(yīng)用在線診斷平臺實踐
文章分享:http://m.jiaoqi3.com/article/dpjjpdp.html