首页/新闻资讯/正文详情

Arthas 已接入 MCP:用 JSON-RPC 打通 JVM 线上问题定位链路

发布时间:2026/9/26 19:42:19 来源:云帆数科 栏目:资讯中心
Arthas 已接入 MCP:用 JSON-RPC 打通 JVM 线上问题定位链路
1. 线上 CPU 飙高时Arthas 的命令行为什么还是让人卡壳Arthas 在 JVM 排障圈子里几乎是标配工具。不重启、不改代码attach 上去就能看线程、追方法、查类加载dashboard、thread、trace、watch这几板斧救过不少深夜告警。但用久了你会发现一个尴尬的现实真正拖慢排障速度的往往不是 Arthas 本身而是“下一步该敲什么”。线上订单服务 CPU 冲到 98%你dashboard看到某个http-nio线程占了大头接着要thread id看堆栈再顺着堆栈找到业务类然后trace或watch去验证。每一步命令都不难难的是在告警压力下快速做出正确决策还要记住参数怎么写、OGNL 怎么拼、采样次数怎么限。对已经熟练的团队来说这是肌肉记忆对偶尔上手的人来说就是一道道坎。Arthas 接入 MCP 之后这条链路有了新的走法。MCPModel Context Protocol把 Arthas 的诊断能力封装成标准化的 JSON-RPC 2.0 工具接口AI 客户端可以通过统一的协议去调用dashboard、thread、trace这些命令并自动解析返回结果。你不再需要逐条敲命令而是用自然语言描述问题由 AI 按排障剧本一步步调用工具、收敛证据、给出结论。这篇文章面向已经在用 Arthas 的 JVM 团队重点不是介绍 Arthas 是什么而是把 MCP 通道接进现有诊断流程MCP 服务端怎么配、JSON-RPC 怎么调、一次线上问题定位怎么验证、调用凭证怎么用统一 Key/API 通道管理。全程给可复制的配置和命令照着做就能跑通。2. 接入前先把 TaoToken 的 Key 和通道准备好Arthas MCP Server 本身是本地或内网部署的诊断服务它负责把 Arthas 命令暴露成 JSON-RPC 工具。但如果你想让 AI 客户端稳定地调用这些工具、并且统一管理调用凭证就需要一个能集中管理 Key 和 API 通道的地方。TaoToken 在这里扮演的就是凭证与通道管理的角色官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 入口是 https://taotoken.net/api 。先注册并登录控制台地址是 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentconsoleutm_campaignrewrite 。在控制台里创建 API Key地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 。创建时建议按用途命名比如arthas-mcp-prod、arthas-mcp-test这样后面排查调用来源时不会混。拿到 Key 之后先别急着往 Arthas 里塞。你要明确一件事Arthas MCP Server 的 Bearer Token 认证和 TaoToken 的 API Key 是两个层面的东西。前者保护的是 Arthas MCP 服务端本身的访问后者保护的是你通过统一通道调用模型或工具时的凭证。两者可以配合使用但不要混为一谈。建议的做法是Arthas MCP Server 用独立的 Bearer TokenTaoToken 的 Key 用于 AI 客户端侧的模型调用和工具编排这样职责清晰出问题也好定位。如果你还没决定用哪个模型来驱动这套排障流程可以先到模型对话页面 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 试一下确认模型能正常响应工具调用类的指令。对于长期做编码和 Agent 编排的团队Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 里有更细的套餐说明适合把 Arthas MCP 接进日常研发流程的场景。3. Arthas MCP Server 配置骨架与 JSON-RPC 调用示例Arthas MCP Server 是 Arthas 的一个实验性模块通过 HTTP/Netty 提供 JSON-RPC 2.0 接口。它支持两种协议模式STREAMABLE 模式基于 SSE 推送流式响应适合实时监控STATELESS 模式是传统请求-响应适合简单集成。下面给一份可直接改的配置骨架。先准备 Arthas MCP Server 的启动参数。假设你已经下载了 arthas-mcp-server 的 jar 包启动命令大致如下java -jar arthas-mcp-server.jar \ --server.port8765 \ --arthas.target127.0.0.1:3658 \ --mcp.modeSTATELESS \ --auth.tokenyour-arthas-mcp-token参数说明用表格对照更清楚参数作用建议值server.portMCP Server 监听端口8765避免和业务端口冲突arthas.target目标 JVM 的 Arthas 端口默认 3658按实际 attach 端口改mcp.mode协议模式STATELESS 适合初次接入STREAMABLE 适合实时监控auth.tokenBearer Token独立生成不要和 TaoToken Key 混用启动后MCP Server 会暴露一个 JSON-RPC 端点通常是http://127.0.0.1:8765/mcp。你可以先用 curl 验证服务是否活着curl -X POST http://127.0.0.1:8765/mcp \ -H Content-Type: application/json \ -H Authorization: Bearer your-arthas-mcp-token \ -d { jsonrpc: 2.0, id: 1, method: tools/list, params: {} }如果返回里能看到dashboard、thread、trace、watch这些工具名说明 MCP Server 已经正常把 Arthas 命令暴露出来了。目前集成的核心诊断工具覆盖三大类JVM 相关 12 个dashboard、heapdump、jvm、memory、thread、sysprop、sysenv、vmoption、perfcounter、vmtool、getstatic、ognl类加载相关 8 个sc、sm、jad、classloader、mc、redefine、retransform、dump监控诊断 6 个monitor、stack、trace、watch、tt、profiler。接下来是调用单个工具的 JSON-RPC 示例。比如调用dashboard看整体线程情况curl -X POST http://127.0.0.1:8765/mcp \ -H Content-Type: application/json \ -H Authorization: Bearer your-arthas-mcp-token \ -d { jsonrpc: 2.0, id: 2, method: tools/call, params: { name: dashboard, arguments: {} } }再比如调用thread看指定线程的堆栈参数里传线程 IDcurl -X POST http://127.0.0.1:8765/mcp \ -H Content-Type: application/json \ -H Authorization: Bearer your-arthas-mcp-token \ -d { jsonrpc: 2.0, id: 3, method: tools/call, params: { name: thread, arguments: { id: 29 } } }这两个调用跑通说明 MCP 通道和 Arthas 之间的链路已经打通。注意arguments里的字段名要和工具定义一致thread的线程 ID 参数在不同版本里可能是id或threadId以tools/list返回的 schema 为准。4. 一次线上 CPU 飙高的验证请求与成功结果配置跑通之后用一次真实的排障动作来验证整条链路。假设订单服务在晚高峰 CPU 冲到 98%你通过 AI 客户端发起排查。AI 客户端侧需要配置 MCP Server 地址和 Bearer Token同时用 TaoToken 的 Key 来驱动模型调用。模型对话入口在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有客户端配置的详细说明。AI 收到“订单服务 CPU 飙到 98%帮我排查哪个线程导致的高 CPU”之后会按排障剧本自动执行。第一步调用dashboard返回数据里能看到类似这样的线程信息ID NAME CPU% STATE 29 http-nio-8080-exec-8 89.2 RUNNABLE 12 DubboServerHandler-... 3.1 RUNNABLEAI 解析出线程 ID 29、CPU 89.2%、状态 RUNNABLE接着自动调用thread并传入id: 29。返回的堆栈里能看到关键调用链http-nio-8080-exec-8 #29 prio5 os_prio0 tid0x00007f8e2c001800 nid0x4f runnable java.lang.Thread.State: RUNNABLE at java.util.regex.Pattern$GroupHead.match(Pattern.java:4660) at java.util.regex.Pattern$GroupTail.match(Pattern.java:4719) at java.util.regex.Pattern$Curly.match(Pattern.java:4238) at com.example.logging.LogAspect.logAround(LogAspect.java:47) at com.example.order.service.OrderService.getOrder(OrderService.java:123)到这里AI 会给出分析结论线程卡在java.util.regex.Pattern的正则匹配里调用链指向LogAspect.java:47的日志切面。根因是脱敏正则在处理超过 10KB 的 JSON 请求体时发生灾难性回溯导致 CPU 占满。修复建议也很具体临时关闭该日志切面根本修复是把.*改成[^]*避免回溯或者改用indexOf替代正则同时给日志切面加长度限制超过 2000 字符不做脱敏。验证成功的标志有三个tools/list能列出工具、tools/call能返回结构化结果、AI 能基于返回结果给出可执行的修复建议。如果这三步都走通说明 Arthas MCP 已经可以接进你的线上诊断流程。对于需要长期跑 Agent 编排的团队Coding Plan 页面 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 里有更完整的接入方案。5. 本篇常见错排查连接、认证、参数与结果解析接入过程中最容易卡在几个地方这里按出现频率排一下。第一个是 MCP Server 连不上 Arthas。表现是tools/list能返回工具列表但调用dashboard时报连接超时或 attach 失败。原因通常是arthas.target配错了或者目标 JVM 没有以可 attach 的方式启动。先确认目标进程的 Arthas 端口是否在监听再检查arthas.target的 IP 和端口是否和实际一致。如果是容器环境注意端口映射和网络命名空间。第二个是认证失败。表现是返回 401 或Unauthorized。检查Authorization头里的 Bearer Token 是否和启动参数auth.token一致注意不要多空格、不要漏Bearer前缀。如果你同时用了 TaoToken 的 Key确认两个 Token 没有混用。TaoToken 的 Key 在 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi-keysutm_campaignrewrite 管理Arthas MCP 的 Token 在启动参数里配两者分开。第三个是参数名不匹配。表现是调用thread时返回参数校验错误。不同版本的 Arthas MCP Server 对工具参数的命名可能有差异比如线程 ID 可能是id、threadId或thread_id。最稳妥的做法是先调tools/list看返回的 schema 里inputSchema定义的字段名按 schema 传参。第四个是结果解析问题。STREAMABLE 模式下返回的是 SSE 流如果你用普通 HTTP 客户端直接解析可能会拿到不完整的数据。初次接入建议先用 STATELESS 模式等链路稳定后再切 STREAMABLE。另外dashboard返回的线程列表可能很长AI 客户端侧要设置合理的超时和截断策略避免一次拉取过多数据导致响应变慢。第五个是权限和范围问题。Arthas MCP 暴露的是诊断能力redefine、retransform这类工具能修改字节码生产环境要严格控制谁能调用。建议在 MCP Server 前面加一层网关或访问控制只对可信的 AI 客户端开放并且按环境区分 Token。测试环境和生产环境用不同的auth.token避免误操作。6. 把 MCP 通道接进现有诊断流程的下一步Arthas 接入 MCP 之后排障的入口从命令行变成了自然语言但底层的诊断能力没有变。你依然需要理解线程、堆栈、正则回溯这些概念只是 AI 帮你把“敲哪条命令、传什么参数、怎么解读结果”这部分自动化了。对已经熟练使用 Arthas 的团队来说这不是替代而是把重复的决策路径固化下来让排障更快收敛。下一步可以做的是把 MCP 通道接进现有的告警和值班流程。比如告警触发后自动拉起 AI 客户端带上服务名和告警指标让 AI 先跑一轮dashboard和thread把初步结论推到值班群。也可以把常用的排障剧本沉淀成模板针对 CPU 飙高、接口变慢、内存泄漏、死锁这几类场景分别定义工具调用顺序。调用凭证统一走 TaoToken 的 Key 和 API 通道接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 模型对话在 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentmodel_chatutm_campaignrewrite 长期编码和 Agent 编排看 Coding Plan https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。先把tools/list和一次thread调用跑通再逐步把更多诊断场景交给 MCP 通道这样每一步都有验证不会一次性铺太大。

