JAva現在のアプリケーションの実行情報(メモリ、スレッド、実行時間、ステータスなど)を取得
12686 ワード
一:目的
このプログラムを書く理由は、配置されたアプリケーションが正常に動作しているかどうかを監視し、実行状態を表示する必要があるからです.プロセスが死んだ後、自動的にアプリケーションを起動することもできます.
まず、このコードで取得できる情報は次のとおりです.
二:この情報を取得するコード
ここに直接コードを貼るのは、難しい論理ではありません.
転載先:https://www.cnblogs.com/zhuxiaojie/p/6375261.html
このプログラムを書く理由は、配置されたアプリケーションが正常に動作しているかどうかを監視し、実行状態を表示する必要があるからです.プロセスが死んだ後、自動的にアプリケーションを起動することもできます.
まず、このコードで取得できる情報は次のとおりです.
/**
*
*/
private String host;
/**
* IP
*/
private String ipAddress;
/**
*
*/
private long freeMemory;
/**
*
*/
private long totalMemory;
/**
* java
*/
private long maxMemory;
/**
*
*/
private String osName;
/**
*
*/
private long pid;
/**
*
*/
private Date startTime;
/**
*
*/
private String classPath;
private String projectPath;
/**
* ,
*/
private long runtime;
/**
*
*/
private int threadCount;
二:この情報を取得するコード
ここに直接コードを貼るのは、難しい論理ではありません.
import java.io.File;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.framework.monitor.common.bean.ClientStatus;
public class StatusUtil {
public static Logger LOG = LoggerFactory.getLogger(StatusUtil.class);
private static ClientStatus clientStatus = new ClientStatus();
/**
*
* @param projectName
* @param version
* @param group ,
* @param ipAddress NULL, NULL , ,
* @param startCMD , ,
* @param remark ,
* @return
*/
public static ClientStatus getClientStatus(String projectName,int version,String group,String ipAddress,String startCMD,String[] remark){
clientStatus.setProjectName(projectName);
clientStatus.setVersion(version);
clientStatus.setRemark(remark);
clientStatus.setGroup(group);
RuntimeMXBean runtimeMXBean = ManagementFactory.getRuntimeMXBean();
Runtime runtime = Runtime.getRuntime();
//
long freeMemory = runtime.freeMemory();
clientStatus.setFreeMemory(byteToM(freeMemory));
//
long totalMemory = runtime.totalMemory();
clientStatus.setTotalMemory(byteToM(totalMemory));
//
long maxMemory = runtime.maxMemory();
clientStatus.setMaxMemory(byteToM(maxMemory));
//
clientStatus.setOsName(System.getProperty("os.name"));
InetAddress localHost;
try {
localHost = InetAddress.getLocalHost();
String hostName = localHost.getHostName();
clientStatus.setHost(hostName);
if(ipAddress == null){
ipAddress = localHost.getHostAddress();
}
} catch (UnknownHostException e) {
e.printStackTrace();
LOG.error(" Ip ");
clientStatus.setHost(" ");
}
//ip
clientStatus.setIpAddress(ipAddress);
clientStatus.setId(makeClientId(projectName,ipAddress));
//
long startTime = runtimeMXBean.getStartTime();
Date startDate = new Date(startTime);
clientStatus.setStartTime(startDate);
//
clientStatus.setClassPath(runtimeMXBean.getBootClassPath());
//
clientStatus.setRuntime(runtimeMXBean.getUptime());
//
clientStatus.setThreadCount(ManagementFactory.getThreadMXBean().getThreadCount());
clientStatus.setProjectPath(new File("").getAbsolutePath());
clientStatus.setCommitDate(new Date());
clientStatus.setPid(getPid());
return clientStatus;
}
/**
* byte M
* @param bytes
* @return
*/
public static long byteToM(long bytes){
long kb = (bytes / 1024 / 1024);
return kb;
}
/**
* ID
* @param projectName
* @param ipAddress
* @return
*/
public static String makeClientId(String projectName,String ipAddress){
String t = projectName + ipAddress + new File("").getAbsolutePath();
int client_id = t.hashCode();
client_id = Math.abs(client_id);
return String.valueOf(client_id);
}
/**
* , windows linux
* @return
*/
public static long getPid(){
try {
String name = ManagementFactory.getRuntimeMXBean().getName();
String pid = name.split("@")[0];
return Long.parseLong(pid);
} catch (NumberFormatException e) {
LOG.warn(" Id");
return 0;
}
}
}
転載先:https://www.cnblogs.com/zhuxiaojie/p/6375261.html