最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot Arthas實現(xiàn)線上監(jiān)控診斷

 更新時間:2026年03月25日 10:45:03   作者:讓丄帝愛伱  
本文主要介紹了SpringBoot Arthas實現(xiàn)線上監(jiān)控診斷,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Arthas 是一款線上監(jiān)控診斷產(chǎn)品,通過全局視角實時查看應(yīng)用 load、內(nèi)存、gc、線程的狀態(tài)信息,并能在不修改應(yīng)用代碼的情況下,對業(yè)務(wù)問題進行診斷,包括查看方法調(diào)用的出入?yún)ⅰ惓?,監(jiān)測方法執(zhí)行耗時,類加載信息等,大大提升線上問題排查效率。

一、Spring Boot 集成 Arthas

通過官方的工具 Arthas Spring Boot Starter 集成到 Spring Boot 項目中,可以非常方便的使用 Arthas。

在我們自己的項目中引入 Arthas 的 starter,在啟動 Spring Boot 自身應(yīng)用的同時,Spring 會啟動 Arthas,并且 attach 自身進程。

最后通過暴露 Arhtas 終端的端口的方式,方便用戶進入到 Arthas 的終端進行調(diào)試。 集成后用戶不再需要去 Arthas 的官網(wǎng)下載 Arthas 的安裝包,也不需將 Arthas 的安裝包拷貝到應(yīng)用容器中。

1、項目集成

1、配置 maven 依賴

<!-- Arthas Spring Boot Starter -->
<dependency>
    <groupId>com.taobao.arthas</groupId>
    <artifactId>arthas-spring-boot-starter</artifactId>
    <version>4.1.3</version>
</dependency>

2、配置屬性

arthas:
  # Telnet 連接端口,用于通過 Telnet 客戶端連接 Arthas
  telnet-port:3658
  # HTTP 服務(wù)端口,用于通過瀏覽器訪問 Arthas Web Console
  http-port:8563
  • telnet-port: 暴露這個端口是為了支持用戶通過 telnet 的方式進入 arhtas 的終端進行遠程調(diào)試。
  • http-port: 暴露這個端口是為了支持用戶通過瀏覽器的方式進入 arhtas 的終端進行遠程調(diào)試。

2、使用 Arhtas

經(jīng)過上述的配置,Spring Boot 項目啟動時,會自動啟動 Arthas,并 attach 自身進程。啟動項目控制臺日志如下:

c.a.arthas.spring.ArthasConfiguration    : Arthas agent start success.

1、通過 telnet 進入 arhtas 終端

接下來通過 telnet 命令,可以進入 Arthas 的終端進行遠程調(diào)試。使用配置文件配置的 telnet-port: 3658 端口。如下所示:

telnet localhost 3658

接下來就可以在 arthas 終端執(zhí)行各種 arthas 指令調(diào)試代碼,詳細(xì)使用方法可以參考 Arthas 文檔。如 dashboard :

整個過程操作下來不需要像原始的從官網(wǎng)下載 arhtas 安裝包,然后執(zhí)行 java -java arthas-boot.jar 的指令進入到 arhtas 終端。

通過集成到自有項目中直接一個 telnet 指令就可以直接進入到終端,比之前的方式簡單多了。

2、通過瀏覽器進入 arhtas 終端

接下來通過瀏覽器,可以進入 Arthas 的 Web Console。使用配置文件配置的 http-port: 8563 端口。如下所示:

3、遠程使用 Arthas

在生產(chǎn)環(huán)境中,自有 Spring Boot 項目部署在服務(wù)器上,然后再使用 arthas 進行遠程調(diào)試,要額外開啟訪問配置,注意會有安全風(fēng)險。

arthas:
  # Telnet 連接端口,用于通過 Telnet 客戶端連接 Arthas
telnet-port:3658
# HTTP 服務(wù)端口,用于通過瀏覽器訪問 Arthas Web Console
http-port:8563
# 127.0.0.1 只能本地訪問,0.0.0.0 則可網(wǎng)絡(luò)訪問,但是存在安全問題,需謹(jǐn)慎使用。
ip:0.0.0.0

二、Arthas Tunnel 增強

現(xiàn)如今項目在采用微服務(wù)架構(gòu)時,會有無數(shù)個 Spring Boot 應(yīng)用,每個應(yīng)用都有一個 Arthas 客戶端,這樣會使得 Arthas 操作變得些許麻煩。

