mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
support config appName;tunnel client/server support add appName prefix for agentId. #1562
This commit is contained in:
@@ -3,6 +3,7 @@ package com.taobao.arthas.core;
|
||||
import com.sun.tools.attach.VirtualMachine;
|
||||
import com.sun.tools.attach.VirtualMachineDescriptor;
|
||||
import com.taobao.arthas.common.AnsiLog;
|
||||
import com.taobao.arthas.common.ArthasConstants;
|
||||
import com.taobao.arthas.common.JavaVersionUtils;
|
||||
import com.taobao.arthas.core.config.Configure;
|
||||
import com.taobao.middleware.cli.CLI;
|
||||
@@ -42,11 +43,12 @@ public class Arthas {
|
||||
|
||||
Option tunnelServer = new TypedOption<String>().setType(String.class).setShortName("tunnel-server");
|
||||
Option agentId = new TypedOption<String>().setType(String.class).setShortName("agent-id");
|
||||
Option appName = new TypedOption<String>().setType(String.class).setShortName(ArthasConstants.APP_NAME);
|
||||
|
||||
Option statUrl = new TypedOption<String>().setType(String.class).setShortName("stat-url");
|
||||
|
||||
CLI cli = CLIs.create("arthas").addOption(pid).addOption(core).addOption(agent).addOption(target)
|
||||
.addOption(telnetPort).addOption(httpPort).addOption(sessionTimeout).addOption(tunnelServer).addOption(agentId).addOption(statUrl);
|
||||
.addOption(telnetPort).addOption(httpPort).addOption(sessionTimeout).addOption(tunnelServer).addOption(agentId).addOption(appName).addOption(statUrl);
|
||||
CommandLine commandLine = cli.parse(Arrays.asList(args));
|
||||
|
||||
Configure configure = new Configure();
|
||||
@@ -66,6 +68,7 @@ public class Arthas {
|
||||
configure.setTunnelServer((String) commandLine.getOptionValue("tunnel-server"));
|
||||
configure.setAgentId((String) commandLine.getOptionValue("agent-id"));
|
||||
configure.setStatUrl((String) commandLine.getOptionValue("stat-url"));
|
||||
configure.setAppName((String) commandLine.getOptionValue(ArthasConstants.APP_NAME));
|
||||
return configure;
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,14 @@ public class Configure {
|
||||
private String tunnelServer;
|
||||
private String agentId;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 1. 如果显式传入 arthas.agentId ,则直接使用
|
||||
* 2. 如果用户没有指定,则自动尝试在查找应用的 appname,加为前缀,比如 system properties设置 project.name是 demo,则
|
||||
* 生成的 agentId是 demo-xxxx
|
||||
* </pre>
|
||||
*/
|
||||
private String appName;
|
||||
/**
|
||||
* report executed command
|
||||
*/
|
||||
@@ -118,6 +126,14 @@ public class Configure {
|
||||
this.statUrl = statUrl;
|
||||
}
|
||||
|
||||
public String getAppName() {
|
||||
return appName;
|
||||
}
|
||||
|
||||
public void setAppName(String appName) {
|
||||
this.appName = appName;
|
||||
}
|
||||
|
||||
/**
|
||||
* 序列化成字符串
|
||||
*
|
||||
|
||||
@@ -26,6 +26,7 @@ import com.alibaba.arthas.deps.org.slf4j.Logger;
|
||||
import com.alibaba.arthas.deps.org.slf4j.LoggerFactory;
|
||||
import com.alibaba.arthas.tunnel.client.TunnelClient;
|
||||
import com.taobao.arthas.common.AnsiLog;
|
||||
import com.taobao.arthas.common.ArthasConstants;
|
||||
import com.taobao.arthas.common.PidUtils;
|
||||
import com.taobao.arthas.common.SocketUtils;
|
||||
import com.taobao.arthas.core.advisor.Enhancer;
|
||||
@@ -294,11 +295,17 @@ public class ArthasBootstrap {
|
||||
configure.setHttpPort(newHttpPort);
|
||||
logger().info("generate random http port: " + newHttpPort);
|
||||
}
|
||||
// try to find appName
|
||||
if (configure.getAppName() == null) {
|
||||
configure.setAppName(System.getProperty(ArthasConstants.PROJECT_NAME,
|
||||
System.getProperty(ArthasConstants.SPRING_APPLICATION_NAME, null)));
|
||||
}
|
||||
|
||||
String agentId = null;
|
||||
try {
|
||||
if (configure.getTunnelServer() != null) {
|
||||
tunnelClient = new TunnelClient();
|
||||
tunnelClient.setAppName(configure.getAppName());
|
||||
tunnelClient.setId(configure.getAgentId());
|
||||
tunnelClient.setTunnelServerUrl(configure.getTunnelServer());
|
||||
tunnelClient.setVersion(ArthasBanner.version());
|
||||
|
||||
Reference in New Issue
Block a user