package com.taobao.top.analysis.node.monitor;
import java.io.Serializable;
/**
* 节点监控信息
* @author sihai
*
*/
public class MonitorInfo implements Serializable, Cloneable {
/**
*
*/
private static final long serialVersionUID = 4354426032378192732L;
// Title
private static final String TITLE_TIMESTAMP = "时间戳";
private static final String TITLE_IP = "IP地址";
private static final String TITLE_OS_NAME = "操作系统";
private static final String TITLE_OS_VERSION = "操作系统版本";
private static final String TITLE_SYSTEM_LOAD_AVERAGE = "一分钟系统的负载";
private static final String TITLE_JVM_TOTAL_MEMORY = "JVM持有的内存总大小";
private static final String TITLE_JVM_FREE_MEMORY = "JVM空闲内存大小";
private static final String TITLE_JVM_MAX_MEMORY = "JVM可使用的最大内存大小";
private static final String TITLE_JVM_THREAD_COUNT = "JVM活动线程数";
private static final String TITLE_JVM_PEAK_THREAD_COUNT = "JVM活动线程数峰值";
/**
*
*/
private long timeStamp;
/**
* 机器IP
*/
private volatile String ip;
// OS
/**
* 操作系统
*/
private volatile String osName;
/**
* 操作系统版本
*/
private volatile String osVersion;
// 系统
/**
* 过去一分钟系统的负载
*/
private volatile Double systemLoadAverage;
// CPU
// JVM Memory
/**
* JVM持有的内存总大小, 单位byte
*/
private volatile Long jvmTotalMemory;
/**
* JVM空闲内存大小, 单位byte
*/
private volatile Long jvmFreeMemory;
/**
* JVM可使用的最大内存大小, 单位byte
* Note:如果没有限制的话, 返回java.lang.Long#MAX_VALUE, 当然会受到操作系统和物理机器的限制
*/
private volatile Long jvmMaxMemory;
// JVM Thread
/**
* 活着的总线程数, 包括daemon和non-daemon线程
*/
private volatile Integer jvmThreadCount;
/**
* 自从 JVM启动或峰值重置以来峰值活动线程计数
*/
private volatile Integer jvmPeakThreadCount;
public long getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(long timeStamp) {
this.timeStamp = timeStamp;
}
public String getIp() {
return ip;
}
public void setIp(String ip) {
this.ip = ip;
}
public Long getJvmTotalMemory() {
return jvmTotalMemory;
}
public void setJvmTotalMemory(Long jvmTotalMemory) {
this.jvmTotalMemory = jvmTotalMemory;
}
public Long getJvmFreeMemory() {
return jvmFreeMemory;
}
public void setJvmFreeMemory(Long jvmFreeMemory) {
this.jvmFreeMemory = jvmFreeMemory;
}
public Long getJvmMaxMemory() {
return jvmMaxMemory;
}
public void setJvmMaxMemory(Long jvmMaxMemory) {
this.jvmMaxMemory = jvmMaxMemory;
}
public Integer getJvmThreadCount() {
return jvmThreadCount;
}
public void setJvmThreadCount(Integer jvmThreadCount) {
this.jvmThreadCount = jvmThreadCount;
}
public Integer getJvmPeakThreadCount() {
return jvmPeakThreadCount;
}
public void setJvmPeakThreadCount(Integer jvmPeakThreadCount) {
this.jvmPeakThreadCount = jvmPeakThreadCount;
}
public String getOsName() {
return osName;
}
public void setOsName(String osName) {
this.osName = osName;
}
public String getOsVersion() {
return osVersion;
}
public void setOsVersion(String osVersion) {
this.osVersion = osVersion;
}
public Double getSystemLoadAverage() {
return systemLoadAverage;
}
public void setSystemLoadAverage(Double systemLoadAverage) {
this.systemLoadAverage = systemLoadAverage;
}
public static String title() {
StringBuilder sb = new StringBuilder(String.valueOf(TITLE_TIMESTAMP));
sb.append(",");
sb.append(TITLE_IP);
sb.append(",");
sb.append(TITLE_OS_NAME);
sb.append(",");
sb.append(TITLE_OS_VERSION);
sb.append(",");
sb.append(TITLE_SYSTEM_LOAD_AVERAGE);
sb.append(",");
sb.append(TITLE_JVM_TOTAL_MEMORY);
sb.append(",");
sb.append(TITLE_JVM_FREE_MEMORY);
sb.append(",");
sb.append(TITLE_JVM_MAX_MEMORY);
sb.append(",");
sb.append(TITLE_JVM_THREAD_COUNT);
sb.append(",");
sb.append(TITLE_JVM_PEAK_THREAD_COUNT);
return sb.toString();
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(String.valueOf(timeStamp));
sb.append(",");
sb.append(ip);
sb.append(",");
sb.append(osName);
sb.append(",");
sb.append(osVersion);
sb.append(",");
sb.append(systemLoadAverage);
sb.append(",");
sb.append(jvmTotalMemory);
sb.append(",");
sb.append(jvmFreeMemory);
sb.append(",");
sb.append(jvmMaxMemory);
sb.append(",");
sb.append(jvmThreadCount);
sb.append(",");
sb.append(jvmPeakThreadCount);
return sb.toString();
}
@Override
public Object clone() throws CloneNotSupportedException {
MonitorInfo clone = (MonitorInfo)super.clone();
clone.setIp(ip);
clone.setOsName(osName);
clone.setOsVersion(osVersion);
clone.setSystemLoadAverage(systemLoadAverage);
clone.setJvmTotalMemory(jvmTotalMemory);
clone.setJvmFreeMemory(jvmFreeMemory);
clone.setJvmMaxMemory(jvmMaxMemory);
clone.setJvmThreadCount(jvmThreadCount);
clone.setJvmPeakThreadCount(jvmPeakThreadCount);
return clone;
}
}