diff --git a/apps/gangliametrics/src/main/java/org/onosproject/gangliametrics/DefaultGangliaMetricsReporter.java b/apps/gangliametrics/src/main/java/org/onosproject/gangliametrics/DefaultGangliaMetricsReporter.java
index bd49bcf..7ea58ea 100644
--- a/apps/gangliametrics/src/main/java/org/onosproject/gangliametrics/DefaultGangliaMetricsReporter.java
+++ b/apps/gangliametrics/src/main/java/org/onosproject/gangliametrics/DefaultGangliaMetricsReporter.java
@@ -92,7 +92,7 @@
     @Activate
     public void activate() {
         cfgService.registerProperties(getClass());
-        coreService.registerApplication("org.onosproject.metrics.reporter");
+        coreService.registerApplication("org.onosproject.gangliametrics");
         metricsService.registerReporter(this);
 
         startReport();
@@ -120,7 +120,13 @@
     public void startReport() {
         configGMetric();
         gangliaReporter = buildReporter(ganglia);
-        gangliaReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+
+        try {
+            gangliaReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+        } catch (Exception e) {
+            log.error("Errors during reporting to ganglia, msg: {}" + e.getMessage());
+        }
+
         log.info("Start to report metrics to ganglia server.");
     }
 
@@ -142,7 +148,13 @@
     public void notifyMetricsChange() {
         gangliaReporter.stop();
         gangliaReporter = buildReporter(ganglia);
-        gangliaReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+
+        try {
+            gangliaReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+        } catch (Exception e) {
+            log.error("Errors during reporting to ganglia, msg: {}" + e.getMessage());
+        }
+
         log.info("Metric registry has been changed, apply changes.");
     }
 
diff --git a/apps/graphitemetrics/src/main/java/org/onosproject/graphitemetrics/DefaultGraphiteMetricsReporter.java b/apps/graphitemetrics/src/main/java/org/onosproject/graphitemetrics/DefaultGraphiteMetricsReporter.java
index 89453a7..11e4948 100644
--- a/apps/graphitemetrics/src/main/java/org/onosproject/graphitemetrics/DefaultGraphiteMetricsReporter.java
+++ b/apps/graphitemetrics/src/main/java/org/onosproject/graphitemetrics/DefaultGraphiteMetricsReporter.java
@@ -125,7 +125,13 @@
     public void startReport() {
         configGraphite();
         graphiteReporter = buildReporter(graphite);
-        graphiteReporter.start(reportPeriod, REPORT_TIME_UNIT);
+
+        try {
+            graphiteReporter.start(DEFAULT_REPORT_PERIOD, REPORT_TIME_UNIT);
+        } catch (Exception e) {
+            log.error("Errors during reporting to graphite, msg: {}" + e.getMessage());
+        }
+
         log.info("Start to report metrics to graphite server.");
     }
 
@@ -146,7 +152,13 @@
     public void notifyMetricsChange() {
         graphiteReporter.stop();
         graphiteReporter = buildReporter(graphite);
-        graphiteReporter.start(DEFAULT_REPORT_PERIOD, REPORT_TIME_UNIT);
+
+        try {
+            graphiteReporter.start(DEFAULT_REPORT_PERIOD, REPORT_TIME_UNIT);
+        } catch (Exception e) {
+            log.error("Errors during reporting to graphite, msg: {}" + e.getMessage());
+        }
+
         log.info("Metric registry has been changed, apply changes.");
     }
 
diff --git a/apps/influxdbmetrics/src/main/java/org/onosproject/influxdbmetrics/DefaultInfluxDbMetricsReporter.java b/apps/influxdbmetrics/src/main/java/org/onosproject/influxdbmetrics/DefaultInfluxDbMetricsReporter.java
index 7ff636c..a0dca3b 100644
--- a/apps/influxdbmetrics/src/main/java/org/onosproject/influxdbmetrics/DefaultInfluxDbMetricsReporter.java
+++ b/apps/influxdbmetrics/src/main/java/org/onosproject/influxdbmetrics/DefaultInfluxDbMetricsReporter.java
@@ -120,7 +120,12 @@
     public void startReport() {
         configSender();
         influxDbReporter = buildReporter(influxDbHttpSender);
-        influxDbReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+
+        try {
+            influxDbReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+        } catch (Exception e) {
+            log.error("Errors during reporting to InfluxDB, msg: {}" + e.getMessage());
+        }
         log.info("Start to report metrics to influxDB.");
     }
 
@@ -142,7 +147,13 @@
     public void notifyMetricsChange() {
         influxDbReporter.stop();
         influxDbReporter = buildReporter(influxDbHttpSender);
-        influxDbReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+
+        try {
+            influxDbReporter.start(REPORT_PERIOD, REPORT_TIME_UNIT);
+        } catch (Exception e) {
+            log.error("Errors during reporting to InfluxDB, msg: {}" + e.getMessage());
+        }
+
         log.info("Metric registry has been changed, apply changes.");
     }
 
