diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfig.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfig.java
index 6cee737..5ece99b 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfig.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultGrpcTelemetryConfig.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 import java.util.Objects;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -98,6 +99,17 @@
     }
 
     @Override
+    public String toString() {
+        return toStringHelper(this)
+                .add("address", address)
+                .add("port", port)
+                .add("usePlaintext", usePlaintext)
+                .add("maxInboundMsgSize", maxInboundMsgSize)
+                .add("configMap", configMap)
+                .toString();
+    }
+
+    @Override
     public TelemetryConfig.Builder createBuilder() {
         return new DefaultBuilder();
     }
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfig.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfig.java
index 68b28c1..461fee5 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfig.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultInfluxDbTelemetryConfig.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 import java.util.Objects;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -115,6 +116,19 @@
     }
 
     @Override
+    public String toString() {
+        return toStringHelper(this)
+                .add("address", address)
+                .add("port", port)
+                .add("username", username)
+                .add("password", password)
+                .add("database", database)
+                .add("enableBatch", enableBatch)
+                .add("configMap", configMap)
+                .toString();
+    }
+
+    @Override
     public TelemetryConfig.Builder createBuilder() {
         return new DefaultBuilder();
     }
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfig.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfig.java
index efde9f5..6fc90fd 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfig.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultKafkaTelemetryConfig.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 import java.util.Objects;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -142,6 +143,22 @@
     }
 
     @Override
+    public String toString() {
+        return toStringHelper(this)
+                .add("address", address)
+                .add("port", port)
+                .add("retries", retries)
+                .add("requiredAcks", requiredAcks)
+                .add("batchSize", batchSize)
+                .add("lingerMs", lingerMs)
+                .add("memoryBuffer", memoryBuffer)
+                .add("keySerializer", keySerializer)
+                .add("valueSerializer", valueSerializer)
+                .add("configMap", configMap)
+                .toString();
+    }
+
+    @Override
     public TelemetryConfig.Builder createBuilder() {
         return new DefaultBuilder();
     }
diff --git a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfig.java b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfig.java
index 29e9a2a..df9d6ce 100644
--- a/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfig.java
+++ b/apps/openstacktelemetry/app/src/main/java/org/onosproject/openstacktelemetry/config/DefaultRestTelemetryConfig.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 import java.util.Objects;
 
+import static com.google.common.base.MoreObjects.toStringHelper;
 import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
@@ -116,6 +117,19 @@
     }
 
     @Override
+    public String toString() {
+        return toStringHelper(this)
+                .add("address", address)
+                .add("port", port)
+                .add("endpoint", endpoint)
+                .add("method", method)
+                .add("requestMediaType", requestMediaType)
+                .add("responseMediaType", responseMediaType)
+                .add("configMap", configMap)
+                .toString();
+    }
+
+    @Override
     public TelemetryConfig.Builder createBuilder() {
         return new DefaultBuilder();
     }
