-
Notifications
You must be signed in to change notification settings - Fork 506
/
check_apache_drill_cluster_mismatched_versions.py
executable file
·77 lines (61 loc) · 2.23 KB
/
check_apache_drill_cluster_mismatched_versions.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
#!/usr/bin/env python3
# vim:ts=4:sts=4:sw=4:et
#
# Author: Hari Sekhon
# Date: 2018-05-04 18:34:48 +0100 (Fri, 04 May 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 # pylint: disable=line-too-long
#
# https://www.linkedin.com/in/HariSekhon
#
"""
Nagios Plugin to check an Apache Drill cluster for any mismatched versions via the Rest API of any drill node
Recommend to combine this with the Drill HAProxy config from the haproxy/ directory
to run this via any node in the cluster (or combine with find_active_apache_drill.py, see README)
Tested on Apache Drill 1.10, 1.11, 1.12, 1.13, 1.14, 1.15
(API endpoint is not available in Apache Drill versions < 1.10)
"""
# Doesn't work on 0.7, the API endpoint isn't found
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
libdir = os.path.abspath(os.path.join(os.path.dirname(__file__), 'pylib'))
sys.path.append(libdir)
try:
# pylint: disable=wrong-import-position
from harisekhon import RestNagiosPlugin
except ImportError:
print(traceback.format_exc(), end='')
sys.exit(4)
__author__ = 'Hari Sekhon'
__version__ = '0.1'
# pylint: disable=too-few-public-methods
class CheckApacheDrillClusterMismatchedVersions(RestNagiosPlugin):
def __init__(self):
# Python 2.x
super(CheckApacheDrillClusterMismatchedVersions, self).__init__()
# Python 3.x
# super().__init__()
self.name = 'Apache Drill'
self.path = '/cluster.json'
self.default_port = 8047
self.json = True
self.auth = False
self.msg = 'Apache Drill message not defined'
def parse_json(self, json_data):
mismatched_versions = json_data['mismatchedVersions']
if mismatched_versions:
self.warning()
else:
mismatched_versions = None
self.msg = 'Apache Drill mismatched versions = {}'.format(mismatched_versions)
if __name__ == '__main__':
CheckApacheDrillClusterMismatchedVersions().main()