diff --git a/plugins/inputs/docker/docker.go b/plugins/inputs/docker/docker.go index 0f5471eb1..942c79d7d 100644 --- a/plugins/inputs/docker/docker.go +++ b/plugins/inputs/docker/docker.go @@ -309,6 +309,18 @@ func (d *Docker) gatherSwarmInfo(acc telegraf.Accumulator) error { tags["service_mode"] = "global" fields["tasks_running"] = running[service.ID] fields["tasks_desired"] = tasksNoShutdown[service.ID] + } else if service.Spec.Mode.ReplicatedJob != nil { + tags["service_mode"] = "replicated_job" + fields["tasks_running"] = running[service.ID] + if service.Spec.Mode.ReplicatedJob.MaxConcurrent != nil { + fields["max_concurrent"] = *service.Spec.Mode.ReplicatedJob.MaxConcurrent + } + if service.Spec.Mode.ReplicatedJob.TotalCompletions != nil { + fields["total_completions"] = *service.Spec.Mode.ReplicatedJob.TotalCompletions + } + } else if service.Spec.Mode.GlobalJob != nil { + tags["service_mode"] = "global_job" + fields["tasks_running"] = running[service.ID] } else { d.Log.Error("Unknown replica mode") } diff --git a/plugins/inputs/docker/docker_test.go b/plugins/inputs/docker/docker_test.go index 600227e5b..24d2c5946 100644 --- a/plugins/inputs/docker/docker_test.go +++ b/plugins/inputs/docker/docker_test.go @@ -1102,6 +1102,32 @@ func TestDockerGatherSwarmInfo(t *testing.T) { "service_mode": "global", }, ) + + acc.AssertContainsTaggedFields(t, + "docker_swarm", + map[string]interface{}{ + "tasks_running": int(0), + "max_concurrent": uint64(2), + "total_completions": uint64(2), + }, + map[string]string{ + "service_id": "rfmqydhe8cluzl9hayyrhw5ga", + "service_name": "test3", + "service_mode": "replicated_job", + }, + ) + + acc.AssertContainsTaggedFields(t, + "docker_swarm", + map[string]interface{}{ + "tasks_running": int(0), + }, + map[string]string{ + "service_id": "mp50lo68vqgkory4e26ts8f9d", + "service_name": "test4", + "service_mode": "global_job", + }, + ) } func TestContainerStateFilter(t *testing.T) { diff --git a/plugins/inputs/docker/docker_testdata.go b/plugins/inputs/docker/docker_testdata.go index 57be5a8cb..e0b5cb6f6 100644 --- a/plugins/inputs/docker/docker_testdata.go +++ b/plugins/inputs/docker/docker_testdata.go @@ -196,6 +196,31 @@ var serviceList = []swarm.Service{ }, }, }, + { + ID: "rfmqydhe8cluzl9hayyrhw5ga", + Spec: swarm.ServiceSpec{ + Annotations: swarm.Annotations{ + Name: "test3", + }, + Mode: swarm.ServiceMode{ + ReplicatedJob: &swarm.ReplicatedJob{ + MaxConcurrent: &two, + TotalCompletions: &two, + }, + }, + }, + }, + { + ID: "mp50lo68vqgkory4e26ts8f9d", + Spec: swarm.ServiceSpec{ + Annotations: swarm.Annotations{ + Name: "test4", + }, + Mode: swarm.ServiceMode{ + GlobalJob: &swarm.GlobalJob{}, + }, + }, + }, } var taskList = []swarm.Task{