Skip to main content

Build Status Code Climate Test Coverage Downloads

check_docker

Nagios/NRPE compatible plugins for checking docker based services. Currently there are two nagios checks

  • check_docker which checks docker container health

  • check_swarm which checks health of swarm nodes and services

With check_docker can use it to check and alert on

  • memory consumption in absolute units (bytes, kb, mb, gb) and as a percentage (0-100%) of the container limit.

  • CPU usages as a percentage (0-100%) of container limit.

  • automatic restarts performed by the docker daemon

  • container status, i.e. is it running?

  • container health checks are passing?

  • uptime, i.e. is it able to stay running for a long enough time?

  • the presence of a container or containers matching specified names

  • image version, does the running image match that in the remote registry?

  • image age, when was the image built the last time?

With check_swarm you can alert

  • if a node is not joined to a docker swarm

  • if a service is running in a swarm

These checks can communicate with a local docker daemon socket file (default) or with local or remote docker daemons using secure and non-secure TCP connections.

These plugins require python 3. It is tested on 3.5 and greater but may work on older versions of 3.

Installation

With pip

pip3 install check_docker
--or--
pip install check_docker

With curl

curl -o /usr/local/bin/check_docker https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker/check_docker.py
curl -o /usr/local/bin/check_swarm https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker/check_swarm.py
chmod a+rx /usr/local/bin/check_docker /usr/local/bin/check_swarm

With wget

wget -O /usr/local/bin/check_docker https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker/check_docker.py
wget -O /usr/local/bin/check_swarm https://raw.githubusercontent.com/timdaman/check_docker/master/check_docker/check_swarm.py
chmod a+rx /usr/local/bin/check_docker /usr/local/bin/check_swarm

check_docker Usage

usage: check_docker.py [-h]
                       [--connection [/<path to>/docker.socket|<ip/host address>:<port>]
                       | --secure-connection [<ip/host address>:<port>]]
                       [--binary_units | --decimal_units] [--timeout TIMEOUT]
                       [--containers CONTAINERS [CONTAINERS ...]] [--present]
                       [--threads THREADS] [--cpu WARN:CRIT]
                       [--memory WARN:CRIT:UNITS] [--status STATUS] [--health]
                       [--uptime WARN:CRIT] [--image-age WARN:CRIT] [--version]
                       [--insecure-registries INSECURE_REGISTRIES [INSECURE_REGISTRIES ...]]
                       [--restarts WARN:CRIT] [--no-ok] [--no-performance] [-V]

Check docker containers.

optional arguments:
  -h, --help            show this help message and exit
  --connection [/<path to>/docker.socket|<ip/host address>:<port>]
                        Where to find docker daemon socket. (default:
                        /var/run/docker.sock)
  --secure-connection [<ip/host address>:<port>]
                        Where to find TLS protected docker daemon socket.
  --binary_units        Use a base of 1024 when doing calculations of KB, MB,
                        GB, & TB (This is default)
  --decimal_units       Use a base of 1000 when doing calculations of KB, MB,
                        GB, & TB
  --timeout TIMEOUT     Connection timeout in seconds. (default: 10.0)
  --containers CONTAINERS [CONTAINERS ...]
                        One or more RegEx that match the names of the
                        container(s) to check. If omitted all containers are
                        checked. (default: ['all'])
  --present             Modifies --containers so that each RegEx must match at
                        least one container.
  --threads THREADS     This + 1 is the maximum number of concurent
                        threads/network connections. (default: 10)
  --cpu WARN:CRIT       Check cpu usage percentage taking into account any
                        limits. Valid values are 0 - 100.
  --memory WARN:CRIT:UNITS
                        Check memory usage taking into account any limits.
                        Valid values for units are %,B,KB,MB,GB.
  --status STATUS       Desired container status (running, exited, etc).
  --health              Check container's health check status
  --uptime WARN:CRIT    Minimum container uptime in seconds. Use when
                        infrequent crashes are tolerated.
  --image-age WARN:CRIT Maximum image age in days.
  --version             Check if the running images are the same version as
                        those in the registry. Useful for finding stale
                        images. Does not support login.
  --insecure-registries INSECURE_REGISTRIES [INSECURE_REGISTRIES ...]
                        List of registries to connect to with http(no TLS).
                        Useful when using "--version" with images from
                        insecure registries.
  --restarts WARN:CRIT  Container restart thresholds.
  --no-ok               Make output terse suppressing OK messages. If all
                        checks are OK return a single OK.
  --no-performance      Suppress performance data. Reduces output when
                        performance data is not being used.
  -V                    show program's version number and exit

check_swarm Usage

usage: check_swarm.py [-h]
                      [--connection [/<path to>/docker.socket|<ip/host address>:<port>]
                      | --secure-connection [<ip/host address>:<port>]]
                      [--timeout TIMEOUT]
                      (--swarm | --service SERVICE [SERVICE ...] | --ignore_paused)
                      [-V]

Check docker swarm.

optional arguments:
  -h, --help            show this help message and exit
  --connection [/<path to>/docker.socket|<ip/host address>:<port>]
                        Where to find docker daemon socket. (default:
                        /var/run/docker.sock)
  --secure-connection [<ip/host address>:<port>]
                        Where to find TLS protected docker daemon socket.
  --timeout TIMEOUT     Connection timeout in seconds. (default: 10.0)
  --swarm               Check swarm status
  --service SERVICE [SERVICE ...]
                        One or more RegEx that match the names of the
                        services(s) to check.
  --ignore_paused       Don't require global services to be running on paused nodes
  -V                    show program's version number and exit

Gotchas

  • When using check_docker with older versions of docker (I have seen 1.4 and 1.5) –status only supports ‘running’, ‘restarting’, and ‘paused’.

  • When using check_docker, if no container is specified, all containers are checked. Some containers may return critcal status if the selected check(s) require a running container.

  • When using check_docker, –present cannot be used without –containers to indicate what to check the presence of.

Release files for check-docker 2.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for check-docker 2.2.2
File Size Uploaded
check_docker-2.2.2.tar.gz 28.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for check-docker 2.2.2
File Interpreter ABI Platform
check_docker-2.2.2-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 58.1 kB

Release files / check_docker-2.2.2.tar.gz

Download URL check_docker-2.2.2.tar.gz
Size 28.9 kB
Tags Source
SHA-256 checksum
How to use checksums
f58f943e712d2060a651328f5a92ae676266f376f5229aef7e95afa467e04523
BLAKE2b-256 checksum
How to use checksums
6eeb298a8df4fd2c6d77c41e312ca36c94e96e90c5d40fae10b2a576d0572905
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.0 CPython/2.7.16 Darwin/19.3.0

Release files / check_docker-2.2.2-py2.py3-none-any.whl

Download URL check_docker-2.2.2-py2.py3-none-any.whl
Size 29.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
e2b23b538a0924b8e1f450585d6990ea88c16767d0eb06242952f880c1167a5f
BLAKE2b-256 checksum
How to use checksums
9c8b3f6964866032f59503a9489766618fca4b6d7fb59d0cc0e0254983661922
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.0.0 CPython/2.7.16 Darwin/19.3.0

Release history Release notifications | RSS feed

This release

2.2.2 This release

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.0

2 release files

2.0.8

1 release file

2.0.7

1 release file

2.0.6

1 release file

2.0.5

1 release file

2.0.1

1 release file

2.0.0

1 release file

1.0.5

1 release file

1.0.4

1 release file

1.0.3

1 release file

1.0.1

1 release file

1.0.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page