add network info printing
This commit is contained in:
parent
a8a4bbc30e
commit
3e0f854c88
|
@ -36,6 +36,7 @@
|
|||
<w>freqs</w>
|
||||
<w>hpux</w>
|
||||
<w>hyperic</w>
|
||||
<w>ifconfig</w>
|
||||
<w>indices</w>
|
||||
<w>inet</w>
|
||||
<w>infos</w>
|
||||
|
@ -52,6 +53,7 @@
|
|||
<w>linefeeds</w>
|
||||
<w>loopback</w>
|
||||
<w>lucene</w>
|
||||
<w>mcast</w>
|
||||
<w>memcached</w>
|
||||
<w>metadata</w>
|
||||
<w>metadatas</w>
|
||||
|
|
|
@ -41,4 +41,8 @@ public class JmxOsProbe extends AbstractComponent implements OsProbe {
|
|||
stats.timestamp = System.currentTimeMillis();
|
||||
return stats;
|
||||
}
|
||||
|
||||
@Override public String ifconfig() {
|
||||
return "NA";
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,4 +27,6 @@ public interface OsProbe {
|
|||
OsInfo osInfo();
|
||||
|
||||
OsStats osStats();
|
||||
|
||||
String ifconfig();
|
||||
}
|
||||
|
|
|
@ -48,4 +48,8 @@ public class OsService extends AbstractComponent {
|
|||
public OsStats stats() {
|
||||
return probe.osStats();
|
||||
}
|
||||
|
||||
public String ifconfig() {
|
||||
return probe.ifconfig();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,4 +126,85 @@ public class SigarOsProbe extends AbstractComponent implements OsProbe {
|
|||
|
||||
return stats;
|
||||
}
|
||||
|
||||
@Override public String ifconfig() {
|
||||
Sigar sigar = sigarService.sigar();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
try {
|
||||
for (String ifname : sigar.getNetInterfaceList()) {
|
||||
NetInterfaceConfig ifconfig = null;
|
||||
try {
|
||||
ifconfig = sigar.getNetInterfaceConfig(ifname);
|
||||
} catch (SigarException e) {
|
||||
sb.append(ifname + "\t" + "Not Avaialbe [" + e.getMessage() + "]");
|
||||
}
|
||||
long flags = ifconfig.getFlags();
|
||||
|
||||
String hwaddr = "";
|
||||
if (!NetFlags.NULL_HWADDR.equals(ifconfig.getHwaddr())) {
|
||||
hwaddr = " HWaddr " + ifconfig.getHwaddr();
|
||||
}
|
||||
|
||||
if (!ifconfig.getName().equals(ifconfig.getDescription())) {
|
||||
sb.append(ifconfig.getDescription()).append('\n');
|
||||
}
|
||||
|
||||
sb.append(ifconfig.getName() + "\t" + "Link encap:" + ifconfig.getType() + hwaddr).append('\n');
|
||||
|
||||
String ptp = "";
|
||||
if ((flags & NetFlags.IFF_POINTOPOINT) > 0) {
|
||||
ptp = " P-t-P:" + ifconfig.getDestination();
|
||||
}
|
||||
|
||||
String bcast = "";
|
||||
if ((flags & NetFlags.IFF_BROADCAST) > 0) {
|
||||
bcast = " Bcast:" + ifconfig.getBroadcast();
|
||||
}
|
||||
|
||||
sb.append("\t" +
|
||||
"inet addr:" + ifconfig.getAddress() +
|
||||
ptp + //unlikely
|
||||
bcast +
|
||||
" Mask:" + ifconfig.getNetmask()).append('\n');
|
||||
|
||||
sb.append("\t" +
|
||||
NetFlags.getIfFlagsString(flags) +
|
||||
" MTU:" + ifconfig.getMtu() +
|
||||
" Metric:" + ifconfig.getMetric()).append('\n');
|
||||
try {
|
||||
NetInterfaceStat ifstat = sigar.getNetInterfaceStat(ifname);
|
||||
|
||||
sb.append("\t" +
|
||||
"RX packets:" + ifstat.getRxPackets() +
|
||||
" errors:" + ifstat.getRxErrors() +
|
||||
" dropped:" + ifstat.getRxDropped() +
|
||||
" overruns:" + ifstat.getRxOverruns() +
|
||||
" frame:" + ifstat.getRxFrame()).append('\n');
|
||||
|
||||
sb.append("\t" +
|
||||
"TX packets:" + ifstat.getTxPackets() +
|
||||
" errors:" + ifstat.getTxErrors() +
|
||||
" dropped:" + ifstat.getTxDropped() +
|
||||
" overruns:" + ifstat.getTxOverruns() +
|
||||
" carrier:" + ifstat.getTxCarrier()).append('\n');
|
||||
sb.append("\t" + "collisions:" +
|
||||
ifstat.getTxCollisions()).append('\n');
|
||||
|
||||
long rxBytes = ifstat.getRxBytes();
|
||||
long txBytes = ifstat.getTxBytes();
|
||||
|
||||
sb.append("\t" +
|
||||
"RX bytes:" + rxBytes +
|
||||
" (" + Sigar.formatSize(rxBytes) + ")" +
|
||||
" " +
|
||||
"TX bytes:" + txBytes +
|
||||
" (" + Sigar.formatSize(txBytes) + ")").append('\n');
|
||||
} catch (SigarException e) {
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
} catch (SigarException e) {
|
||||
return "NA";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,15 +31,23 @@ public class OsUtils {
|
|||
/**
|
||||
* True iff running on Linux.
|
||||
*/
|
||||
public static final boolean LINUX = OS_NAME.startsWith("Linux");
|
||||
public static final boolean LINUX = OS_NAME.trim().toLowerCase().startsWith("linux");
|
||||
/**
|
||||
* True iff running on Windows.
|
||||
*/
|
||||
public static final boolean WINDOWS = OS_NAME.startsWith("Windows");
|
||||
public static final boolean WINDOWS = OS_NAME.trim().toLowerCase().startsWith("windows");
|
||||
/**
|
||||
* True iff running on SunOS.
|
||||
*/
|
||||
public static final boolean SUN_OS = OS_NAME.startsWith("SunOS");
|
||||
public static final boolean SOLARIS = OS_NAME.trim().toLowerCase().startsWith("sun");
|
||||
/**
|
||||
* True iff running on Mac.
|
||||
*/
|
||||
public static final boolean MAC = OS_NAME.trim().toLowerCase().startsWith("mac");
|
||||
/**
|
||||
* True iff running on HP.
|
||||
*/
|
||||
public static final boolean HP = OS_NAME.trim().toLowerCase().startsWith("hp");
|
||||
|
||||
|
||||
private OsUtils() {
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
package org.elasticsearch.util;
|
||||
|
||||
import org.elasticsearch.util.collect.ImmutableSet;
|
||||
import org.elasticsearch.util.collect.Iterables;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
|
@ -1071,8 +1072,8 @@ public class Strings {
|
|||
* @param suffix the String to end each element with
|
||||
* @return the delimited String
|
||||
*/
|
||||
public static String collectionToDelimitedString(Collection coll, String delim, String prefix, String suffix) {
|
||||
if (isEmpty(coll)) {
|
||||
public static String collectionToDelimitedString(Iterable coll, String delim, String prefix, String suffix) {
|
||||
if (Iterables.isEmpty(coll)) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
@ -1094,7 +1095,7 @@ public class Strings {
|
|||
* @param delim the delimiter to use (probably a ",")
|
||||
* @return the delimited String
|
||||
*/
|
||||
public static String collectionToDelimitedString(Collection coll, String delim) {
|
||||
public static String collectionToDelimitedString(Iterable coll, String delim) {
|
||||
return collectionToDelimitedString(coll, delim, "", "");
|
||||
}
|
||||
|
||||
|
@ -1105,7 +1106,7 @@ public class Strings {
|
|||
* @param coll the Collection to display
|
||||
* @return the delimited String
|
||||
*/
|
||||
public static String collectionToCommaDelimitedString(Collection coll) {
|
||||
public static String collectionToCommaDelimitedString(Iterable coll) {
|
||||
return collectionToDelimitedString(coll, ",");
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@
|
|||
|
||||
package org.elasticsearch.util.network;
|
||||
|
||||
import org.elasticsearch.monitor.os.JmxOsProbe;
|
||||
import org.elasticsearch.monitor.os.OsService;
|
||||
import org.elasticsearch.util.MapBuilder;
|
||||
import org.elasticsearch.util.collect.ImmutableMap;
|
||||
import org.elasticsearch.util.component.AbstractComponent;
|
||||
|
@ -30,6 +32,7 @@ import java.net.InetAddress;
|
|||
import java.net.NetworkInterface;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.Collection;
|
||||
import java.util.Enumeration;
|
||||
|
||||
/**
|
||||
* @author kimchy (shay.banon)
|
||||
|
@ -56,8 +59,42 @@ public class NetworkService extends AbstractComponent {
|
|||
|
||||
private volatile ImmutableMap<String, CustomNameResolver> customNameResolvers = ImmutableMap.of();
|
||||
|
||||
@Inject public NetworkService(Settings settings) {
|
||||
public NetworkService(Settings settings) {
|
||||
this(settings, new OsService(settings, new JmxOsProbe(settings)));
|
||||
}
|
||||
|
||||
@Inject public NetworkService(Settings settings, OsService service) {
|
||||
super(settings);
|
||||
|
||||
if (logger.isDebugEnabled()) {
|
||||
StringBuilder netDebug = new StringBuilder("net_info");
|
||||
try {
|
||||
Enumeration<NetworkInterface> enum_ = NetworkInterface.getNetworkInterfaces();
|
||||
String hostName = InetAddress.getLocalHost().getHostName();
|
||||
netDebug.append("\nhost [").append(hostName).append("]\n");
|
||||
while (enum_.hasMoreElements()) {
|
||||
NetworkInterface net = enum_.nextElement();
|
||||
|
||||
netDebug.append(net.getName()).append('\t').append("display_name [").append(net.getDisplayName()).append("]\n");
|
||||
Enumeration<InetAddress> addresses = net.getInetAddresses();
|
||||
netDebug.append("\t\taddress ");
|
||||
while (addresses.hasMoreElements()) {
|
||||
netDebug.append("[").append(addresses.nextElement()).append("] ");
|
||||
}
|
||||
netDebug.append('\n');
|
||||
netDebug.append("\t\tmtu [").append(net.getMTU()).append("] multicast [").append(net.supportsMulticast()).append("] ptp [").append(net.isPointToPoint())
|
||||
.append("] loopback [").append(net.isLoopback()).append("] up [").append(net.isUp()).append("] virtual [").append(net.isVirtual()).append("]")
|
||||
.append('\n');
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
netDebug.append("Failed to get Network Interface Info [" + ex.getMessage() + "]");
|
||||
}
|
||||
logger.debug(netDebug.toString());
|
||||
}
|
||||
|
||||
if (logger.isTraceEnabled()) {
|
||||
logger.trace("ifconfig\n\n" + service.ifconfig());
|
||||
}
|
||||
}
|
||||
|
||||
public void addCustomNameResolver(String name, CustomNameResolver customNameResolver) {
|
||||
|
|
|
@ -62,7 +62,6 @@ public abstract class NetworkUtils {
|
|||
return System.getProperty("java.net.preferIPv4Stack") != null && System.getProperty("java.net.preferIPv4Stack").equals("true");
|
||||
}
|
||||
|
||||
|
||||
public static InetAddress getIPv4Localhost() throws UnknownHostException {
|
||||
return getLocalhost(StackType.IPv4);
|
||||
}
|
||||
|
@ -82,6 +81,10 @@ public abstract class NetworkUtils {
|
|||
return InetAddress.getByName("::1");
|
||||
}
|
||||
|
||||
public static boolean canBindToMcastAddress() {
|
||||
return OsUtils.LINUX || OsUtils.SOLARIS || OsUtils.HP;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns the first non-loopback address on any interface on the current host.
|
||||
|
|
Loading…
Reference in New Issue