Add OS Info when register and registerRecover.
This commit is contained in:
parent
426d339a3f
commit
45cbf8b5c4
|
|
@ -22,6 +22,7 @@ message ApplicationInstance {
|
|||
int32 applicationId = 1;
|
||||
string agentUUID = 2;
|
||||
int64 registerTime = 3;
|
||||
OSInfo osinfo = 4;
|
||||
}
|
||||
|
||||
message ApplicationInstanceMapping {
|
||||
|
|
@ -33,6 +34,7 @@ message ApplicationInstanceRecover {
|
|||
int32 applicationId = 1;
|
||||
int32 applicationInstanceId = 2;
|
||||
int64 registerTime = 3;
|
||||
OSInfo osinfo = 4;
|
||||
}
|
||||
|
||||
message ApplicationInstanceHeartbeat {
|
||||
|
|
@ -40,6 +42,12 @@ message ApplicationInstanceHeartbeat {
|
|||
int64 heartbeatTime = 2;
|
||||
}
|
||||
|
||||
message OSInfo {
|
||||
string osName = 1;
|
||||
string hostname = 2;
|
||||
repeated string ipv4s = 3;
|
||||
}
|
||||
|
||||
//discovery service for ServiceName by Network address or application code
|
||||
service ServiceNameDiscoveryService {
|
||||
rpc discovery (ServiceNameCollection) returns (ServiceNameMappingCollection) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,82 @@
|
|||
package org.skywalking.apm.agent.core.os;
|
||||
|
||||
import java.net.Inet4Address;
|
||||
import java.net.InetAddress;
|
||||
import java.net.NetworkInterface;
|
||||
import java.net.SocketException;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Enumeration;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import org.skywalking.apm.network.proto.OSInfo;
|
||||
|
||||
/**
|
||||
* @author wusheng
|
||||
*/
|
||||
public class OSUtil {
|
||||
private static volatile String OS_NAME;
|
||||
private static volatile String HOST_NAME;
|
||||
private static volatile List<String> IPV4_LIST;
|
||||
|
||||
public static String getOsName() {
|
||||
if (OS_NAME == null) {
|
||||
OS_NAME = System.getProperty("os.name");
|
||||
}
|
||||
return OS_NAME;
|
||||
}
|
||||
|
||||
public static String getHostName() {
|
||||
if (HOST_NAME == null) {
|
||||
try {
|
||||
InetAddress host = InetAddress.getLocalHost();
|
||||
HOST_NAME = host.getHostName();
|
||||
} catch (UnknownHostException e) {
|
||||
HOST_NAME = "unknown";
|
||||
}
|
||||
}
|
||||
return HOST_NAME;
|
||||
}
|
||||
|
||||
public static List<String> getAllIPV4() {
|
||||
if (IPV4_LIST == null) {
|
||||
IPV4_LIST = new LinkedList<String>();
|
||||
try {
|
||||
Enumeration<NetworkInterface> interfs = NetworkInterface.getNetworkInterfaces();
|
||||
while (interfs.hasMoreElements()) {
|
||||
NetworkInterface networkInterface = interfs.nextElement();
|
||||
Enumeration<InetAddress> inetAddresses = networkInterface.getInetAddresses();
|
||||
while (inetAddresses.hasMoreElements()) {
|
||||
InetAddress address = inetAddresses.nextElement();
|
||||
if (address instanceof Inet4Address) {
|
||||
String addressStr = address.getHostAddress();
|
||||
if ("127.0.0.1".equals(addressStr)) {
|
||||
continue;
|
||||
}
|
||||
IPV4_LIST.add(addressStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (SocketException e) {
|
||||
|
||||
}
|
||||
}
|
||||
return IPV4_LIST;
|
||||
}
|
||||
|
||||
public static OSInfo buildOSInfo() {
|
||||
OSInfo.Builder builder = OSInfo.newBuilder();
|
||||
String osName = getOsName();
|
||||
if (osName != null) {
|
||||
builder.setOsName(osName);
|
||||
}
|
||||
String hostName = getHostName();
|
||||
if (hostName != null) {
|
||||
builder.setHostname(hostName);
|
||||
}
|
||||
List<String> allIPV4 = getAllIPV4();
|
||||
if (allIPV4.size() > 0) {
|
||||
builder.addAllIpv4S(allIPV4);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
|
|
@ -15,6 +15,7 @@ import org.skywalking.apm.agent.core.context.trace.TraceSegment;
|
|||
import org.skywalking.apm.agent.core.dictionary.ApplicationDictionary;
|
||||
import org.skywalking.apm.agent.core.dictionary.DictionaryUtil;
|
||||
import org.skywalking.apm.agent.core.dictionary.OperationNameDictionary;
|
||||
import org.skywalking.apm.agent.core.os.OSUtil;
|
||||
import org.skywalking.apm.logging.ILog;
|
||||
import org.skywalking.apm.logging.LogManager;
|
||||
import org.skywalking.apm.network.proto.Application;
|
||||
|
|
@ -104,6 +105,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList
|
|||
.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID)
|
||||
.setAgentUUID(PROCESS_UUID)
|
||||
.setRegisterTime(System.currentTimeMillis())
|
||||
.setOsinfo(OSUtil.buildOSInfo())
|
||||
.build());
|
||||
if (instanceMapping.getApplicationInstanceId() != DictionaryUtil.nullValue()) {
|
||||
RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID
|
||||
|
|
@ -115,6 +117,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList
|
|||
.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID)
|
||||
.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID)
|
||||
.setRegisterTime(System.currentTimeMillis())
|
||||
.setOsinfo(OSUtil.buildOSInfo())
|
||||
.build());
|
||||
} else {
|
||||
if (lastSegmentTime - System.currentTimeMillis() > 60 * 1000) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue