diff --git a/CHANGELOG.md b/CHANGELOG.md
index ba75be262f5b99ab7f85e254f3efba873699ec95..a652b38d767bea2e62ac5ab8c3ae939d9b204c4c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -24,6 +24,7 @@ for more details.
 only. Previously there was an undocumented behavior where filters would match
 based on _prefix_ in addition to globs. This means that a filter like
 `fielddrop = ["time_"]` will need to be changed to `fielddrop = ["time_*"]`
+- **datadog**: measurement and field names will no longer have `_` replaced by `.`
 - The following plugins have changed their tags to _not_ overwrite the host tag:
   - cassandra: `host -> cassandra_host`
   - disque: `host -> disque_host`
@@ -42,6 +43,7 @@ based on _prefix_ in addition to globs. This means that a filter like
 - [#921](https://github.com/influxdata/telegraf/pull/921): mqtt_consumer stops gathering metrics. Thanks @chaton78!
 - [#1013](https://github.com/influxdata/telegraf/pull/1013): Close dead riemann output connections. Thanks @echupriyanov!
 - [#1012](https://github.com/influxdata/telegraf/pull/1012): Set default tags in test accumulator.
+- [#1024](https://github.com/influxdata/telegraf/issues/1024): Don't replace `.` with `_` in datadog output.
 - [#1058](https://github.com/influxdata/telegraf/issues/1058): Fix possible leaky TCP connections in influxdb output.
 - [#1044](https://github.com/influxdata/telegraf/pull/1044): Fix SNMP OID possible collisions. Thanks @relip
 
diff --git a/plugins/outputs/datadog/datadog.go b/plugins/outputs/datadog/datadog.go
index 56fdc38e4091972ba08cad36a4c4461a721e95a5..0885687181c09a3cfbd3e669ebb51c786092b9d8 100644
--- a/plugins/outputs/datadog/datadog.go
+++ b/plugins/outputs/datadog/datadog.go
@@ -8,7 +8,6 @@ import (
 	"net/http"
 	"net/url"
 	"sort"
-	"strings"
 
 	"github.com/influxdata/telegraf"
 	"github.com/influxdata/telegraf/internal"
@@ -71,21 +70,22 @@ func (d *Datadog) Write(metrics []telegraf.Metric) error {
 	metricCounter := 0
 
 	for _, m := range metrics {
-		mname := strings.Replace(m.Name(), "_", ".", -1)
 		if dogMs, err := buildMetrics(m); err == nil {
 			for fieldName, dogM := range dogMs {
 				// name of the datadog measurement
 				var dname string
 				if fieldName == "value" {
 					// adding .value seems redundant here
-					dname = mname
+					dname = m.Name()
 				} else {
-					dname = mname + "." + strings.Replace(fieldName, "_", ".", -1)
+					dname = m.Name() + "." + fieldName
 				}
+				var host string
+				host, _ = m.Tags()["host"]
 				metric := &Metric{
 					Metric: dname,
 					Tags:   buildTags(m.Tags()),
-					Host:   m.Tags()["host"],
+					Host:   host,
 				}
 				metric.Points[0] = dogM
 				tempSeries = append(tempSeries, metric)