-
Star
(195)
You must be signed in to star a gist -
Fork
(66)
You must be signed in to fork a gist
-
-
Save ekristen/11254304 to your computer and use it in GitHub Desktop.
| #!/bin/bash | |
| # Author: Erik Kristensen | |
| # Email: erik@erikkristensen.com | |
| # 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" |
@wirtoo can you share the permission issue fix you used?
I'm running NRPE in a container. Do I need to add the nagios user to /etc/sudoers in the container itself?
From my Nagios host:
./check_nrpe -H 10.99.125.131 -c check_docker_container1
NRPE: Unable to read output
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
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).
Just solved my issue.
It was about permissions, sorry.
Great script, btw. Thanks.