tomcat mudule: add desired port into account (multiple connectors)
Ilya committed
Jan 24, 2017 at 11:12 UTC
beb22fba4fc8c9cd2bbc50d5ca5f2f7f4b936640
1 file changed
+18
-2
python.d/tomcat.chart.py
+18
-2
@@ -5,6 +5,11 @@
5
from base import UrlService
6
from re import compile
7
8
+try:
9
+ from urlparse import urlparse
10
+except ImportError:
11
+ from urllib.parse import urlparse
12
+
13
# default module values (can be overridden per job in `config`)
14
# update_every = 2
15
priority = 60000
@@ -44,13 +49,20 @@ class Service(UrlService):
49
self.url = self.configuration.get('url', "http://127.0.0.1:8080/manager/status?XML=true")
50
self.order = ORDER
51
self.definitions = CHARTS
47
- self.regex = compile(r'([\w]+)=\\?[\'\"](\d+)\\?[\'\"]')
52
53
def check(self):
54
if not self.url.endswith('manager/status?XML=true'):
55
self.error('Bad url(%s). Must be http://<ip.address>:<port>/manager/status?XML=true' % self.url)
56
return False
57
58
+ netloc = urlparse(self.url).netloc.rpartition(':')
59
+ if netloc[1] == ':': port = netloc[2]
60
+ else: port = 80
61
+
62
+ self.regex_jvm = compile(r'<jvm>.*?</jvm>')
63
+ self.regex_connector = compile(r'[a-z-]+%s.*?/connector' % port)
64
+ self.regex = compile(r'([\w]+)=\\?[\'\"](\d+)\\?[\'\"]')
65
+
66
return UrlService.check(self)
67
68
def _get_data(self):
@@ -59,6 +71,10 @@ class Service(UrlService):
71
:return: dict
72
"""
73
data = self._get_raw_data()
62
- if data: data = dict(self.regex.findall(data))
74
+ if data:
75
+ jvm = self.regex_jvm.findall(data)
76
+ connector = self.regex_connector.findall(data)
77
+ data = dict(self.regex.findall(''.join([jvm[0] if jvm else '',
78
+ connector[0] if connector else ''])))
79
80
return data or None