#!/bin/bash # ABOUT docker for zabbix # author mikedmorto 2021 year export LC_ALL="" export LANG="en_US.UTF-8" version="0.4" DOCKER="/usr/bin/docker" JSON="" #### PARAMETRS #### METRIC="$1" ITEM="$2" case "$METRIC" in discovery) JSON="{ \"data\":[" DCLIST="" # get all docker containers list of id DCLIST=`${DOCKER} ps -a | tail -n +2 | awk '{print $1}'` # show all docker id for DOCKERID in ${DCLIST}; do JSON=${JSON}" {\"{#DOCKERID}\":\"${DOCKERID}\"}," done JSON=${JSON::-1} JSON=${JSON}"]}" echo ${JSON} exit 0 ;; # get container status docker.container_running) RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {$count=0;} { if ($1 == IT && $7 == "Up") count += 1 } END {if (count > 1) print ""; else if (count == 1) print 1; else if (count == 0) print 0} '` echo ${RET} exit 0 ;; #get cpu usage docker.cpu) RET=`${DOCKER} stats --no-stream | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {$count=0;} {if ($1 == IT) count += 1} END {if (count > 1) print ""; else if (count == 1) print $3; else if (count == 0) print 0} '` echo ${RET} exit 0 ;; #get ram usage docker.ram) RET=`${DOCKER} stats --no-stream | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {$count=0;} {if ($1 == IT) count += 1} END {if (count > 1) print ""; else if (count == 1) print ($4*1024); else if (count == 0) print 0} '` echo ${RET} exit 0 ;; script.version) echo ${version} exit 0 ;; help) echo "please use these parametrs { discovery docker.container_running docker.cpu docker.ram script.version }" ;; *) echo "" ;; esac