]> arthur.barton.de Git - netdata.git/commitdiff
use docker binary if exists, fallback on docker api if exists
authorTit Petric <tit.petric@monotek.net>
Fri, 6 May 2016 11:45:42 +0000 (13:45 +0200)
committerTit Petric <tit.petric@monotek.net>
Fri, 6 May 2016 11:45:42 +0000 (13:45 +0200)
plugins.d/cgroup-name.sh

index 4bb963dd885d2cbd93c1ee31392fe32a1a54be6c..8ce64b3d7718368a9dea1d2abdb220c07dc95064 100755 (executable)
@@ -25,6 +25,24 @@ if [ -f "${CONFIG}" ]
 #      echo >&2 "${0}: configuration file '${CONFIG}' is not available."
 fi
 
+function get_name_classic {
+       DOCKERID=$1
+       echo >&2 "Running command: docker ps --filter=id=\"${DOCKERID}\" --format=\"{{.Names}}\""
+       NAME="$( docker ps --filter=id="${DOCKERID}" --format="{{.Names}}" )"
+}
+
+function get_name_api {
+       DOCKERID=$1
+       if [ ! -S "/var/run/docker.sock" ]
+               then
+               echo >&2 "Can't find /var/run/docker.sock"
+               return
+       fi
+       echo >&2 "Running API command: /containers/${DOCKERID}/json"
+       JSON=$(echo -e "GET /containers/${DOCKERID}/json HTTP/1.0\r\n" | nc -U /var/run/docker.sock | egrep '^{.*')
+       NAME=$(echo $JSON | jq -r .Name,.Config.Hostname | grep -v null | head -n1 | sed 's|^/||')
+}
+
 if [ -z "${NAME}" ]
        then
        if [[ "${CGROUP}" =~ ^.*docker[-/\.][a-fA-F0-9]+[-\.]?.*$ ]]
@@ -33,8 +51,12 @@ if [ -z "${NAME}" ]
 
                if [ ! -z "${DOCKERID}" -a \( ${#DOCKERID} -eq 64 -o ${#DOCKERID} -eq 12 \) ]
                        then
-                       echo >&2 "Running command: docker ps --filter=id=\"${DOCKERID}\" --format=\"{{.Names}}\""
-                       NAME="$( docker ps --filter=id="${DOCKERID}" --format="{{.Names}}" )"
+                       if hash docker 2>/dev/null
+                               then
+                               get_name_classic $DOCKERID
+                       else
+                               get_name_api $DOCKERID
+                       fi
                        if [ -z "${NAME}" ]
                                then
                                echo >&2 "Cannot find the name of docker container '${DOCKERID}'"