From d31f2dd713b7771c6480b414e168d8419a5a901e Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Sat, 9 Jun 2018 18:35:48 +0530 Subject: [PATCH 1/8] per docker running status support --- plugins/inputs/docker/docker.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index a59b9f7fa955c..71307829e0211 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -435,6 +435,22 @@ func (d *Docker) gatherContainer( } } } + if info.State != nil { + statefields := map[string]interface{}{ + "status": info.State.Status, + "running": info.State.Running, + "paused": info.State.Paused, + "restarting": info.State.Restarting, + "oomkilled": info.State.OOMKilled, + "dead": info.State.Dead, + "pid": info.State.Pid, + "exitcode": info.State.ExitCode, + "error": info.State.Error, + "startedat": info.State.StartedAt, + "finishedat": info.State.FinishedAt, + } + acc.AddFields("docker_container_status", statefields, tags, time.Now()) + } if info.State.Health != nil { healthfields := map[string]interface{}{ From e532e4a5924335a336150a082824b6d0e3ff7189 Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Sat, 9 Jun 2018 18:50:05 +0530 Subject: [PATCH 2/8] formatting fixes --- plugins/inputs/docker/docker.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index 71307829e0211..66ca1eb00f044 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -437,16 +437,16 @@ func (d *Docker) gatherContainer( } if info.State != nil { statefields := map[string]interface{}{ - "status": info.State.Status, - "running": info.State.Running, - "paused": info.State.Paused, + "status": info.State.Status, + "running": info.State.Running, + "paused": info.State.Paused, "restarting": info.State.Restarting, - "oomkilled": info.State.OOMKilled, - "dead": info.State.Dead, - "pid": info.State.Pid, - "exitcode": info.State.ExitCode, - "error": info.State.Error, - "startedat": info.State.StartedAt, + "oomkilled": info.State.OOMKilled, + "dead": info.State.Dead, + "pid": info.State.Pid, + "exitcode": info.State.ExitCode, + "error": info.State.Error, + "startedat": info.State.StartedAt, "finishedat": info.State.FinishedAt, } acc.AddFields("docker_container_status", statefields, tags, time.Now()) From 58c16a125449cfd7b0608d89b9471a902c7e4380 Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Wed, 13 Jun 2018 11:03:04 +0530 Subject: [PATCH 3/8] removing unnecessary fields --- plugins/inputs/docker/docker.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index 66ca1eb00f044..1870e2a08d26f 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -438,14 +438,9 @@ func (d *Docker) gatherContainer( if info.State != nil { statefields := map[string]interface{}{ "status": info.State.Status, - "running": info.State.Running, - "paused": info.State.Paused, - "restarting": info.State.Restarting, "oomkilled": info.State.OOMKilled, - "dead": info.State.Dead, "pid": info.State.Pid, "exitcode": info.State.ExitCode, - "error": info.State.Error, "startedat": info.State.StartedAt, "finishedat": info.State.FinishedAt, } From e2c46b7fa6c5958f39ed7f2a6aee779058ef9888 Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Thu, 14 Jun 2018 11:55:02 +0530 Subject: [PATCH 4/8] container status as tag and edit start/finish ts --- plugins/inputs/docker/docker.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index 1870e2a08d26f..051e449567089 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -436,13 +436,13 @@ func (d *Docker) gatherContainer( } } if info.State != nil { + tags["container_status"] = info.State.Status statefields := map[string]interface{}{ - "status": info.State.Status, - "oomkilled": info.State.OOMKilled, - "pid": info.State.Pid, - "exitcode": info.State.ExitCode, - "startedat": info.State.StartedAt, - "finishedat": info.State.FinishedAt, + "oomkilled": info.State.OOMKilled, + "pid": info.State.Pid, + "exitcode": info.State.ExitCode, + "started_at": info.State.StartedAt, + "finished_at": info.State.FinishedAt, } acc.AddFields("docker_container_status", statefields, tags, time.Now()) } From c8d704b0498b0f05ee3afa3d442bf0192f45083b Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Thu, 14 Jun 2018 12:13:25 +0530 Subject: [PATCH 5/8] container status support for UT --- plugins/inputs/docker/docker_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/plugins/inputs/docker/docker_test.go b/plugins/inputs/docker/docker_test.go index 4b9d00c801bc0..d51c61c001dd8 100644 --- a/plugins/inputs/docker/docker_test.go +++ b/plugins/inputs/docker/docker_test.go @@ -653,6 +653,7 @@ func TestDockerGatherInfo(t *testing.T) { "label1": "test_value_1", "label2": "test_value_2", "server_version": "17.09.0-ce", + "container_status": "running", }, ) acc.AssertContainsTaggedFields(t, @@ -676,6 +677,7 @@ func TestDockerGatherInfo(t *testing.T) { "label1": "test_value_1", "label2": "test_value_2", "server_version": "17.09.0-ce", + "container_status": "running", }, ) } From 704f40037492c1a57e45d184f64e4b9795b78181 Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Fri, 15 Jun 2018 10:56:17 +0530 Subject: [PATCH 6/8] docker time fields as unixNano --- plugins/inputs/docker/docker.go | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index 051e449567089..aa1de7479a081 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -438,11 +438,17 @@ func (d *Docker) gatherContainer( if info.State != nil { tags["container_status"] = info.State.Status statefields := map[string]interface{}{ - "oomkilled": info.State.OOMKilled, - "pid": info.State.Pid, - "exitcode": info.State.ExitCode, - "started_at": info.State.StartedAt, - "finished_at": info.State.FinishedAt, + "oomkilled": info.State.OOMKilled, + "pid": info.State.Pid, + "exitcode": info.State.ExitCode, + } + container_time, err := time.Parse(time.RFC3339, info.State.StartedAt) + if err == nil && !container_time.IsZero() { + statefields["started_at"] = container_time.UnixNano() + } + container_time, err = time.Parse(time.RFC3339, info.State.FinishedAt) + if err == nil && !container_time.IsZero() { + statefields["finished_at"] = container_time.UnixNano() } acc.AddFields("docker_container_status", statefields, tags, time.Now()) } From 52337efabf3ade1e4396eb3f3279d32caf3307fc Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Fri, 15 Jun 2018 14:00:19 +0530 Subject: [PATCH 7/8] rollback docker test CI fix --- plugins/inputs/docker/docker_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/plugins/inputs/docker/docker_test.go b/plugins/inputs/docker/docker_test.go index d51c61c001dd8..4b9d00c801bc0 100644 --- a/plugins/inputs/docker/docker_test.go +++ b/plugins/inputs/docker/docker_test.go @@ -653,7 +653,6 @@ func TestDockerGatherInfo(t *testing.T) { "label1": "test_value_1", "label2": "test_value_2", "server_version": "17.09.0-ce", - "container_status": "running", }, ) acc.AssertContainsTaggedFields(t, @@ -677,7 +676,6 @@ func TestDockerGatherInfo(t *testing.T) { "label1": "test_value_1", "label2": "test_value_2", "server_version": "17.09.0-ce", - "container_status": "running", }, ) } From 735dabd6ba8bcfbcc3c0d70f2a1ff7867482b61a Mon Sep 17 00:00:00 2001 From: Prashanth Joseph Babu Date: Fri, 15 Jun 2018 15:43:24 +0530 Subject: [PATCH 8/8] fixing UT failure --- plugins/inputs/docker/docker_test.go | 2 ++ plugins/inputs/docker/docker_testdata.go | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/plugins/inputs/docker/docker_test.go b/plugins/inputs/docker/docker_test.go index 4b9d00c801bc0..d51c61c001dd8 100644 --- a/plugins/inputs/docker/docker_test.go +++ b/plugins/inputs/docker/docker_test.go @@ -653,6 +653,7 @@ func TestDockerGatherInfo(t *testing.T) { "label1": "test_value_1", "label2": "test_value_2", "server_version": "17.09.0-ce", + "container_status": "running", }, ) acc.AssertContainsTaggedFields(t, @@ -676,6 +677,7 @@ func TestDockerGatherInfo(t *testing.T) { "label1": "test_value_1", "label2": "test_value_2", "server_version": "17.09.0-ce", + "container_status": "running", }, ) } diff --git a/plugins/inputs/docker/docker_testdata.go b/plugins/inputs/docker/docker_testdata.go index 42a0b888fb54e..1168048a23331 100644 --- a/plugins/inputs/docker/docker_testdata.go +++ b/plugins/inputs/docker/docker_testdata.go @@ -484,6 +484,12 @@ var containerInspect = types.ContainerJSON{ FailingStreak: 1, Status: "Unhealthy", }, + Status: "running", + OOMKilled: false, + Pid: 1234, + ExitCode: 0, + StartedAt: "2018-06-14T05:48:53.266176036Z", + FinishedAt: "0001-01-01T00:00:00Z", }, }, }