Last active
April 23, 2019 02:53
-
-
Save samsulmaarif/954f451983842b90fc5990246bc9d41f to your computer and use it in GitHub Desktop.
This file contains hidden or 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 | |
CONTAINER_LIST=$(docker ps -aq) | |
for CONTAINER in $(echo $CONTAINER_LIST); do | |
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 | |
DHOST=$(docker inspect --format="{{.Config.Hostname}}" $CONTAINER) | |
STARTED=$(docker inspect --format="{{.State.StartedAt}}" $CONTAINER) | |
NETWORK=$(docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" $CONTAINER) | |
PIPELINE1=$(docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' $CONTAINER | grep CI_PROJECT_NAME) #project name | |
PIPELINE2=$(docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' $CONTAINER | grep CI_COMMIT_TITLE) #commit message | |
PIPELINE3=$(docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' $CONTAINER | grep GITLAB_USER_LOGIN) #gitlab user login | |
PIPELINE4=$(docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' $CONTAINER | grep CI_JOB_URL) #job URL | |
PIPELINE5=$(docker inspect --format='{{range .Config.Env}}{{println .}}{{end}}' $CONTAINER | grep CI_COMMIT_SHORT_SHA) #commit revision | |
echo "$CONTAINER is running. IP: $NETWORK, StartedAt: $STARTED" | |
printf "Container name: $DHOST\nProject name: $PIPELINE1\nCommit revision: $PIPELINE5\nCommit message: $PIPELINE2\nUser: $PIPELINE3\nJob URL: $PIPELINE4\n" | |
echo "OK - $CONTAINER is running. IP: $NETWORK, StartedAt: $STARTED" | |
done |
This file contains hidden or 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 | |
CONTAINER_LIST=$(docker ps -aq) | |
for CONTAINER in $(echo $CONTAINER_LIST); do | |
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) | |
DHOST=$(docker inspect --format="{{.Config.Hostname}}" $CONTAINER) | |
NETWORK=$(docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" $CONTAINER) | |
PIPELINE1=$(docker inspect --format='{{ index (index .Config.Env) 38 }}' $CONTAINER) #project name | |
PIPELINE2=$(docker inspect --format='{{ index (index .Config.Env) 52 }}' $CONTAINER) #commit message | |
PIPELINE3=$(docker inspect --format='{{ index (index .Config.Env) 60 }}' $CONTAINER) #gitlab user login | |
PIPELINE4=$(docker inspect --format='{{ index (index .Config.Env) 7 }}' $CONTAINER) #job URL | |
PIPELINE5=$(docker inspect --format='{{ index (index .Config.Env) 26 }}' $CONTAINER) #commit revision | |
echo "$CONTAINER is running. IP: $NETWORK, StartedAt: $STARTED" | |
printf "Container: $DHOST\nProject name: $PIPELINE1\nCommit revision: $PIPELINE5\nCommit message: $PIPELINE2\nUser: $PIPELINE3\nJob URL: $PIPELINE4\n" | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment