]> arthur.barton.de Git - netdata.git/commitdiff
tomcat mudule: add desired port into account (multiple connectors)
authorIlya <ilyamaschenko@gmail.com>
Tue, 24 Jan 2017 02:12:39 +0000 (11:12 +0900)
committerIlya <ilyamaschenko@gmail.com>
Tue, 24 Jan 2017 02:12:39 +0000 (11:12 +0900)
python.d/tomcat.chart.py

index 4ca06c9b08b2edec35aa153b145b716bafe9846a..a6485fd5016712ce35ec06aaf326c127db2a39fa 100644 (file)
@@ -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://<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):
@@ -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