-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathquickbooks_php_connected.py
63 lines (50 loc) · 2.5 KB
/
quickbooks_php_connected.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
import urlparse
import requests
from checks import AgentCheck
from util import headers
from config import _is_affirmative
class QuickBooksConnected(AgentCheck):
def __init__(self, name, init_config, agentConfig, instances=None):
AgentCheck.__init__(self, name, init_config, agentConfig, instances)
self.assumed_url = {}
def check(self, instance):
if 'quickbooks_diagnostics_url' not in instance:
raise Exception("Missing 'quickbooks_diagnostics_url' in config")
url = self.assumed_url.get(instance['quickbooks_diagnostics_url'], instance['quickbooks_diagnostics_url'])
connect_timeout = int(instance.get('connect_timeout', 5))
receive_timeout = int(instance.get('receive_timeout', 15))
disable_ssl_validation = _is_affirmative(instance.get('disable_ssl_validation', False))
parsed_url = urlparse.urlparse(url)
quickbooks_host = parsed_url.hostname
quickbooks_port = parsed_url.port or 80
service_check_name = 'quickbooks.connected'
service_check_tags = ['host:%s' % quickbooks_host, 'port:%s' % quickbooks_port]
auth = None
try:
self.log.debug('quickbooks check initiating request, connect timeout %d receive %d' %
(connect_timeout, receive_timeout))
r = requests.get(url, auth=auth, headers=headers(self.agentConfig),
verify=not disable_ssl_validation, timeout=(connect_timeout, receive_timeout))
r.raise_for_status()
except Exception as e:
self.log.warning("Caught exception %s" % str(e))
self.service_check(service_check_name, AgentCheck.CRITICAL,
tags=service_check_tags)
raise
else:
response = r.content
test_status = 0
for line in response.splitlines():
values = line.strip().split(' => ')
if len(values) == 2:
metric, value = values
if metric == '[test]' and value is '1':
print(metric, value)
test_status += 1
if test_status == 0:
self.service_check(service_check_name, AgentCheck.CRITICAL,
tags=service_check_tags)
else:
self.service_check(service_check_name, AgentCheck.OK,
tags=service_check_tags)
self.log.debug("quickbooks check succeeded")