148 lines
3.1 KiB
Bash
Executable File
148 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# ABOUT docker for zabbix
|
|
# author mikedmorto 2021 year
|
|
export LC_ALL=""
|
|
export LANG="en_US.UTF-8"
|
|
version="0.6"
|
|
DOCKER="/usr/bin/docker"
|
|
|
|
|
|
TMP=""
|
|
PATCH="/tmp/zabbix.docker.tmp"
|
|
JSON=""
|
|
#### PARAMETRS ####
|
|
METRIC="$1"
|
|
ITEM="$2"
|
|
ERROR=0
|
|
|
|
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) count += 1} END {if (count == 1) print 1; else print ""} '`
|
|
TMP=`${DOCKER} ps | tail -n +2`
|
|
if [ "$RET" == "1" ]
|
|
then RET=`echo $TMP | awk -v IT="${ITEM}" ' BEGIN {count=0} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else if (count > 1) print ""; else if (count == 0) print 0} '`
|
|
fi
|
|
echo ${RET}
|
|
|
|
|
|
exit 0
|
|
;;
|
|
|
|
|
|
#get cpu usage
|
|
docker.cpu)
|
|
|
|
RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {count=0;} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else print ""} '`
|
|
TMP=`${DOCKER} stats --no-stream | tail -n +2`
|
|
if [ "$RET" == "1" ]
|
|
then RET=`echo $TMP | awk -v IT="${ITEM}" ' BEGIN {count=0} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else if (count == 0) print 0; else print ""}'`
|
|
if [ "$RET" == "1" ]
|
|
then RET=`echo $TMP | awk -v IT="${ITEM}" '{if ($1 == IT) print $3}'`
|
|
fi
|
|
fi
|
|
|
|
echo ${RET} | awk -v FS="%" '{print $1}'
|
|
|
|
|
|
exit 0
|
|
;;
|
|
|
|
|
|
#get ram usage
|
|
docker.ram)
|
|
|
|
RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {count=0;} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else print ""} '`
|
|
TMP=`${DOCKER} stats --no-stream | tail -n +2`
|
|
if [ "$RET" == "1" ]
|
|
then RET=`echo $TMP | awk -v IT="${ITEM}" ' BEGIN {count=0} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else if (count == 0) print 0; else print ""}'`
|
|
if [ "$RET" == "1" ]
|
|
then RET=`echo $TMP | awk -v IT="${ITEM}" '{if ($1 == IT) print int($4*1048576)}'`
|
|
fi
|
|
fi
|
|
|
|
echo ${RET}
|
|
|
|
exit 0
|
|
|
|
|
|
;;
|
|
|
|
#get container name
|
|
docker.name)
|
|
|
|
RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {count = 0} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else print ""} '`
|
|
|
|
if [ "$RET" == "1" ]
|
|
then RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" '{if ($1 == IT) print $12}'`
|
|
fi
|
|
echo ${RET}
|
|
|
|
exit 0
|
|
|
|
|
|
;;
|
|
|
|
#get container image
|
|
docker.image)
|
|
|
|
RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" ' BEGIN {count = 0} {if ($1 == IT) count += 1} END {if (count == 1) print 1; else print ""} '`
|
|
|
|
if [ "$RET" == "1" ]
|
|
then RET=`${DOCKER} ps -a | tail -n +2 | awk -v IT="${ITEM}" '{if ($1 == IT) print $2}'`
|
|
fi
|
|
echo ${RET}
|
|
|
|
exit 0
|
|
|
|
;;
|
|
|
|
|
|
#get script version
|
|
script.version)
|
|
|
|
echo ${version}
|
|
|
|
exit 0
|
|
;;
|
|
|
|
help)
|
|
echo "please use these parametrs
|
|
{
|
|
discovery
|
|
docker.container_running
|
|
docker.cpu
|
|
docker.ram
|
|
docker.name
|
|
docker.image
|
|
script.version
|
|
}"
|
|
;;
|
|
*)
|
|
echo ""
|
|
;;
|
|
esac
|