From 2482518826d56ff24c0f88ebce4930eae0efbd03 Mon Sep 17 00:00:00 2001 From: Olivier Mehani Date: Tue, 19 Jan 2021 12:54:41 +1100 Subject: [PATCH] [docker_] status: report and warn on unhealthy containers Signed-off-by: Olivier Mehani --- plugins/docker/docker_ | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/docker/docker_ b/plugins/docker/docker_ index 441a7cf9..ff4bd06c 100755 --- a/plugins/docker/docker_ +++ b/plugins/docker/docker_ @@ -189,6 +189,7 @@ def container_attributes(container, *args): def print_containers_status(client): running = [] + unhealthy = [] paused = [] created = [] restarting = [] @@ -197,7 +198,11 @@ def print_containers_status(client): dead = [] for container in client.all_containers: if container.status == 'running': - running.append(container) + state = client.api.inspect_container(container.name)['State'] + if state.get('Health', {}).get('Status') == 'unhealthy': + unhealthy.append(container) + else: + running.append(container) elif container.status == 'paused': paused.append(container) elif container.status == 'created': @@ -212,6 +217,8 @@ def print_containers_status(client): dead.append(container) print('running.value', len(running)) print('running.extinfo', ', '.join(container_summary(c) for c in running)) + print('unhealthy.value', len(unhealthy)) + print('unhealthy.extinfo', ', '.join(container_summary(c) for c in unhealthy)) print('paused.value', len(paused)) print('paused.extinfo', ', '.join(container_summary(c) for c in paused)) print('created.value', len(created)) @@ -353,6 +360,11 @@ def main(): "commands run in them with `docker container exec " "[--detach|--interactive,--privileged,--tty] `" ) + print("unhealthy.label UNHEALTHY") + print("unhealthy.draw AREASTACK") + print("unhealthy.warning 1") + print("unhealthy.info Unhealthy containers can be restarted with " + "`docker container restart `") print("paused.label PAUSED") print("paused.draw AREASTACK") print("paused.info Paused containers can be resumed with "