From 49ea4e9f392059021e0e8006f138f070e01975ea Mon Sep 17 00:00:00 2001 From: aaron jheng Date: Tue, 6 Sep 2016 15:37:46 +0800 Subject: [PATCH] [Docker Plugin] add server hostname for each docker measurements (#1599) * add server hostname for each docker measurements * update CHANGELOG * move feature to v1.1 * tweak docker_engine_host tag --- CHANGELOG.md | 1 + plugins/inputs/docker/docker.go | 15 +++++++++------ plugins/inputs/docker/docker_test.go | 7 +++++-- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f295a2028..ed7a62a38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ - [#1539](https://github.com/influxdata/telegraf/pull/1539): Added capability to send metrics through Http API for OpenTSDB. - [#1471](https://github.com/influxdata/telegraf/pull/1471): iptables input plugin. - [#1542](https://github.com/influxdata/telegraf/pull/1542): Add filestack webhook plugin. +- [#1599](https://github.com/influxdata/telegraf/pull/1599): Add server hostname for each docker measurements. ### Bugfixes diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index e3876bd64..06c39d179 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -28,7 +28,8 @@ type Docker struct { PerDevice bool `toml:"perdevice"` Total bool `toml:"total"` - client DockerClient + client DockerClient + engine_host string } // DockerClient interface, useful for testing @@ -147,6 +148,7 @@ func (d *Docker) gatherInfo(acc telegraf.Accumulator) error { if err != nil { return err } + d.engine_host = info.Name fields := map[string]interface{}{ "n_cpus": info.NCPU, @@ -159,11 +161,11 @@ func (d *Docker) gatherInfo(acc telegraf.Accumulator) error { // Add metrics acc.AddFields("docker", fields, - nil, + map[string]string{"engine_host": d.engine_host}, now) acc.AddFields("docker", map[string]interface{}{"memory_total": info.MemTotal}, - map[string]string{"unit": "bytes"}, + map[string]string{"unit": "bytes", "engine_host": d.engine_host}, now) // Get storage metrics for _, rawData := range info.DriverStatus { @@ -177,7 +179,7 @@ func (d *Docker) gatherInfo(acc telegraf.Accumulator) error { // pool blocksize acc.AddFields("docker", map[string]interface{}{"pool_blocksize": value}, - map[string]string{"unit": "bytes"}, + map[string]string{"unit": "bytes", "engine_host": d.engine_host}, now) } else if strings.HasPrefix(name, "data_space_") { // data space @@ -192,13 +194,13 @@ func (d *Docker) gatherInfo(acc telegraf.Accumulator) error { if len(dataFields) > 0 { acc.AddFields("docker_data", dataFields, - map[string]string{"unit": "bytes"}, + map[string]string{"unit": "bytes", "engine_host": d.engine_host}, now) } if len(metadataFields) > 0 { acc.AddFields("docker_metadata", metadataFields, - map[string]string{"unit": "bytes"}, + map[string]string{"unit": "bytes", "engine_host": d.engine_host}, now) } return nil @@ -225,6 +227,7 @@ func (d *Docker) gatherContainer( imageVersion = imageParts[1] } tags := map[string]string{ + "engine_host": d.engine_host, "container_name": cname, "container_image": imageName, "container_version": imageVersion, diff --git a/plugins/inputs/docker/docker_test.go b/plugins/inputs/docker/docker_test.go index 9f2e97f73..e1a0a7d2e 100644 --- a/plugins/inputs/docker/docker_test.go +++ b/plugins/inputs/docker/docker_test.go @@ -400,7 +400,7 @@ func TestDockerGatherInfo(t *testing.T) { "n_images": int(199), "n_goroutines": int(39), }, - map[string]string{}, + map[string]string{"engine_host": "absol"}, ) acc.AssertContainsTaggedFields(t, @@ -411,7 +411,8 @@ func TestDockerGatherInfo(t *testing.T) { "available": int64(36530000000), }, map[string]string{ - "unit": "bytes", + "unit": "bytes", + "engine_host": "absol", }, ) acc.AssertContainsTaggedFields(t, @@ -425,6 +426,7 @@ func TestDockerGatherInfo(t *testing.T) { "container_image": "quay.io/coreos/etcd", "cpu": "cpu3", "container_version": "v2.2.2", + "engine_host": "absol", }, ) acc.AssertContainsTaggedFields(t, @@ -467,6 +469,7 @@ func TestDockerGatherInfo(t *testing.T) { "container_id": "b7dfbb9478a6ae55e237d4d74f8bbb753f0817192b5081334dc78476296e2173", }, map[string]string{ + "engine_host": "absol", "container_name": "etcd2", "container_image": "quay.io/coreos/etcd", "container_version": "v2.2.2",