minitor/scripts/docker_healthcheck.sh
Ian Fijolek 5783190f58 Add new scripts for checking status of Docker services
These are bundled within the Docker image to make it possible to alert
on status of other Docker containers.

Will potentially include other sets of "standard" scripts for
convenience sake.
2019-05-31 16:43:14 -07:00

48 lines
1.2 KiB
Bash
Executable File

#! /bin/bash
#################
# docker_healthcheck.sh
#
# Returns the results of a Docker Healthcheck for a container
#################
container_name=$1
# Returns caintainer ID for a given container name
function get_container_id {
local container_name=$1
curl --unix-socket /var/run/docker.sock 'http://localhost/containers/json?all=1' 2>/dev/null \
| jq -r ".[] | {Id, Name: .Names[]} | select(.Name == \"/${container_name}\") | .Id"
}
# Returns container JSON
function inspect_container {
local container_id=$1
curl --unix-socket /var/run/docker.sock http://localhost/containers/$container_id/json 2>/dev/null
}
if [ -z "$container_name" ]; then
echo "Usage: $0 container_name"
echo "Will return results of healthcheck for continer with provided name"
exit 1
fi
container_id=$(get_container_id $container_name)
if [ -z "$container_id" ]; then
echo "ERROR: Could not find container with name: $container_name"
exit 1
fi
health=$(inspect_container $container_id | jq -r '.State.Health.Status')
case $health in
"null")
echo "No healthcheck results"
;;
"starting|healthy")
echo "Status: '$health'"
;;
*)
echo "Status: '$health'"
exit 1
esac