Last active
November 13, 2024 18:11
-
-
Save ekristen/11254304 to your computer and use it in GitHub Desktop.
Bash Script for Nagios to Check Status of Docker Container
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Author: Erik Kristensen | |
# Email: [email protected] | |
# License: MIT | |
# Nagios Usage: check_nrpe!check_docker_container!_container_id_ | |
# Usage: ./check_docker_container.sh _container_id_ | |
# | |
# Depending on your docker configuration, root might be required. If your nrpe user has rights | |
# to talk to the docker daemon, then root is not required. This is why root privileges are not | |
# checked. | |
# | |
# The script checks if a container is running. | |
# OK - running | |
# WARNING - restarting | |
# CRITICAL - stopped | |
# UNKNOWN - does not exist | |
# | |
# CHANGELOG - March 20, 2017 | |
# - Removes Ghost State Check, Checks for Restarting State, Properly finds the Networking IP addresses | |
# - Returns unknown (exit code 3) if docker binary is missing, unable to talk to the daemon, or if container id is missing | |
CONTAINER=$1 | |
if [ "x${CONTAINER}" == "x" ]; then | |
echo "UNKNOWN - Container ID or Friendly Name Required" | |
exit 3 | |
fi | |
if [ "x$(which docker)" == "x" ]; then | |
echo "UNKNOWN - Missing docker binary" | |
exit 3 | |
fi | |
docker info > /dev/null 2>&1 | |
if [ $? -ne 0 ]; then | |
echo "UNKNOWN - Unable to talk to the docker daemon" | |
exit 3 | |
fi | |
RUNNING=$(docker inspect --format="{{.State.Running}}" $CONTAINER 2> /dev/null) | |
if [ $? -eq 1 ]; then | |
echo "UNKNOWN - $CONTAINER does not exist." | |
exit 3 | |
fi | |
if [ "$RUNNING" == "false" ]; then | |
echo "CRITICAL - $CONTAINER is not running." | |
exit 2 | |
fi | |
RESTARTING=$(docker inspect --format="{{.State.Restarting}}" $CONTAINER) | |
if [ "$RESTARTING" == "true" ]; then | |
echo "WARNING - $CONTAINER state is restarting." | |
exit 1 | |
fi | |
STARTED=$(docker inspect --format="{{.State.StartedAt}}" $CONTAINER) | |
NETWORK=$(docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" $CONTAINER) | |
echo "OK - $CONTAINER is running. IP: $NETWORK, StartedAt: $STARTED" |
I understand this might be outdated, I mean this thread not the script. Take a look here and it may help some of you who are having permission problems. Nagios and Docker Monitoring
Awesome script, thank you, just what I needed!
HI,
i need docker stat output with mail alert shell script. Please help on this
Thank you for sharing this!
Thank you Erik Kristensen
Thanks a lot, this is also working for PRTG (with some small changes in the output).
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
What I do wrong?
Remote
/usr/local/nagios/libexec/check_nrpe -H hostip -c check_docker -a asterisk
UNKNOWN - Missing docker binary
Local
/usr/lib64/nagios/plugins/check_docker asterisk
OK - asterisk is running. IP: 172.19.0.2, StartedAt: 2018-09-14T06:44:09.174409454Z