]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: Monitoring: Prometheus: Fix IPv6
authorSebastian Wagner <sewagner@redhat.com>
Mon, 18 Oct 2021 13:05:43 +0000 (15:05 +0200)
committerSebastian Wagner <sewagner@redhat.com>
Mon, 18 Oct 2021 13:05:43 +0000 (15:05 +0200)
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
src/pybind/mgr/cephadm/services/monitoring.py

index 8dbeafcf142e39b3207dcdaf61574c8dc68b2930..3ec2a66789e391421ad1f0dbb792f13003a24f6d 100644 (file)
@@ -235,11 +235,10 @@ class PrometheusService(CephadmService):
         port = None
         t = mgr_map.get('services', {}).get('prometheus', None)
         if t:
+            p_result = urlparse(t)
             t = t.split('/')[2]
             mgr_scrape_list.append(t)
-            port = '9283'
-            if ':' in t:
-                port = t.split(':')[1]
+            port = p_result.port or 9283
         # scan all mgrs to generate deps and to get standbys too.
         # assume that they are all on the same port as the active mgr.
         for dd in self.mgr.cache.get_daemons_by_service('mgr'):
@@ -252,7 +251,7 @@ class PrometheusService(CephadmService):
                 continue
             assert dd.hostname is not None
             addr = self.mgr.inventory.get_addr(dd.hostname)
-            mgr_scrape_list.append(addr.split(':')[0] + ':' + port)
+            mgr_scrape_list.append(build_url(host=addr, port=port).lstrip('/'))
 
         # scrape node exporters
         nodes = []
@@ -260,10 +259,10 @@ class PrometheusService(CephadmService):
             assert dd.hostname is not None
             deps.append(dd.name())
             addr = dd.ip if dd.ip else self.mgr.inventory.get_addr(dd.hostname)
-            port = str(dd.ports[0]) if dd.ports else '9100'
+            port = dd.ports[0] if dd.ports else 9100
             nodes.append({
                 'hostname': dd.hostname,
-                'url': addr.split(':')[0] + ':' + port
+                'url': build_url(host=addr, port=port).lstrip('/')
             })
 
         # scrape alert managers
@@ -272,8 +271,8 @@ class PrometheusService(CephadmService):
             assert dd.hostname is not None
             deps.append(dd.name())
             addr = dd.ip if dd.ip else self.mgr.inventory.get_addr(dd.hostname)
-            port = str(dd.ports[0]) if dd.ports else '9093'
-            alertmgr_targets.append("'{}:{}'".format(addr.split(':')[0], port))
+            port = dd.ports[0] if dd.ports else 9093
+            alertmgr_targets.append("'{}'".format(build_url(host=addr, port=port).lstrip('/')))
 
         # scrape haproxies
         haproxy_targets = []
@@ -285,7 +284,7 @@ class PrometheusService(CephadmService):
                 if dd.daemon_type == 'haproxy':
                     addr = self.mgr.inventory.get_addr(dd.hostname)
                     haproxy_targets.append({
-                        "url": f"'{addr.split(':')[0]}:{spec.monitor_port}'",
+                        "url": f"'{build_url(host=addr, port=spec.monitor_port).lstrip('/')}'",
                         "service": dd.service_name(),
                     })
 
@@ -324,7 +323,7 @@ class PrometheusService(CephadmService):
         assert dd.hostname is not None
         addr = dd.ip if dd.ip else self._inventory_get_addr(dd.hostname)
         port = dd.ports[0] if dd.ports else self.DEFAULT_SERVICE_PORT
-        service_url = 'http://{}:{}'.format(addr, port)
+        service_url = build_url(scheme='http', host=addr, port=port)
         self._set_service_url_on_dashboard(
             'Prometheus',
             'dashboard get-prometheus-api-host',