diff --git a/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java b/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java
index a3a3069..2ef6355 100644
--- a/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java
+++ b/core/net/src/main/java/org/onosproject/net/host/impl/HostMonitor.java
@@ -102,8 +102,9 @@
      * @param ip IP address of the host to monitor
      */
     void addMonitoringFor(IpAddress ip) {
-        monitoredAddresses.add(ip);
-        probe(ip);
+        if (monitoredAddresses.add(ip)) {
+            probe(ip);
+        }
     }
 
     /**
@@ -194,14 +195,14 @@
             intf.ipAddressesList().stream()
                     .filter(ia -> ia.subnetAddress().contains(targetIp))
                     .forEach(ia -> {
-                        log.info("Sending probe for target:{} out of intf:{} vlan:{}",
+                        log.debug("Sending probe for target:{} out of intf:{} vlan:{}",
                                 targetIp, intf.connectPoint(), intf.vlan());
                         sendProbe(intf.connectPoint(), targetIp, ia.ipAddress(),
                                 intf.mac(), intf.vlan());
                         // account for use-cases where tagged-vlan config is used
                         if (!intf.vlanTagged().isEmpty()) {
                             intf.vlanTagged().forEach(tag -> {
-                                log.info("Sending probe for target:{} out of intf:{} vlan:{}",
+                                log.debug("Sending probe for target:{} out of intf:{} vlan:{}",
                                         targetIp, intf.connectPoint(), tag);
                                 sendProbe(intf.connectPoint(), targetIp, ia.ipAddress(),
                                         intf.mac(), tag);
