From 13ac2a0fa16ad94910944bd2206adf9462861e19 Mon Sep 17 00:00:00 2001 From: "Hahn Axel (hahn)" <axel.hahn@unibe.ch> Date: Mon, 29 Jan 2024 08:30:32 +0100 Subject: [PATCH] detect reason for no output --- check_docker_stats | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/check_docker_stats b/check_docker_stats index 65b8a97..d215f2f 100755 --- a/check_docker_stats +++ b/check_docker_stats @@ -14,7 +14,7 @@ # https://docs.docker.com/engine/reference/commandline/docker/ # ---------------------------------------------------------------------- # 2024-01-26 v1.0 <axel.hahn@unibe.ch> init -# 2024-01-29 v1.1 <axel.hahn@unibe.ch> fix help +# 2024-01-29 v1.1 <axel.hahn@unibe.ch> fix help; detect reason for no output # ====================================================================== @@ -104,11 +104,11 @@ esac; done sLabel="Docker stats" case "$sMode" in - "cpu") sLabel="Docker CPU usage total of all containers: %s percent"; sUnit="1"; sumkey="CPUPerc"; sColumns=".Container, .${sumkey}, .Name" ;; - "mem") sLabel="Docker Memory max usage in most consuming container: %s percent"; sUnit="1"; maxkey="MemPerc"; sColumns=".Container, .${maxkey}, .MemUsage, .Name" ;; - "netio") sLabel="Docker Network I/O of all containers: %s MB IN .. %s MB OUT"; sUnit="M"; sumkey="NetIO"; f2=1; sColumns=".Container, .${sumkey}, .Name" ;; - "memtotal") sLabel="Docker Memory usage of all containers: %s MB"; sUnit="M"; sumkey="MemUsage";f2=0; sColumns=".Container, .${sumkey}, .Name" ;; - "blockio") sLabel="Docker Network I/O of all containers: %s MB IN .. %s MB OUT"; sUnit="M"; sumkey="BlockIO"; f2=1; sColumns=".Container, .${sumkey}, .Name" ;; + "cpu") sLabel="Docker CPU usage total of all containers: %s percent"; sUnit="1"; sumkey="CPUPerc"; sColumns=".Container, .${sumkey}, .Name" ;; + "mem") sLabel="Docker Memory max usage in most consuming container: %s percent"; sUnit="1"; maxkey="MemPerc"; sColumns=".Container, .${maxkey}, .MemUsage, .Name" ;; + "netio") sLabel="Docker Network I/O of all containers: %s MB IN .. %s MB OUT"; sUnit="M"; sumkey="NetIO"; f2=1; sColumns=".Container, .${sumkey}, .Name" ;; + "memtotal") sLabel="Docker Memory usage of all containers: %s MB"; sUnit="M"; sumkey="MemUsage"; f2=0; sColumns=".Container, .${sumkey}, .Name" ;; + "blockio") sLabel="Docker Block I/O of all containers: %s MB IN .. %s MB OUT"; sUnit="M"; sumkey="BlockIO"; f2=1; sColumns=".Container, .${sumkey}, .Name" ;; "all") ;; *) ph.setStatus critical echo "ERROR: mode [$sMode] is unknown. Use -h to get help." @@ -127,7 +127,22 @@ _detectDockerenv # --- get stats data data=$( sudo -n --preserve-env docker stats --no-stream --format '{{ json . }}' ) -_detectDockererror "$data" + +if [ -z "$data" ]; then + # zero output could mean: + # - connect to docker failed + # - no data because no container is running + # --> let's detect it... + infos=$( sudo -n --preserve-env docker system info --format '{{ json . }}' ) + _detectDockererror "$infos" + + typeset -i iCRunning; + iCRunning=$(_getString "$data" ".ContainersRunning" ) + if [ "$iCRunning" -eq "0" ]; then + ph.status "$sLabel >> Do data. No container is running" + ph.exit + fi +fi # --- checks to detect maximum -- GitLab