提交 45cbf8b5 编写于 作者: wu-sheng's avatar wu-sheng

Add OS Info when register and registerRecover.

上级 426d339a
...@@ -22,6 +22,7 @@ message ApplicationInstance { ...@@ -22,6 +22,7 @@ message ApplicationInstance {
int32 applicationId = 1; int32 applicationId = 1;
string agentUUID = 2; string agentUUID = 2;
int64 registerTime = 3; int64 registerTime = 3;
OSInfo osinfo = 4;
} }
message ApplicationInstanceMapping { message ApplicationInstanceMapping {
...@@ -33,6 +34,7 @@ message ApplicationInstanceRecover { ...@@ -33,6 +34,7 @@ message ApplicationInstanceRecover {
int32 applicationId = 1; int32 applicationId = 1;
int32 applicationInstanceId = 2; int32 applicationInstanceId = 2;
int64 registerTime = 3; int64 registerTime = 3;
OSInfo osinfo = 4;
} }
message ApplicationInstanceHeartbeat { message ApplicationInstanceHeartbeat {
...@@ -40,6 +42,12 @@ message ApplicationInstanceHeartbeat { ...@@ -40,6 +42,12 @@ message ApplicationInstanceHeartbeat {
int64 heartbeatTime = 2; 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 //discovery service for ServiceName by Network address or application code
service ServiceNameDiscoveryService { service ServiceNameDiscoveryService {
rpc discovery (ServiceNameCollection) returns (ServiceNameMappingCollection) { rpc discovery (ServiceNameCollection) returns (ServiceNameMappingCollection) {
......
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; ...@@ -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.ApplicationDictionary;
import org.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.skywalking.apm.agent.core.dictionary.DictionaryUtil;
import org.skywalking.apm.agent.core.dictionary.OperationNameDictionary; 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.ILog;
import org.skywalking.apm.logging.LogManager; import org.skywalking.apm.logging.LogManager;
import org.skywalking.apm.network.proto.Application; import org.skywalking.apm.network.proto.Application;
...@@ -104,6 +105,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList ...@@ -104,6 +105,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList
.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID) .setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID)
.setAgentUUID(PROCESS_UUID) .setAgentUUID(PROCESS_UUID)
.setRegisterTime(System.currentTimeMillis()) .setRegisterTime(System.currentTimeMillis())
.setOsinfo(OSUtil.buildOSInfo())
.build()); .build());
if (instanceMapping.getApplicationInstanceId() != DictionaryUtil.nullValue()) { if (instanceMapping.getApplicationInstanceId() != DictionaryUtil.nullValue()) {
RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID
...@@ -115,6 +117,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList ...@@ -115,6 +117,7 @@ public class AppAndServiceRegisterClient implements BootService, GRPCChannelList
.setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID) .setApplicationId(RemoteDownstreamConfig.Agent.APPLICATION_ID)
.setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID) .setApplicationInstanceId(RemoteDownstreamConfig.Agent.APPLICATION_INSTANCE_ID)
.setRegisterTime(System.currentTimeMillis()) .setRegisterTime(System.currentTimeMillis())
.setOsinfo(OSUtil.buildOSInfo())
.build()); .build());
} else { } else {
if (lastSegmentTime - System.currentTimeMillis() > 60 * 1000) { if (lastSegmentTime - System.currentTimeMillis() > 60 * 1000) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册