A Go Nagios check for Docker
A Nagios check to check some basic statistics reported by the Docker daemon. Additionally validates the absence of Ghost containers and may optionally be made to require the presence of a container running from a particular image tag.
check_dockeris written in Go and is multi-threaded to keep the drag time low on your Nagios server. It makes two API requests to the Docker daemon, one to
/infoand one to
/containers/jsonand processes the results, all simultaneously.
It is built using the the go_nagios framework.
If you would rather not build the binaries yourself, you can install compiled, statically-linked binaries for Linux or MacOSX. Simply download the tarball, extract it and use the binary of your choice.
go get github.com/newrelic/go_nagios go build
Usage of ./check_docker: -base-url="http://docker-server:2375": The Base URL for the Docker server -container-name="": The name of a container that must be running on the Docker server -warn-data-space=100: Warning threshold for Data Space -crit-data-space=100: Critical threshold for Data Space -warn-meta-space=100: Warning threshold for Metadata Space -crit-meta-space=100: Critical threshold for Metadata Space -image-id="": An image ID that must be running on the Docker server -tls-cert="": Path to TLS cert file -tls-key="": Path to TLS key file -tls-ca="": Path to TLS CA file
-base-url: Here you specify the base url of the docker server.
-container-name: Allows you to specify the name of a container that should be running on the server.
-image-id: You can specify an image tag that needs to be running on the server for certain cases where you have pegged a container to a server (e.g. each server has a Nagios monitoring container running to report on server health). Will not require any particular image if left off.
-(warn|crit)-(meta|data)-space: the thresholds at which the named Nagios status codes should be emitted. These are percentages, so
-crit-data-space=95would send a CRITICAL response when the threshold of 95% is crossed. Defaults are 100%.
Contributions are more than welcome. Bug reports with specific reproduction steps are great. If you have a code contribution you'd like to make, open a pull request with suggested code.
Pull requests should:
go testcan be run on 2 different platforms:
In Darwin(aufs), assuming you already setup Boot2Docker: ``` docker run -t -d --name namedcontainer busybox:latest export DOCKERIMAGE=busybox:latest export DOCKERCONTAINERNAME=named_container
cd $GOPATH/src/github.com/newrelic/check_docker go get ./... && go test ```
In Linux(devicemapper), you are running the tests inside vagrant: ``` cd $GOPATH/src/github.com/newrelic/check_docker vagrant up --provider virtualbox vagrant ssh
sudo docker run -t -d --name namedcontainer busybox:latest export DOCKERIMAGE=busybox:latest export DOCKERCONTAINERNAME=named_container
export GOPATH=/go cd $GOPATH/src/github.com/newrelic/check_docker go get ./... && go test ```
Copyright (c) 2014 New Relic, Inc. All rights reserved.