相关推荐

AI 说得很流畅,不代表它说得对-CSDN博客
AI 说得很流畅,不代表它说得对-CSDN博客

首屏导读 本教程配套付费专栏: 大模型工程师修炼手记 19.9 元(AI 编程 / Agent 实战 | 本文同主题系统课程) AI时代程序员的自我提升 49.9 元(AI 时代成长方法论)。 单篇不过瘾?订阅解锁全量源… · 2026/9/26 19:42:12

CRM系统选型与落地:从通信集成到客户管理实战
CRM系统选型与落地:从通信集成到客户管理实战

前因我在一次销售运营复盘会上第一次注意到 DeskcommCRM。当时团队的数据是这样的:外呼量上去了,商机数却没涨,翻客户跟进记录时,电话内容在手机通话记录里,邮件往来散落在个人邮箱,报价单和合同在另一个文… · 2026/9/26 19:41:59

treg CLI工具链:OpenRouter API聚合与MCP协议集成实战
treg CLI工具链:OpenRouter API聚合与MCP协议集成实战

1. 从"treg"这个标题说起:一个被低估的CLI工具链整合思路第一次看到"treg"这个标题的时候,我脑子里蹦出来的第一个念头是"这又是什么缩写"。做命令行工具这行的老毛病了,看到四个字母以内的东西就条件反射地想… · 2026/9/26 19:41:40

