From beb22fba4fc8c9cd2bbc50d5ca5f2f7f4b936640 Mon Sep 17 00:00:00 2001 From: Ilya Date: Tue, 24 Jan 2017 11:12:39 +0900 Subject: [PATCH] tomcat mudule: add desired port into account (multiple connectors) --- python.d/tomcat.chart.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/python.d/tomcat.chart.py b/python.d/tomcat.chart.py index 4ca06c9b..a6485fd5 100644 --- a/python.d/tomcat.chart.py +++ b/python.d/tomcat.chart.py @@ -5,6 +5,11 @@ 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 @@ -44,13 +49,20 @@ class Service(UrlService): 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://:/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'.*?') + self.regex_connector = compile(r'[a-z-]+%s.*?/connector' % port) + self.regex = compile(r'([\w]+)=\\?[\'\"](\d+)\\?[\'\"]') + return UrlService.check(self) def _get_data(self): @@ -59,6 +71,10 @@ class Service(UrlService): :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 -- 2.39.2