package org.skywalking.apm.util; import java.lang.management.ManagementFactory; import java.net.InetAddress; import java.net.UnknownHostException; public final class MachineInfo { private static int PROCESS_NO = -1; private static String IP; private static String HOST_NAME; static { PROCESS_NO = getProcessNo(); } public static int getProcessNo() { if (PROCESS_NO == -1) { String name = ManagementFactory.getRuntimeMXBean().getName(); try { PROCESS_NO = Integer.parseInt(name.split("@")[0]); } catch (Throwable t) { PROCESS_NO = 0; } } return PROCESS_NO; } private static InetAddress getInetAddress() { try { return InetAddress.getLocalHost(); } catch (UnknownHostException e) { HOST_NAME = "unknown host!"; } return null; } public static String getHostIp() { if (StringUtil.isEmpty(IP)) { InetAddress netAddress = getInetAddress(); if (null == netAddress) { IP = "N/A"; } else { IP = netAddress.getHostAddress(); //get the ip address } } return IP; } public static String getHostName() { if (StringUtil.isEmpty(HOST_NAME)) { InetAddress netAddress = getInetAddress(); if (null == netAddress) { HOST_NAME = "N/A"; } else { HOST_NAME = netAddress.getHostName(); //get the host address } } return HOST_NAME; } public static String getHostDesc() { return getHostName() + "/" + getHostIp(); } private MachineInfo() { // Non } }