diff --git a/modules/docker/README.md b/modules/docker/README.md index 539f08215..6d4d54efc 100644 --- a/modules/docker/README.md +++ b/modules/docker/README.md @@ -26,15 +26,15 @@ Labels per scope: - global: no labels. - container: container_name, image. -| Metric | Scope | Dimensions | Units | -|--------------------------------|:---------:|:------------------------------------------------------------:|:----------:| -| containers_state | global | running, paused, stopped | containers | -| containers_health_status | global | healthy, unhealthy, starting, no_healthcheck | containers | -| images | global | active, dangling | images | -| images_size | global | size | bytes | -| container_state | container | running, paused, exited, created, restarting, removing, dead | state | -| container_health_status | container | healthy, unhealthy, starting, no_healthcheck | status | -| container_writeable_layer_size | container | writeable_layer | size | +| Metric | Scope | Dimensions | Units | +|--------------------------------|:---------:|:-------------------------------------------------------------------:|:----------:| +| containers_state | global | running, paused, stopped | containers | +| containers_health_status | global | healthy, unhealthy, not_running_unhealthy, starting, no_healthcheck | containers | +| images | global | active, dangling | images | +| images_size | global | size | bytes | +| container_state | container | running, paused, exited, created, restarting, removing, dead | state | +| container_health_status | container | healthy, unhealthy, not_running_unhealthy, starting, no_healthcheck | status | +| container_writeable_layer_size | container | writeable_layer | size | ## Configuration diff --git a/modules/docker/charts.go b/modules/docker/charts.go index 54210f738..051c0f405 100644 --- a/modules/docker/charts.go +++ b/modules/docker/charts.go @@ -54,6 +54,7 @@ var ( Dims: module.Dims{ {ID: "containers_health_status_healthy", Name: "healthy"}, {ID: "containers_health_status_unhealthy", Name: "unhealthy"}, + {ID: "containers_health_status_not_running_unhealthy", Name: "not_running_unhealthy"}, {ID: "containers_health_status_starting", Name: "starting"}, {ID: "containers_health_status_none", Name: "no_healthcheck"}, }, @@ -121,6 +122,7 @@ var ( Dims: module.Dims{ {ID: "container_%s_health_status_healthy", Name: "healthy"}, {ID: "container_%s_health_status_unhealthy", Name: "unhealthy"}, + {ID: "container_%s_health_status_not_running_unhealthy", Name: "not_running_unhealthy"}, {ID: "container_%s_health_status_starting", Name: "starting"}, {ID: "container_%s_health_status_none", Name: "no_healthcheck"}, }, diff --git a/modules/docker/collect.go b/modules/docker/collect.go index 94b29c3d3..ceda40671 100644 --- a/modules/docker/collect.go +++ b/modules/docker/collect.go @@ -127,10 +127,25 @@ func (d *Docker) collectContainers(mx map[string]int64) error { seen := make(map[string]bool) + for _, s := range containerHealthStatuses { + mx["containers_health_status_"+s] = 0 + } + mx["containers_health_status_not_running_unhealthy"] = 0 + for status, containers := range containerSet { - mx["containers_health_status_"+status] = int64(len(containers)) + if status != types.Unhealthy { + mx["containers_health_status_"+status] = int64(len(containers)) + } for _, cntr := range containers { + if status == types.Unhealthy { + if cntr.State == "running" { + mx["containers_health_status_"+status] += 1 + } else { + mx["containers_health_status_not_running_unhealthy"] += 1 + } + } + if len(cntr.Names) == 0 { continue } @@ -149,11 +164,16 @@ func (d *Docker) collectContainers(mx map[string]int64) error { for _, s := range containerHealthStatuses { mx[px+"health_status_"+s] = 0 } + mx[px+"health_status_not_running_unhealthy"] = 0 for _, s := range containerStates { mx[px+"state_"+s] = 0 } - mx[px+"health_status_"+status] = 1 + if status == types.Unhealthy && cntr.State != "running" { + mx[px+"health_status_not_running_unhealthy"] += 1 + } else { + mx[px+"health_status_"+status] = 1 + } mx[px+"state_"+cntr.State] = 1 mx[px+"size_rw"] = cntr.SizeRw mx[px+"size_root_fs"] = cntr.SizeRootFs diff --git a/modules/docker/docker_test.go b/modules/docker/docker_test.go index f3545b64a..0a3711b4d 100644 --- a/modules/docker/docker_test.go +++ b/modules/docker/docker_test.go @@ -157,120 +157,241 @@ func TestDocker_Collect(t *testing.T) { return prepareCaseSuccess() }, expected: map[string]int64{ - "container_container1_health_status_healthy": 1, - "container_container1_health_status_none": 0, - "container_container1_health_status_starting": 0, - "container_container1_health_status_unhealthy": 0, - "container_container1_size_root_fs": 0, - "container_container1_size_rw": 0, - "container_container1_state_created": 1, - "container_container1_state_dead": 0, - "container_container1_state_exited": 0, - "container_container1_state_paused": 0, - "container_container1_state_removing": 0, - "container_container1_state_restarting": 0, - "container_container1_state_running": 0, - "container_container2_health_status_healthy": 1, - "container_container2_health_status_none": 0, - "container_container2_health_status_starting": 0, - "container_container2_health_status_unhealthy": 0, - "container_container2_size_root_fs": 0, - "container_container2_size_rw": 0, - "container_container2_state_created": 0, - "container_container2_state_dead": 0, - "container_container2_state_exited": 0, - "container_container2_state_paused": 0, - "container_container2_state_removing": 0, - "container_container2_state_restarting": 0, - "container_container2_state_running": 1, - "container_container3_health_status_healthy": 0, - "container_container3_health_status_none": 0, - "container_container3_health_status_starting": 0, - "container_container3_health_status_unhealthy": 1, - "container_container3_size_root_fs": 0, - "container_container3_size_rw": 0, - "container_container3_state_created": 0, - "container_container3_state_dead": 0, - "container_container3_state_exited": 0, - "container_container3_state_paused": 1, - "container_container3_state_removing": 0, - "container_container3_state_restarting": 0, - "container_container3_state_running": 0, - "container_container4_health_status_healthy": 0, - "container_container4_health_status_none": 0, - "container_container4_health_status_starting": 0, - "container_container4_health_status_unhealthy": 1, - "container_container4_size_root_fs": 0, - "container_container4_size_rw": 0, - "container_container4_state_created": 0, - "container_container4_state_dead": 0, - "container_container4_state_exited": 0, - "container_container4_state_paused": 0, - "container_container4_state_removing": 0, - "container_container4_state_restarting": 1, - "container_container4_state_running": 0, - "container_container5_health_status_healthy": 0, - "container_container5_health_status_none": 0, - "container_container5_health_status_starting": 1, - "container_container5_health_status_unhealthy": 0, - "container_container5_size_root_fs": 0, - "container_container5_size_rw": 0, - "container_container5_state_created": 0, - "container_container5_state_dead": 0, - "container_container5_state_exited": 0, - "container_container5_state_paused": 0, - "container_container5_state_removing": 1, - "container_container5_state_restarting": 0, - "container_container5_state_running": 0, - "container_container6_health_status_healthy": 0, - "container_container6_health_status_none": 0, - "container_container6_health_status_starting": 1, - "container_container6_health_status_unhealthy": 0, - "container_container6_size_root_fs": 0, - "container_container6_size_rw": 0, - "container_container6_state_created": 0, - "container_container6_state_dead": 0, - "container_container6_state_exited": 1, - "container_container6_state_paused": 0, - "container_container6_state_removing": 0, - "container_container6_state_restarting": 0, - "container_container6_state_running": 0, - "container_container7_health_status_healthy": 0, - "container_container7_health_status_none": 1, - "container_container7_health_status_starting": 0, - "container_container7_health_status_unhealthy": 0, - "container_container7_size_root_fs": 0, - "container_container7_size_rw": 0, - "container_container7_state_created": 0, - "container_container7_state_dead": 1, - "container_container7_state_exited": 0, - "container_container7_state_paused": 0, - "container_container7_state_removing": 0, - "container_container7_state_restarting": 0, - "container_container7_state_running": 0, - "container_container8_health_status_healthy": 0, - "container_container8_health_status_none": 1, - "container_container8_health_status_starting": 0, - "container_container8_health_status_unhealthy": 0, - "container_container8_size_root_fs": 0, - "container_container8_size_rw": 0, - "container_container8_state_created": 0, - "container_container8_state_dead": 1, - "container_container8_state_exited": 0, - "container_container8_state_paused": 0, - "container_container8_state_removing": 0, - "container_container8_state_restarting": 0, - "container_container8_state_running": 0, - "containers_health_status_healthy": 2, - "containers_health_status_none": 2, - "containers_health_status_starting": 2, - "containers_health_status_unhealthy": 2, - "containers_state_exited": 6, - "containers_state_paused": 5, - "containers_state_running": 4, - "images_active": 1, - "images_dangling": 1, - "images_size": 300, + "container_container10_health_status_healthy": 0, + "container_container10_health_status_none": 0, + "container_container10_health_status_not_running_unhealthy": 1, + "container_container10_health_status_starting": 0, + "container_container10_health_status_unhealthy": 0, + "container_container10_size_root_fs": 0, + "container_container10_size_rw": 0, + "container_container10_state_created": 0, + "container_container10_state_dead": 1, + "container_container10_state_exited": 0, + "container_container10_state_paused": 0, + "container_container10_state_removing": 0, + "container_container10_state_restarting": 0, + "container_container10_state_running": 0, + "container_container11_health_status_healthy": 0, + "container_container11_health_status_none": 0, + "container_container11_health_status_not_running_unhealthy": 0, + "container_container11_health_status_starting": 1, + "container_container11_health_status_unhealthy": 0, + "container_container11_size_root_fs": 0, + "container_container11_size_rw": 0, + "container_container11_state_created": 0, + "container_container11_state_dead": 0, + "container_container11_state_exited": 0, + "container_container11_state_paused": 0, + "container_container11_state_removing": 1, + "container_container11_state_restarting": 0, + "container_container11_state_running": 0, + "container_container12_health_status_healthy": 0, + "container_container12_health_status_none": 0, + "container_container12_health_status_not_running_unhealthy": 0, + "container_container12_health_status_starting": 1, + "container_container12_health_status_unhealthy": 0, + "container_container12_size_root_fs": 0, + "container_container12_size_rw": 0, + "container_container12_state_created": 0, + "container_container12_state_dead": 0, + "container_container12_state_exited": 1, + "container_container12_state_paused": 0, + "container_container12_state_removing": 0, + "container_container12_state_restarting": 0, + "container_container12_state_running": 0, + "container_container13_health_status_healthy": 0, + "container_container13_health_status_none": 0, + "container_container13_health_status_not_running_unhealthy": 0, + "container_container13_health_status_starting": 1, + "container_container13_health_status_unhealthy": 0, + "container_container13_size_root_fs": 0, + "container_container13_size_rw": 0, + "container_container13_state_created": 0, + "container_container13_state_dead": 0, + "container_container13_state_exited": 1, + "container_container13_state_paused": 0, + "container_container13_state_removing": 0, + "container_container13_state_restarting": 0, + "container_container13_state_running": 0, + "container_container14_health_status_healthy": 0, + "container_container14_health_status_none": 1, + "container_container14_health_status_not_running_unhealthy": 0, + "container_container14_health_status_starting": 0, + "container_container14_health_status_unhealthy": 0, + "container_container14_size_root_fs": 0, + "container_container14_size_rw": 0, + "container_container14_state_created": 0, + "container_container14_state_dead": 1, + "container_container14_state_exited": 0, + "container_container14_state_paused": 0, + "container_container14_state_removing": 0, + "container_container14_state_restarting": 0, + "container_container14_state_running": 0, + "container_container15_health_status_healthy": 0, + "container_container15_health_status_none": 1, + "container_container15_health_status_not_running_unhealthy": 0, + "container_container15_health_status_starting": 0, + "container_container15_health_status_unhealthy": 0, + "container_container15_size_root_fs": 0, + "container_container15_size_rw": 0, + "container_container15_state_created": 0, + "container_container15_state_dead": 1, + "container_container15_state_exited": 0, + "container_container15_state_paused": 0, + "container_container15_state_removing": 0, + "container_container15_state_restarting": 0, + "container_container15_state_running": 0, + "container_container16_health_status_healthy": 0, + "container_container16_health_status_none": 1, + "container_container16_health_status_not_running_unhealthy": 0, + "container_container16_health_status_starting": 0, + "container_container16_health_status_unhealthy": 0, + "container_container16_size_root_fs": 0, + "container_container16_size_rw": 0, + "container_container16_state_created": 0, + "container_container16_state_dead": 1, + "container_container16_state_exited": 0, + "container_container16_state_paused": 0, + "container_container16_state_removing": 0, + "container_container16_state_restarting": 0, + "container_container16_state_running": 0, + "container_container1_health_status_healthy": 1, + "container_container1_health_status_none": 0, + "container_container1_health_status_not_running_unhealthy": 0, + "container_container1_health_status_starting": 0, + "container_container1_health_status_unhealthy": 0, + "container_container1_size_root_fs": 0, + "container_container1_size_rw": 0, + "container_container1_state_created": 1, + "container_container1_state_dead": 0, + "container_container1_state_exited": 0, + "container_container1_state_paused": 0, + "container_container1_state_removing": 0, + "container_container1_state_restarting": 0, + "container_container1_state_running": 0, + "container_container2_health_status_healthy": 1, + "container_container2_health_status_none": 0, + "container_container2_health_status_not_running_unhealthy": 0, + "container_container2_health_status_starting": 0, + "container_container2_health_status_unhealthy": 0, + "container_container2_size_root_fs": 0, + "container_container2_size_rw": 0, + "container_container2_state_created": 0, + "container_container2_state_dead": 0, + "container_container2_state_exited": 0, + "container_container2_state_paused": 0, + "container_container2_state_removing": 0, + "container_container2_state_restarting": 0, + "container_container2_state_running": 1, + "container_container3_health_status_healthy": 1, + "container_container3_health_status_none": 0, + "container_container3_health_status_not_running_unhealthy": 0, + "container_container3_health_status_starting": 0, + "container_container3_health_status_unhealthy": 0, + "container_container3_size_root_fs": 0, + "container_container3_size_rw": 0, + "container_container3_state_created": 0, + "container_container3_state_dead": 0, + "container_container3_state_exited": 0, + "container_container3_state_paused": 0, + "container_container3_state_removing": 0, + "container_container3_state_restarting": 0, + "container_container3_state_running": 1, + "container_container4_health_status_healthy": 0, + "container_container4_health_status_none": 0, + "container_container4_health_status_not_running_unhealthy": 1, + "container_container4_health_status_starting": 0, + "container_container4_health_status_unhealthy": 0, + "container_container4_size_root_fs": 0, + "container_container4_size_rw": 0, + "container_container4_state_created": 1, + "container_container4_state_dead": 0, + "container_container4_state_exited": 0, + "container_container4_state_paused": 0, + "container_container4_state_removing": 0, + "container_container4_state_restarting": 0, + "container_container4_state_running": 0, + "container_container5_health_status_healthy": 0, + "container_container5_health_status_none": 0, + "container_container5_health_status_not_running_unhealthy": 0, + "container_container5_health_status_starting": 0, + "container_container5_health_status_unhealthy": 1, + "container_container5_size_root_fs": 0, + "container_container5_size_rw": 0, + "container_container5_state_created": 0, + "container_container5_state_dead": 0, + "container_container5_state_exited": 0, + "container_container5_state_paused": 0, + "container_container5_state_removing": 0, + "container_container5_state_restarting": 0, + "container_container5_state_running": 1, + "container_container6_health_status_healthy": 0, + "container_container6_health_status_none": 0, + "container_container6_health_status_not_running_unhealthy": 1, + "container_container6_health_status_starting": 0, + "container_container6_health_status_unhealthy": 0, + "container_container6_size_root_fs": 0, + "container_container6_size_rw": 0, + "container_container6_state_created": 0, + "container_container6_state_dead": 0, + "container_container6_state_exited": 0, + "container_container6_state_paused": 1, + "container_container6_state_removing": 0, + "container_container6_state_restarting": 0, + "container_container6_state_running": 0, + "container_container7_health_status_healthy": 0, + "container_container7_health_status_none": 0, + "container_container7_health_status_not_running_unhealthy": 1, + "container_container7_health_status_starting": 0, + "container_container7_health_status_unhealthy": 0, + "container_container7_size_root_fs": 0, + "container_container7_size_rw": 0, + "container_container7_state_created": 0, + "container_container7_state_dead": 0, + "container_container7_state_exited": 0, + "container_container7_state_paused": 0, + "container_container7_state_removing": 0, + "container_container7_state_restarting": 1, + "container_container7_state_running": 0, + "container_container8_health_status_healthy": 0, + "container_container8_health_status_none": 0, + "container_container8_health_status_not_running_unhealthy": 1, + "container_container8_health_status_starting": 0, + "container_container8_health_status_unhealthy": 0, + "container_container8_size_root_fs": 0, + "container_container8_size_rw": 0, + "container_container8_state_created": 0, + "container_container8_state_dead": 0, + "container_container8_state_exited": 0, + "container_container8_state_paused": 0, + "container_container8_state_removing": 1, + "container_container8_state_restarting": 0, + "container_container8_state_running": 0, + "container_container9_health_status_healthy": 0, + "container_container9_health_status_none": 0, + "container_container9_health_status_not_running_unhealthy": 1, + "container_container9_health_status_starting": 0, + "container_container9_health_status_unhealthy": 0, + "container_container9_size_root_fs": 0, + "container_container9_size_rw": 0, + "container_container9_state_created": 0, + "container_container9_state_dead": 0, + "container_container9_state_exited": 1, + "container_container9_state_paused": 0, + "container_container9_state_removing": 0, + "container_container9_state_restarting": 0, + "container_container9_state_running": 0, + "containers_health_status_healthy": 3, + "containers_health_status_none": 3, + "containers_health_status_not_running_unhealthy": 6, + "containers_health_status_starting": 3, + "containers_health_status_unhealthy": 1, + "containers_state_exited": 6, + "containers_state_paused": 5, + "containers_state_running": 4, + "images_active": 1, + "images_dangling": 1, + "images_size": 300, }, }, "case success without container size": { @@ -278,120 +399,241 @@ func TestDocker_Collect(t *testing.T) { return prepareCaseSuccessWithoutContainerSize() }, expected: map[string]int64{ - "container_container1_health_status_healthy": 1, - "container_container1_health_status_none": 0, - "container_container1_health_status_starting": 0, - "container_container1_health_status_unhealthy": 0, - "container_container1_size_root_fs": 0, - "container_container1_size_rw": 0, - "container_container1_state_created": 1, - "container_container1_state_dead": 0, - "container_container1_state_exited": 0, - "container_container1_state_paused": 0, - "container_container1_state_removing": 0, - "container_container1_state_restarting": 0, - "container_container1_state_running": 0, - "container_container2_health_status_healthy": 1, - "container_container2_health_status_none": 0, - "container_container2_health_status_starting": 0, - "container_container2_health_status_unhealthy": 0, - "container_container2_size_root_fs": 0, - "container_container2_size_rw": 0, - "container_container2_state_created": 0, - "container_container2_state_dead": 0, - "container_container2_state_exited": 0, - "container_container2_state_paused": 0, - "container_container2_state_removing": 0, - "container_container2_state_restarting": 0, - "container_container2_state_running": 1, - "container_container3_health_status_healthy": 0, - "container_container3_health_status_none": 0, - "container_container3_health_status_starting": 0, - "container_container3_health_status_unhealthy": 1, - "container_container3_size_root_fs": 0, - "container_container3_size_rw": 0, - "container_container3_state_created": 0, - "container_container3_state_dead": 0, - "container_container3_state_exited": 0, - "container_container3_state_paused": 1, - "container_container3_state_removing": 0, - "container_container3_state_restarting": 0, - "container_container3_state_running": 0, - "container_container4_health_status_healthy": 0, - "container_container4_health_status_none": 0, - "container_container4_health_status_starting": 0, - "container_container4_health_status_unhealthy": 1, - "container_container4_size_root_fs": 0, - "container_container4_size_rw": 0, - "container_container4_state_created": 0, - "container_container4_state_dead": 0, - "container_container4_state_exited": 0, - "container_container4_state_paused": 0, - "container_container4_state_removing": 0, - "container_container4_state_restarting": 1, - "container_container4_state_running": 0, - "container_container5_health_status_healthy": 0, - "container_container5_health_status_none": 0, - "container_container5_health_status_starting": 1, - "container_container5_health_status_unhealthy": 0, - "container_container5_size_root_fs": 0, - "container_container5_size_rw": 0, - "container_container5_state_created": 0, - "container_container5_state_dead": 0, - "container_container5_state_exited": 0, - "container_container5_state_paused": 0, - "container_container5_state_removing": 1, - "container_container5_state_restarting": 0, - "container_container5_state_running": 0, - "container_container6_health_status_healthy": 0, - "container_container6_health_status_none": 0, - "container_container6_health_status_starting": 1, - "container_container6_health_status_unhealthy": 0, - "container_container6_size_root_fs": 0, - "container_container6_size_rw": 0, - "container_container6_state_created": 0, - "container_container6_state_dead": 0, - "container_container6_state_exited": 1, - "container_container6_state_paused": 0, - "container_container6_state_removing": 0, - "container_container6_state_restarting": 0, - "container_container6_state_running": 0, - "container_container7_health_status_healthy": 0, - "container_container7_health_status_none": 1, - "container_container7_health_status_starting": 0, - "container_container7_health_status_unhealthy": 0, - "container_container7_size_root_fs": 0, - "container_container7_size_rw": 0, - "container_container7_state_created": 0, - "container_container7_state_dead": 1, - "container_container7_state_exited": 0, - "container_container7_state_paused": 0, - "container_container7_state_removing": 0, - "container_container7_state_restarting": 0, - "container_container7_state_running": 0, - "container_container8_health_status_healthy": 0, - "container_container8_health_status_none": 1, - "container_container8_health_status_starting": 0, - "container_container8_health_status_unhealthy": 0, - "container_container8_size_root_fs": 0, - "container_container8_size_rw": 0, - "container_container8_state_created": 0, - "container_container8_state_dead": 1, - "container_container8_state_exited": 0, - "container_container8_state_paused": 0, - "container_container8_state_removing": 0, - "container_container8_state_restarting": 0, - "container_container8_state_running": 0, - "containers_health_status_healthy": 2, - "containers_health_status_none": 2, - "containers_health_status_starting": 2, - "containers_health_status_unhealthy": 2, - "containers_state_exited": 6, - "containers_state_paused": 5, - "containers_state_running": 4, - "images_active": 1, - "images_dangling": 1, - "images_size": 300, + "container_container10_health_status_healthy": 0, + "container_container10_health_status_none": 0, + "container_container10_health_status_not_running_unhealthy": 1, + "container_container10_health_status_starting": 0, + "container_container10_health_status_unhealthy": 0, + "container_container10_size_root_fs": 0, + "container_container10_size_rw": 0, + "container_container10_state_created": 0, + "container_container10_state_dead": 1, + "container_container10_state_exited": 0, + "container_container10_state_paused": 0, + "container_container10_state_removing": 0, + "container_container10_state_restarting": 0, + "container_container10_state_running": 0, + "container_container11_health_status_healthy": 0, + "container_container11_health_status_none": 0, + "container_container11_health_status_not_running_unhealthy": 0, + "container_container11_health_status_starting": 1, + "container_container11_health_status_unhealthy": 0, + "container_container11_size_root_fs": 0, + "container_container11_size_rw": 0, + "container_container11_state_created": 0, + "container_container11_state_dead": 0, + "container_container11_state_exited": 0, + "container_container11_state_paused": 0, + "container_container11_state_removing": 1, + "container_container11_state_restarting": 0, + "container_container11_state_running": 0, + "container_container12_health_status_healthy": 0, + "container_container12_health_status_none": 0, + "container_container12_health_status_not_running_unhealthy": 0, + "container_container12_health_status_starting": 1, + "container_container12_health_status_unhealthy": 0, + "container_container12_size_root_fs": 0, + "container_container12_size_rw": 0, + "container_container12_state_created": 0, + "container_container12_state_dead": 0, + "container_container12_state_exited": 1, + "container_container12_state_paused": 0, + "container_container12_state_removing": 0, + "container_container12_state_restarting": 0, + "container_container12_state_running": 0, + "container_container13_health_status_healthy": 0, + "container_container13_health_status_none": 0, + "container_container13_health_status_not_running_unhealthy": 0, + "container_container13_health_status_starting": 1, + "container_container13_health_status_unhealthy": 0, + "container_container13_size_root_fs": 0, + "container_container13_size_rw": 0, + "container_container13_state_created": 0, + "container_container13_state_dead": 0, + "container_container13_state_exited": 1, + "container_container13_state_paused": 0, + "container_container13_state_removing": 0, + "container_container13_state_restarting": 0, + "container_container13_state_running": 0, + "container_container14_health_status_healthy": 0, + "container_container14_health_status_none": 1, + "container_container14_health_status_not_running_unhealthy": 0, + "container_container14_health_status_starting": 0, + "container_container14_health_status_unhealthy": 0, + "container_container14_size_root_fs": 0, + "container_container14_size_rw": 0, + "container_container14_state_created": 0, + "container_container14_state_dead": 1, + "container_container14_state_exited": 0, + "container_container14_state_paused": 0, + "container_container14_state_removing": 0, + "container_container14_state_restarting": 0, + "container_container14_state_running": 0, + "container_container15_health_status_healthy": 0, + "container_container15_health_status_none": 1, + "container_container15_health_status_not_running_unhealthy": 0, + "container_container15_health_status_starting": 0, + "container_container15_health_status_unhealthy": 0, + "container_container15_size_root_fs": 0, + "container_container15_size_rw": 0, + "container_container15_state_created": 0, + "container_container15_state_dead": 1, + "container_container15_state_exited": 0, + "container_container15_state_paused": 0, + "container_container15_state_removing": 0, + "container_container15_state_restarting": 0, + "container_container15_state_running": 0, + "container_container16_health_status_healthy": 0, + "container_container16_health_status_none": 1, + "container_container16_health_status_not_running_unhealthy": 0, + "container_container16_health_status_starting": 0, + "container_container16_health_status_unhealthy": 0, + "container_container16_size_root_fs": 0, + "container_container16_size_rw": 0, + "container_container16_state_created": 0, + "container_container16_state_dead": 1, + "container_container16_state_exited": 0, + "container_container16_state_paused": 0, + "container_container16_state_removing": 0, + "container_container16_state_restarting": 0, + "container_container16_state_running": 0, + "container_container1_health_status_healthy": 1, + "container_container1_health_status_none": 0, + "container_container1_health_status_not_running_unhealthy": 0, + "container_container1_health_status_starting": 0, + "container_container1_health_status_unhealthy": 0, + "container_container1_size_root_fs": 0, + "container_container1_size_rw": 0, + "container_container1_state_created": 1, + "container_container1_state_dead": 0, + "container_container1_state_exited": 0, + "container_container1_state_paused": 0, + "container_container1_state_removing": 0, + "container_container1_state_restarting": 0, + "container_container1_state_running": 0, + "container_container2_health_status_healthy": 1, + "container_container2_health_status_none": 0, + "container_container2_health_status_not_running_unhealthy": 0, + "container_container2_health_status_starting": 0, + "container_container2_health_status_unhealthy": 0, + "container_container2_size_root_fs": 0, + "container_container2_size_rw": 0, + "container_container2_state_created": 0, + "container_container2_state_dead": 0, + "container_container2_state_exited": 0, + "container_container2_state_paused": 0, + "container_container2_state_removing": 0, + "container_container2_state_restarting": 0, + "container_container2_state_running": 1, + "container_container3_health_status_healthy": 1, + "container_container3_health_status_none": 0, + "container_container3_health_status_not_running_unhealthy": 0, + "container_container3_health_status_starting": 0, + "container_container3_health_status_unhealthy": 0, + "container_container3_size_root_fs": 0, + "container_container3_size_rw": 0, + "container_container3_state_created": 0, + "container_container3_state_dead": 0, + "container_container3_state_exited": 0, + "container_container3_state_paused": 0, + "container_container3_state_removing": 0, + "container_container3_state_restarting": 0, + "container_container3_state_running": 1, + "container_container4_health_status_healthy": 0, + "container_container4_health_status_none": 0, + "container_container4_health_status_not_running_unhealthy": 1, + "container_container4_health_status_starting": 0, + "container_container4_health_status_unhealthy": 0, + "container_container4_size_root_fs": 0, + "container_container4_size_rw": 0, + "container_container4_state_created": 1, + "container_container4_state_dead": 0, + "container_container4_state_exited": 0, + "container_container4_state_paused": 0, + "container_container4_state_removing": 0, + "container_container4_state_restarting": 0, + "container_container4_state_running": 0, + "container_container5_health_status_healthy": 0, + "container_container5_health_status_none": 0, + "container_container5_health_status_not_running_unhealthy": 0, + "container_container5_health_status_starting": 0, + "container_container5_health_status_unhealthy": 1, + "container_container5_size_root_fs": 0, + "container_container5_size_rw": 0, + "container_container5_state_created": 0, + "container_container5_state_dead": 0, + "container_container5_state_exited": 0, + "container_container5_state_paused": 0, + "container_container5_state_removing": 0, + "container_container5_state_restarting": 0, + "container_container5_state_running": 1, + "container_container6_health_status_healthy": 0, + "container_container6_health_status_none": 0, + "container_container6_health_status_not_running_unhealthy": 1, + "container_container6_health_status_starting": 0, + "container_container6_health_status_unhealthy": 0, + "container_container6_size_root_fs": 0, + "container_container6_size_rw": 0, + "container_container6_state_created": 0, + "container_container6_state_dead": 0, + "container_container6_state_exited": 0, + "container_container6_state_paused": 1, + "container_container6_state_removing": 0, + "container_container6_state_restarting": 0, + "container_container6_state_running": 0, + "container_container7_health_status_healthy": 0, + "container_container7_health_status_none": 0, + "container_container7_health_status_not_running_unhealthy": 1, + "container_container7_health_status_starting": 0, + "container_container7_health_status_unhealthy": 0, + "container_container7_size_root_fs": 0, + "container_container7_size_rw": 0, + "container_container7_state_created": 0, + "container_container7_state_dead": 0, + "container_container7_state_exited": 0, + "container_container7_state_paused": 0, + "container_container7_state_removing": 0, + "container_container7_state_restarting": 1, + "container_container7_state_running": 0, + "container_container8_health_status_healthy": 0, + "container_container8_health_status_none": 0, + "container_container8_health_status_not_running_unhealthy": 1, + "container_container8_health_status_starting": 0, + "container_container8_health_status_unhealthy": 0, + "container_container8_size_root_fs": 0, + "container_container8_size_rw": 0, + "container_container8_state_created": 0, + "container_container8_state_dead": 0, + "container_container8_state_exited": 0, + "container_container8_state_paused": 0, + "container_container8_state_removing": 1, + "container_container8_state_restarting": 0, + "container_container8_state_running": 0, + "container_container9_health_status_healthy": 0, + "container_container9_health_status_none": 0, + "container_container9_health_status_not_running_unhealthy": 1, + "container_container9_health_status_starting": 0, + "container_container9_health_status_unhealthy": 0, + "container_container9_size_root_fs": 0, + "container_container9_size_rw": 0, + "container_container9_state_created": 0, + "container_container9_state_dead": 0, + "container_container9_state_exited": 1, + "container_container9_state_paused": 0, + "container_container9_state_removing": 0, + "container_container9_state_restarting": 0, + "container_container9_state_running": 0, + "containers_health_status_healthy": 3, + "containers_health_status_none": 3, + "containers_health_status_not_running_unhealthy": 6, + "containers_health_status_starting": 3, + "containers_health_status_unhealthy": 1, + "containers_state_exited": 6, + "containers_state_paused": 5, + "containers_state_running": 4, + "images_active": 1, + "images_dangling": 1, + "images_size": 300, }, }, "fail on case err on Info()": { @@ -522,22 +764,30 @@ func (m *mockClient) ContainerList(_ context.Context, opts types.ContainerListOp case types.Healthy: containers = []types.Container{ {Names: []string{"container1"}, State: "created", Image: "example/example:v1"}, - {Names: []string{"container2"}, State: "running", Image: "example/example:v2"}, + {Names: []string{"container2"}, State: "running", Image: "example/example:v1"}, + {Names: []string{"container3"}, State: "running", Image: "example/example:v1"}, } case types.Unhealthy: containers = []types.Container{ - {Names: []string{"container3"}, State: "paused", Image: "example/example:v3"}, - {Names: []string{"container4"}, State: "restarting", Image: "example/example:v4"}, + {Names: []string{"container4"}, State: "created", Image: "example/example:v2"}, + {Names: []string{"container5"}, State: "running", Image: "example/example:v2"}, + {Names: []string{"container6"}, State: "paused", Image: "example/example:v2"}, + {Names: []string{"container7"}, State: "restarting", Image: "example/example:v2"}, + {Names: []string{"container8"}, State: "removing", Image: "example/example:v2"}, + {Names: []string{"container9"}, State: "exited", Image: "example/example:v2"}, + {Names: []string{"container10"}, State: "dead", Image: "example/example:v2"}, } case types.Starting: containers = []types.Container{ - {Names: []string{"container5"}, State: "removing", Image: "example/example:v5"}, - {Names: []string{"container6"}, State: "exited", Image: "example/example:v6"}, + {Names: []string{"container11"}, State: "removing", Image: "example/example:v3"}, + {Names: []string{"container12"}, State: "exited", Image: "example/example:v3"}, + {Names: []string{"container13"}, State: "exited", Image: "example/example:v3"}, } case types.NoHealthcheck: containers = []types.Container{ - {Names: []string{"container7"}, State: "dead", Image: "example/example:v7"}, - {Names: []string{"container8"}, State: "dead", Image: "example/example:v8"}, + {Names: []string{"container14"}, State: "dead", Image: "example/example:v4"}, + {Names: []string{"container15"}, State: "dead", Image: "example/example:v4"}, + {Names: []string{"container16"}, State: "dead", Image: "example/example:v4"}, } }