diff --git a/CHANGES.txt b/CHANGES.txt
index 61f6b01..eacffbd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -70,6 +70,8 @@
 
   BUGS
 
+    CHUKWA-791.  Update quick links url to use IP address.  (Eric Yang)
+ 
     CHUKWA-788. Save ring chart threshold setting in HBase. (Eric Yang)
 
     CHUKWA-784. Improve CharFileTailingAdaptorUTF8NewLineEscaped and LocalWriter 
diff --git a/src/main/java/org/apache/hadoop/chukwa/hicc/rest/DashboardController.java b/src/main/java/org/apache/hadoop/chukwa/hicc/rest/DashboardController.java
index 16133f4..2721694 100644
--- a/src/main/java/org/apache/hadoop/chukwa/hicc/rest/DashboardController.java
+++ b/src/main/java/org/apache/hadoop/chukwa/hicc/rest/DashboardController.java
@@ -19,6 +19,7 @@
 
 import java.io.StringWriter;
 import java.util.Set;
+import java.net.InetAddress;
 
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
@@ -105,20 +106,35 @@
       if(sourceParts[1].equals("NameNode")) {
         String[] parts = hadoop.get(DFSConfigKeys.DFS_NAMENODE_HTTP_ADDRESS_KEY).split(":");
         StringBuilder buffer = new StringBuilder();
-        buffer.append(sourceParts[0]);
+        try {
+          InetAddress address = InetAddress.getByName(sourceParts[0]);
+          buffer.append(address.getHostAddress());
+        } catch (Exception e) {
+          buffer.append(sourceParts[0]);
+        } 
         buffer.append(":");
         buffer.append(parts[1]);
         nn = buffer.toString();
       } else if(sourceParts[1].equals("ResourceManager")) {
         String[] parts = hadoop.get(YarnConfiguration.RM_WEBAPP_ADDRESS).split(":");
         StringBuilder buffer = new StringBuilder();
-        buffer.append(sourceParts[0]);
+        try {
+          InetAddress address = InetAddress.getByName(sourceParts[0]);
+          buffer.append(address.getHostAddress());
+        } catch (Exception e) {
+          buffer.append(sourceParts[0]);
+        } 
         buffer.append(":");
         buffer.append(parts[1]);
         rm = buffer.toString();
       } else if(sourceParts[1].equals("Master")) {
         StringBuilder buffer = new StringBuilder();
-        buffer.append(sourceParts[0]);
+        try {
+          InetAddress address = InetAddress.getByName(sourceParts[0]);
+          buffer.append(address.getHostAddress());
+        } catch (Exception e) {
+          buffer.append(sourceParts[0]);
+        } 
         buffer.append(":");
         buffer.append(hconf.getInt("hbase.master.info.port", HConstants.DEFAULT_MASTER_INFOPORT));
         hm = buffer.toString();