我們需要實時維護所有服務(wù)節(jié)點的地址,當(dāng)需要遠程調(diào)試某個節(jié)點時,首先需要找到對應(yīng)節(jié)點的 ip 地址,再通過瀏覽器去訪問該節(jié)點的調(diào)試頁面進行調(diào)試。

當(dāng)服務(wù)節(jié)點數(shù)量變多時,這個過程會非常麻煩,因此,Arthas 引入了 Arthas Tunnel,Arthas Tunnel 是一個服務(wù)端。 Arthas Tunnel有點類似于“注冊中心”管理所有的 Arthas 客戶端。

如在流式計算里,Java 進程可以是在不同的機器啟動的,想要使用 Arthas 去診斷會比較麻煩,因為用戶通常沒有機器的權(quán)限,即使登錄機器也分不清是哪個Java 進程。

在這種情況下,可以使用 Arthas Tunnel Server/Client。通過 Arthas Tunnel Server/Client 來遠程管理/連接多個 Agent。

1、Arthas Tunnel Server

首先需要到 GitHub 下載 Arthas Tunnel Server 并啟動。 https://github.com/alibaba/arthas/releases

注意點是下載的版本最好和 arthas-spring-boot-starter 這兩個版本最好保持一致,減少不必要的兼容問題。

執(zhí)行 java -jar -Darthas.enable-detail-pages=true arthas-tunnel-server-4.1.3-fatjar.jar 即可啟動 arthas-tunnel-server。

參數(shù) Darthas.enable-detail-pages=true 是開啟 Tunnel Server 的管理頁面。如果不配置,是無法通過頁面看到所有的 arthas 客戶端的。

注意:開放管理頁面有風(fēng)險!管理頁面沒有安全攔截功能,務(wù)必自行增加安全措施,不要開放到公網(wǎng)。

可以通過 http://127.0.0.1:8080/actuator/arthas 查看到具體的連接信息,登錄用戶名是 arthas,密碼在 Tunnel Server的日志里可以找到,比如:

2025-12-26 11:34:40.524  WARN 3740 --- [           main] .s.s.UserDetailsServiceAutoConfiguration :
Using generated security password: a0ab4417-6c43-4c21-a19a-9888c2d123e4
This generated password is for development use only. Your security configuration must be updated before running your application in production.

可以通過啟動命令修改配置文件:

  • -Dserver.port 修改指定 web 端口
  • -Darthas.server.port 指定注冊端口

下面的命令就是將 web 端口設(shè)置為 8081,注冊端口設(shè)置為 8888

java -jar -Dserver.port=8081 -Darthas.server.port=8888 -Darthas.enable-detail-pages=true arthas-tunnel-server-4.1.3-fatjar.jar

2、Arthas Tunnel Client

現(xiàn)在需要在自有的 Spring Boot 項目中配置 arthas 參數(shù),告訴 arthas 客戶端需要將自己的地址注冊到 Tunnel Server。

spring:
  application:
    name:springboot-11-arthas
arthas:
# Telnet 連接端口,用于通過 Telnet 客戶端連接 Arthas
telnet-port:-1
# HTTP 服務(wù)端口,用于通過瀏覽器訪問 Arthas Web Console
http-port:-1
# 127.0.0.1 只能本地訪問,0.0.0.0 則可網(wǎng)絡(luò)訪問,但是存在安全問題,需謹(jǐn)慎使用。
#ip: 0.0.0.0
# 應(yīng)用名稱,用于標(biāo)識應(yīng)用
app-name:${spring.application.name}
# 默認(rèn)情況下,會生成隨機ID,如果 arthas agent 配置了 appName,則生成的 agentId 會帶上 appName 的前綴。
# 注意,agentId 要保持唯一,否則會在 tunnel server 上沖突,不能正常工作
agent-id:${spring.application.name}_Don001
# tunnel-server 地址,Arthas 隧道服務(wù)器地址,用于連接 Arthas 隧道服務(wù)器
tunnel-server:ws://127.0.0.1:7777/ws

因為不需要像上述那樣通過 arthas 客戶端的 http 端口或 telnet 端口訪問 arhtas 終端,所以將 telnet-porthttp-port 都設(shè)置為-1,表示禁用 http 和 telnet 單獨連接 arthas 客戶端,后續(xù)統(tǒng)一使用 Arthas Tunnel Server 進行連接并操作。

啟動兩個應(yīng)用,可以看到 Tunnel Server 中有新的連接:

