forked from HariSekhon/Nagios-Plugins
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcheck_docker_networks.py
executable file
·82 lines (64 loc) · 2.27 KB
/
check_docker_networks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/usr/bin/env python
# coding=utf-8
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: 2018-03-05 19:10:02 +0000 (Mon, 05 Mar 2018)
#
# https://github.com/harisekhon/nagios-plugins
#
# License: see accompanying Hari Sekhon LICENSE file
#
# If you're using my code you're welcome to connect with me on LinkedIn
# and optionally send me feedback to help steer this or other code I publish
#
# https://www.linkedin.com/in/harisekhon
#
"""
Nagios Plugin to check the number of Docker networks via the Docker API
Optional thresholds can be applied and perfdata is output for graphing the number of networks over time
This is less efficient than the other adjacent docker plugins as it must retrieve a list
which is an O(n) operation as there is no counter
Supports TLS with similar options to official 'docker' command
Tested on Docker 18.02
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import os
import sys
import traceback
srcdir = os.path.abspath(os.path.dirname(__file__))
libdir = os.path.join(srcdir, 'pylib')
sys.path.append(libdir)
try:
# pylint: disable=wrong-import-position
from harisekhon.utils import log
from harisekhon import DockerNagiosPlugin
except ImportError as _:
print(traceback.format_exc(), end='')
sys.exit(4)
__author__ = 'Hari Sekhon'
__version__ = '0.1'
class CheckDockerNetworks(DockerNagiosPlugin):
def __init__(self):
# Python 2.x
super(CheckDockerNetworks, self).__init__()
# Python 3.x
# super().__init__()
self.msg = 'Docker msg not defined yet'
def add_options(self):
super(CheckDockerNetworks, self).add_options()
self.add_thresholds()
def process_options(self):
super(CheckDockerNetworks, self).process_options()
self.validate_thresholds(integer=True, positive=True, optional=True)
def check(self, client):
log.info('running Docker info')
networks = len(client.networks.list())
self.msg = 'Docker networks = {}'.format(networks)
self.check_thresholds(networks)
self.msg += ' | docker_networks={}{}'.format(networks, self.get_perf_thresholds())
if __name__ == '__main__':
CheckDockerNetworks().main()