from base import UrlService
from re import compile
+try:
+ from urlparse import urlparse
+except ImportError:
+ from urllib.parse import urlparse
+
# default module values (can be overridden per job in `config`)
# update_every = 2
priority = 60000
self.url = self.configuration.get('url', "http://127.0.0.1:8080/manager/status?XML=true")
self.order = ORDER
self.definitions = CHARTS
- self.regex = compile(r'([\w]+)=\\?[\'\"](\d+)\\?[\'\"]')
def check(self):
if not self.url.endswith('manager/status?XML=true'):
self.error('Bad url(%s). Must be http://<ip.address>:<port>/manager/status?XML=true' % self.url)
return False
+ netloc = urlparse(self.url).netloc.rpartition(':')
+ if netloc[1] == ':': port = netloc[2]
+ else: port = 80
+
+ self.regex_jvm = compile(r'<jvm>.*?</jvm>')
+ self.regex_connector = compile(r'[a-z-]+%s.*?/connector' % port)
+ self.regex = compile(r'([\w]+)=\\?[\'\"](\d+)\\?[\'\"]')
+
return UrlService.check(self)
def _get_data(self):
:return: dict
"""
data = self._get_raw_data()
- if data: data = dict(self.regex.findall(data))
+ if data:
+ jvm = self.regex_jvm.findall(data)
+ connector = self.regex_connector.findall(data)
+ data = dict(self.regex.findall(''.join([jvm[0] if jvm else '',
+ connector[0] if connector else ''])))
return data or None