2025-12-26 11:51:23.006  INFO 3740 --- [Server-boss-1-1] io.netty.handler.logging.LoggingHandler  : [id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777] READ: [id: 0xee929d2a, L:/127.0.0.1:7777 - R:/127.0.0.1:51404]
2025-12-26 11:51:23.007  INFO 3740 --- [Server-boss-1-1] io.netty.handler.logging.LoggingHandler  : [id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777] READ COMPLETE
2025-12-26 11:51:23.098  INFO 3740 --- [rver-worker-3-2] c.a.a.t.server.TunnelSocketFrameHandler  : websocket handshake complete, uri: /ws?method=agentRegister&arthasVersion=4.1.3&appName=springboot-11-arthas&id=Don
2025-12-26 11:53:09.824  INFO 3740 --- [Server-boss-1-1] io.netty.handler.logging.LoggingHandler  : [id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777] READ: [id: 0xcc24edb0, L:/127.0.0.1:7777 - R:/127.0.0.1:51506]
2025-12-26 11:53:09.824  INFO 3740 --- [Server-boss-1-1] io.netty.handler.logging.LoggingHandler  : [id: 0x72e2f7a6, L:/0:0:0:0:0:0:0:0:7777] READ COMPLETE
2025-12-26 11:53:09.839  INFO 3740 --- [rver-worker-3-3] c.a.a.t.server.TunnelSocketFrameHandler  : websocket handshake complete, uri: /ws?method=agentRegister&arthasVersion=4.1.3&appName=springboot-11-arthas&id=Don2

然后訪問管理頁面查看所有已連接的 arthas 客戶端,管理頁面地址是:服務(wù)器ip:端口號/apps.html。顯示如下圖所示:

注:如果要自定義配置 agent-id 參數(shù),則必須包含 _ 符號,且同服務(wù)實例需要相同的前綴,類似自動生成的規(guī)則。

具體見源碼 com.alibaba.arthas.tunnel.server.app.web#tunnelApps

點擊服務(wù) springboot-11-arthas,進入服務(wù)的實例頁面,顯示如下圖所示:

點擊某一實例,進入實例頁面,顯示如下圖所示:

3、認(rèn)證

可以在配置文件里添加 arthas.usernamearthas.password 來設(shè)置用戶名和密碼,然后訪問管理頁面時需要輸入用戶名和密碼。

arthas:
  # Telnet 連接端口,用于通過 Telnet 客戶端連接 Arthas
telnet-port:-1
# HTTP 服務(wù)端口,用于通過瀏覽器訪問 Arthas Web Console
http-port:-1
# 127.0.0.1 只能本地訪問,0.0.0.0 則可網(wǎng)絡(luò)訪問,但是存在安全問題,需謹(jǐn)慎使用。
#ip: 0.0.0.0
# 應(yīng)用名稱,用于標(biāo)識應(yīng)用
app-name:${spring.application.name}
# 默認(rèn)情況下,會生成隨機ID,如果 arthas agent 配置了 appName,則生成的 agentId 會帶上 appName 的前綴。
# 注意,agentId 要保持唯一,否則會在 tunnel server 上沖突,不能正常工作
#agent-id: Don
# tunnel-server 地址,Arthas 隧道服務(wù)器地址,用于連接 Arthas 隧道服務(wù)器
tunnel-server:ws://127.0.0.1:7777/ws
username:admin
password:admin

首先需要在終端使用 auth 指令進行認(rèn)證,認(rèn)證通過后才能執(zhí)行其他 arthas 指令, 執(zhí)行 auth -username admin admin 通過 arhtas 的認(rèn)證,然后執(zhí)行 session 指令查看當(dāng)前 session 的信息:

[arthas@15432]$ session
Error! command not permitted, try to use 'auth'command to authenticates.
[arthas@15432]$ auth
Authentication result: false, Need authentication: true
[arthas@15432]$ auth -username admin admin
Authentication result: true, username: admin
[arthas@15432]$ auth
Authentication result: true, Need authentication: true
[arthas@15432]$ session
 Name              Value                                                                                                  
-------------------------------------------------------------                                                             
 JAVA_PID          15432                                                                                                  
 SESSION_ID        c7929c0c-0d30-4563-827b-1babeff98f7c                                                                   
 AGENT_ID          springboot-11-arthas_SX0SZK8T5ZJWUYPJOMOJ                                                              
 TUNNEL_SERVER     ws://127.0.0.1:7777/ws                                                                                 
 TUNNEL_CONNECTED  true                                                                                                   
[arthas@15432]$ 

三、總結(jié)

