MonitoringActualBean.java
package sk.iway.iwcm.components.monitoring.jpa;
import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Properties;
import lombok.Getter;
import lombok.Setter;
import sk.iway.iwcm.*;
import sk.iway.iwcm.stat.SessionHolder;
import sk.iway.iwcm.system.ConfDB;
import sk.iway.iwcm.system.ConfDetails;
import sk.iway.iwcm.system.cluster.ClusterDB;
import sk.iway.iwcm.system.datatable.json.LabelValueInteger;
import sk.iway.iwcm.system.dbpool.ConfigurableDataSource;
import sk.iway.iwcm.system.monitoring.CpuInfo;
/**
* 47419 - monitorovanie servera Bean prenasajuci JSON data do administracie pre
* zobrazenie dat monitoringu
*/
@Getter
@Setter
public class MonitoringActualBean {
/** volne miesto na disku **/
private Long storageTotal;
private Long storageUsable;
private Long storageFree;
/** obsadenost pamate **/
private Long memTotal;
private Long memFree;
private Long memUsed;
private Long memMax;
/** zatazenie CPU **/
private Integer cpuUsage;
private Integer cpuUsageProcess;
private Integer serverCpus;
/** vseobecne informacie **/
private Long serverActualTime;
private Long serverStartTime;
private Long serverRuntime;
private String remoteIP;
private String serverHostname;
private String[] serverIP;
private String serverContry;
private String serverLanguage;
private Integer dbTotal;
private Integer dbActive;
private Integer dbIdle;
private Integer dbWaiting;
private Integer cacheItems;
private Integer sessionsTotal;
private List<LabelValueInteger> sessionsList;
private String clusterNodeName;
/** Informacie o SW **/
private String swRuntime;
private String swVmVersion;
private String swVmName;
private String swJavaVersion;
private String swJavaVendor;
private String swServerName;
private String swServerOs;
private String swServerOsVersion;
private String licenseExpirationDate;
public MonitoringActualBean() {
/** volne miesto na disku **/
File drive = new File(Tools.getRealPath("/"));
storageTotal = drive.getTotalSpace();
storageUsable = drive.getUsableSpace();
storageFree = drive.getFreeSpace();
/** obsadenost pamate **/
Runtime rt = Runtime.getRuntime();
memTotal = rt.totalMemory();
memFree = rt.freeMemory();
memUsed = memTotal.longValue() - memFree.longValue();
memMax = rt.maxMemory();
CpuInfo cpu = new CpuInfo();
cpuUsage = cpu.getCpuUsage();
cpuUsageProcess = cpu.getCpuUsageProcess();
serverCpus = cpu.getCpuCount();
//Logger.debug(MonitoringActualBean.class, "cpuUsage: " + cpuUsage+" processUsage="+cpuUsageProcess+" cpuCount="+serverCpus);
/** vseobecne informacie **/
serverActualTime = Tools.getNow();
serverStartTime = InitServlet.getServerStartDatetime().getTime();
serverRuntime = serverActualTime - serverStartTime;
RequestBean rb = SetCharacterEncodingFilter.getCurrentRequestBean();
if (rb != null) {
remoteIP = rb.getRemoteIP();
}
try {
serverHostname = InetAddress.getLocalHost().getHostName();
InetAddress[] ipecky = InetAddress.getAllByName(serverHostname);
if (ipecky != null && ipecky.length>0) {
int i;
serverIP = new String[ipecky.length];
for (i = 0; i < ipecky.length; i++)
{
serverIP[i] = ipecky[i].getHostAddress();
}
}
} catch (UnknownHostException e) {
Logger.error(MonitoringActualBean.class, e);
}
Locale l = Locale.getDefault();
serverContry = l.getCountry();
serverLanguage = l.getLanguage();
ConfigurableDataSource ds = null;
try
{
ds = (ConfigurableDataSource) DBPool.getInstance().getDataSource("iwcm");
dbTotal = ds.getNumTotal();
dbActive = ds.getNumActive();
dbIdle = ds.getNumIdle();
dbWaiting = ds.getNumWaiting();
} catch (Exception ex) {
//
}
cacheItems = Cache.getInstance().getSize();
sessionsTotal = SessionHolder.getTotalSessions();
if(ClusterDB.isServerRunningInClusterMode())
{
List<ConfDetails> confValues = ConfDB.getConfig("statSessions-");
sessionsList = new ArrayList<>();
for(ConfDetails conf: confValues)
{
LabelValueInteger lv = new LabelValueInteger(conf.getName().substring(13), Tools.getIntValue(conf.getValue(), 0));
sessionsList.add(lv);
}
clusterNodeName = Constants.getString("clusterMyNodeName");
}
/** Informacie o SW **/
Properties props = System.getProperties();
swRuntime = props.getProperty("java.runtime.name");
swVmVersion = props.getProperty("java.vm.version");
swVmName = props.getProperty("java.vm.name");
swJavaVersion = props.getProperty("java.version");
swJavaVendor = props.getProperty("java.vendor");
swServerName = Constants.getServletContext().getServerInfo();
swServerOs = props.getProperty("os.name");
swServerOsVersion = props.getProperty("os.version");
Long licenseExpirationTimeInMillis = Constants.getLong("licenseExpiryDate");
if(licenseExpirationTimeInMillis != null && licenseExpirationTimeInMillis > 0L)
{
licenseExpirationDate = Tools.formatDate(new Date(licenseExpirationTimeInMillis), "dd.MM.yyyy");
}
}
}