• Stars
    star
    581
  • Rank 76,901 (Top 2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 5 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

arthas idea plugin 更简单的使用arthas的IDEA 插件,方便的构建各种arthas 命令,复制到剪切板 然后到服务器上启动arthas 执行命令。

arthas idea plugin

联系方式

有问题直接加我微信wj983433479 或者 扫码添加钉钉群 32102545 沟通

帮助文档链接

more issue : https://github.com/WangJi92/arthas-idea-plugin/issues label=documentation

给作者一个鼓励

如果你喜欢这款插件,欢迎给身边的小伙伴推荐,给个github star,谢谢

一、背景

目前Arthas 官方的工具还不够足够的简单,需要记住一些命令,特别是一些扩展性特别强的高级语法,比如ognl获取spring context 为所欲为,watch、trace 不够简单,需要构造一些命令工具的信息,因此只需要一个能够简单处理字符串信息的插件即可使用。当在处理线上问题的时候需要最快速、最便捷的命令,因此Idea arthas 插件还是有存在的意义和价值的。

二、支持的功能

支持的功能都是平时处理最常用的一些功能,一些快捷的链接,在处理紧急问题时候不需要到处查找,都是一些基本的功能,自动复制到剪切板中去,方便快捷。

image

2.1 watch

watch StringUtils uncapitalize '{params,returnObj,throwExp}' -n 5 -x 3

2.2 trace 

trace StringUtils uncapitalize -n 5

2.3 static ognl (字段或者方法)

2.3.1 右键static ognl

2.3.2 获取classload命令

必须要获取,不然会找不到classload,arthas 官方获取问题系统的classload,spring 项目应该无法获取到这个class的信息,因此首先执行一下这个命令

sc -d StringUtils

2.3.2 复制到界面,获取命令,执行即可

ognl  -x  3  '@StringUtils@uncapitalize(" ")' -c 8bed358

2.4 Invoke Bean Method

 实际上就是根据当前的spring项目中的获取静态的spring context这样可以直接根据这个context直接获取任何的Bean方法,一般在Java后端服务中都有这样的Utils类,因此这个可以看为一个常量! 可以参考:arthas idea demo 有了这个,我们可以跟进一步的进行数据简化,由于在idea这个环节中,可以获取方法参数,spring bean的名称等等,非常的方便。

package com.wangji92.arthas.plugin.demo.common;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.stereotype.Component;

/**
 * 提供给arthas ognl 获取context的信息
 *
 * @author 汪小哥
 * @date 30-28-2020
 */
@Component
public class ApplicationContextProvider implements ApplicationContextAware {
    private static ApplicationContext context;

    public ApplicationContext getApplicationContext() {
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext ctx) {
        context = ctx;
    }
}

2.4.1 设置获取spring context的上下文

arthas idea plugin 配置

2.4.2 右键点击需要调用的方法

这里的策略和static ognl 一样的,本质还是ognl的调用。

ognl  -x  3  '#springContext=@applicationContextProvider@context,#springContext.getBean("arthasInstallCommandAction").actionPerformed(new com.intellij.openapi.actionSystem.AnActionEvent())' -c desw22

特别说明对于ognl 字段类型的处理

代码地址

2.5  install(linux)

安装脚本,可以一键的通过as.sh 进行执行

curl -sk https://arthas.aliyun.com/arthas-boot.jar  -o ~/.arthas-boot.jar  && echo "alias as.sh='java -jar ~/.arthas-boot.jar --repo-mirror aliyun --use-http 2>&1'" >> ~/.bashrc && source ~/.bashrc && echo "source ~/.bashrc" >> ~/.bash_profile && source ~/.bash_profile

image

2.6 常用特殊用法链接

More Repositories

1

arthas-plugin-demo

Arthas idea plugin 体验demo,可以直接体验一下 一些高级的功能 ,调用spring static context 方法、获取 spring 环境变量优先级信息等等
Java
110
star
2

mybatis-sql-log

spring boot 打印mybaits 完整的sql 日志 插件,支持spring boot2.x pagehelp mybaits-generator mybatis-plus
Java
52
star
3

java-agent

java agent 断点调试,java agent debug,java agent 学习理解
Java
25
star
4

idempotent-spring-boot-starter

幂等的,防止重复的提交,使用spring HandlerInterceptor 拦截+redission 提供的分布式锁来进行控制
Java
20
star
5

mybatis-mapper-reload-spring-boot-start

热更新 mybatis mapper xml spring boot start
Java
18
star
6

remote-debug-example

Java 远程debug 示范例子
Java
15
star
7

mybatits-study

this is study for mybatits
Java
12
star
8

dingtalk-robot-logback-append-spring-boot-start

钉钉机器人、异常告警钉钉机器人。基于logback 自定义Append ,将收到的日志信息 经过关键字过滤 或者表达式过滤 等级过滤等等 通过钉钉官方机器人API推送到 告警群,限流每分钟不超过 20次。使用异步AsyncAppender,支持配置队列长度、队列阻塞;可以自定义表达式 或者关键字过滤日志。
Java
12
star
9

wdt

Convenient for Java developers to quickly query common commands
Java
10
star
10

spring-retry-example

spring retry and guava retrying demo 实践理解 ,推荐使用spring retry ,guava retrying 对于最新的guava有兼容性问题。
Java
4
star
11

mybatis-log-demo

Java
2
star
12

JavaTypeUse

Java
2
star
13

Netty-study

Netty-study
Java
1
star
14

ToolsAndBook

1
star