Claude Code集成SKILL:EDA工程师的本地AI工作流实战
Claude Code集成SKILL:EDA工程师的本地AI工作流实战

1. 项目概述:这不是“装个插件”那么简单,而是打通EDA工程师的本地智能工作流你搜“Claude Code 安装 SKILL”,大概率正卡在某个IC设计流程里——比如想快速从版图里提取器件参数、批量重命名cell、自动检查DRC违例区域,或者把一段… · 2026/9/26 20:22:44

SecureCRT连接虚拟机超时?从IP到防火墙的完整排查指南
SecureCRT连接虚拟机超时?从IP到防火墙的完整排查指南

又见connection timed out。今天这位朋友的截图很典型:secureCRT会话框里红字提示"Connection timed out",他反复强调"IP我都改成一样的了",虚拟机就在VMware里运行着,可怎么都连不上。这种案例我经手过太多次… · 2026/9/26 20:22:38

Git pull报错详解:本地修改冲突的原理与安全应对
Git pull报错详解:本地修改冲突的原理与安全应对

1. 这个报错到底在说什么?——不是Git坏了,是它在认真保护你的代码你刚敲下git pull或git merge,终端突然跳出一行红色文字:error: Your local changes to the following files would be overwritten by merge紧接着还列了一堆文件… · 2026/9/26 20:22:32

