In a previous blog we showed how easy it is to send Docker Counters to Foglight, the next natural step is to alert when something goes wrong.
A reminder our script was called DockerMonitor.sh and the lines sending data to Foglight were
echo "TABLE DockerData" #Creating a table called DockerData
echo "START_SAMPLE_PERIOD" # Starting the sample period
echo "DockerContainers = $(docker ps -aq $1 | wc -l)"
echo "DockerRunningContainers = $(docker ps -q $1 | wc -l)"
echo "DockerCrashedContainers = $(docker ps -a | grep -v -F 'Exited (0)' | grep -c -F 'Exited (')"
echo "DockerAllImages = $(docker images -aq $1 | wc -l)"
echo "DockerImages = $(docker images -q $1 | wc -l)"
echo "DockerDanglingImages = $(docker images --filter "dangling=true" -q --no-trunc $1 | wc -l)"
echo "END_SAMPLE_PERIOD" # Ending the sample period
echo "END_TABLE" #End sending data to table
We can now create a rule, lets call it DockerCrashedContainers and choose the right topology object (typically <script-name>_Agent_Table_<Table Name>, in our case DockerMonitor_Agent_Table_DockerData.
We then create severity level variables with the number of crashed containers and the name of the Docker Host
And end with setting the condition as well as the alert message using the variables we defined.
The result is an alarm message indicating what Docker host has crashed containers and how many crashed containers it has.