1、首先講述了自有的 Spring Boot 應(yīng)用集成 Arthas Spring Boot Starter 的方式,便于快速使用 Arthas 進行調(diào)試。

2、然后借助 Arthas Tunnel Server/Client 來遠程管理/連接多個服務(wù)器下的 Java 服務(wù),輕松實現(xiàn)多個服務(wù)器下的 Java 服務(wù)的遠程調(diào)試。

注:Tunnel Server 開放管理頁面有風(fēng)險?。?!管理頁面沒有安全攔截功能,務(wù)必自行增加安全措施,不要開放到公網(wǎng)。

到此這篇關(guān)于SpringBoot Arthas實現(xiàn)線上監(jiān)控診斷的文章就介紹到這了,更多相關(guān)SpringBoot Arthas線上監(jiān)控內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用SpringBoot 工廠模式自動注入到Map

    使用SpringBoot 工廠模式自動注入到Map

    這篇文章主要介紹了使用SpringBoot 工廠模式自動注入到Map,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java Stream流之GroupBy的使用方式

    Java Stream流之GroupBy的使用方式

    本教程將詳細(xì)介紹如何在 Java 中使用 Stream 流的 group by 方法,包括基本用法和一些常見的實際應(yīng)用場景,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java Instrumentation從概念到基本用法詳解

    Java Instrumentation從概念到基本用法詳解

    Java Instrumentation是java.lang.instrument包提供的 API,允許開發(fā)者在類被JVM 加載時對其進行修改,或者在運行時重新定義類的字節(jié)碼,本文給大家介紹Java Instrumentation從概念到基本用法詳解,感興趣的朋友一起看看吧
    2025-09-09
  • java讀取文件內(nèi)容的三種方法代碼片斷分享(java文件操作)

    java讀取文件內(nèi)容的三種方法代碼片斷分享(java文件操作)

    本文介紹java讀取文件內(nèi)容的三種方法,代碼可以直接放到程序中使用,大家參考使用吧
    2014-01-01
  • 從零開始使用IDEA創(chuàng)建SpringBoot項目(圖文)

    從零開始使用IDEA創(chuàng)建SpringBoot項目(圖文)

    這篇文章主要介紹了從零開始使用IDEA創(chuàng)建SpringBoot項目(圖文),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Java 高并發(fā)二:多線程基礎(chǔ)詳細(xì)介紹

    Java 高并發(fā)二:多線程基礎(chǔ)詳細(xì)介紹

    本文主要介紹Java 高并發(fā)多線程的知識,這里整理詳細(xì)的資料來解釋線程的知識,有需要的學(xué)習(xí)高并發(fā)的朋友可以參考下
    2016-09-09
  • MyBatis如何調(diào)用存儲過程

    MyBatis如何調(diào)用存儲過程

    這篇文章主要介紹了MyBatis如何調(diào)用存儲過程問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java利用多線程復(fù)制文件

    Java利用多線程復(fù)制文件

    這篇文章主要介紹了Java利用多線程復(fù)制文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • 帶你了解如何使用Spring基于ProxyFactoryBean創(chuàng)建AOP代理

    帶你了解如何使用Spring基于ProxyFactoryBean創(chuàng)建AOP代理

    這篇文章主要介紹了Spring基于ProxyFactoryBean創(chuàng)建AOP代理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-08-08
  • 基于Java實現(xiàn)Word中插入附件的操作指南(支持所有文件格式)

    基于Java實現(xiàn)Word中插入附件的操作指南(支持所有文件格式)

    文章介紹了如何使用Java在Word文檔中嵌入附件,并通過OLE方式實現(xiàn),主要步驟包括:引入依賴、組裝附件圖標(biāo)、默認(rèn)附件圖標(biāo)、組裝Ole對象、插入附件到Word文檔以及使用模板,文章末尾提供了實現(xiàn)代碼和下載OLE模板的鏈接,需要的朋友可以參考下
    2025-12-12

最新評論

珠海市| 苍溪县| 黄浦区| 铜山县| 长兴县| 乌审旗| 墨竹工卡县| 肥城市| 绥芬河市| 桦川县| 长垣县| 壤塘县| 进贤县| 大竹县| 满城县| 山阴县| 股票| 射阳县| 页游| 神木县| 固镇县| 象山县| 安国市| 兴国县| 唐海县| 溆浦县| 旅游| 分宜县| 岢岚县| 南漳县| 墨竹工卡县| 米泉市| 专栏| 台南县| 寻甸| 城口县| 德令哈市| 盐津县| 汕头市| 明溪县| 延庆县|