UEditor Word导入乱码图片红叉?从docx到HTML完整解析与解决方案
UEditor Word导入乱码图片红叉?从docx到HTML完整解析与解决方案

有段时间我天天被客户的一句话搞得头大:你们这个编辑器,把Word里的东西粘进来,怎么图片全变红叉?表格也歪了,标题级别也不对。项目用的是百度出品的开源富文本编辑器UEditor,说实话它本身是个老牌编辑器&am… · 2026/9/26 20:22:25

Harbor v2.5.0离线安装实战:CentOS 7内网镜像仓库部署指南
Harbor v2.5.0离线安装实战:CentOS 7内网镜像仓库部署指南

简介:Harbor v2.5.0-rc1 离线安装包面向需要在内网、离线或安全隔离环境中搭建容器镜像仓库的运维工程师与平台管理员,解决因无法访问公网镜像源而导致的 Harbor 部署困难问题。安装包内含6个文件,以 Shell 脚本、配置文件模板、License 许可… · 2026/9/26 20:22:25

AI绘画工作流实战:提示词设计、流程图与出图参数全解析
AI绘画工作流实战:提示词设计、流程图与出图参数全解析

1. 从一句话脑洞到成品图:AI作图工作流的真实痛点 先把话撂在这:现在做AI作图,最大的瓶颈早就不再是模型能力,而是“你到底会不会把脑子里的想法变成模型听得懂的语言”。我见过太多人打开工具,输入一句“帮我画一个赛… · 2026/9/26 20:22:19

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码