]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: make prometheus scrape ingress haproxy
authorSage Weil <sage@newdream.net>
Tue, 13 Apr 2021 22:20:21 +0000 (18:20 -0400)
committerSage Weil <sage@newdream.net>
Fri, 23 Apr 2021 12:24:14 +0000 (07:24 -0500)
Signed-off-by: Sage Weil <sage@newdream.net>
(cherry picked from commit 7a30e656b9c719ec0141e19bfc629c0f7ae89c9f)

src/pybind/mgr/cephadm/module.py
src/pybind/mgr/cephadm/services/monitoring.py
src/pybind/mgr/cephadm/templates/services/prometheus/prometheus.yml.j2

index 56c3bac41f5087c8eda2e0a581707e4dfff8b3d0..75e65804aac9edcca6009c7c5f62b00706f7d048 100644 (file)
@@ -1979,12 +1979,12 @@ class CephadmOrchestrator(orchestrator.Orchestrator, MgrModule,
             deps = [d.name() for d in daemons if d.daemon_type == 'haproxy']
         else:
             need = {
-                'prometheus': ['mgr', 'alertmanager', 'node-exporter'],
+                'prometheus': ['mgr', 'alertmanager', 'node-exporter', 'ingress'],
                 'grafana': ['prometheus'],
                 'alertmanager': ['mgr', 'alertmanager'],
             }
             for dep_type in need.get(daemon_type, []):
-                for dd in self.cache.get_daemons_by_service(dep_type):
+                for dd in self.cache.get_daemons_by_type(dep_type):
                     deps.append(dd.name())
         return sorted(deps)
 
index a95a515247e6c33dccd32478d6a8822890d41b47..f749f0559517885f4f38f086af5c83f26fd74221 100644 (file)
@@ -8,6 +8,7 @@ from mgr_module import HandleCommandResult
 from orchestrator import DaemonDescription
 from ceph.deployment.service_spec import AlertManagerSpec
 from cephadm.services.cephadmservice import CephadmService, CephadmDaemonDeploySpec
+from cephadm.services.ingress import IngressSpec
 from mgr_util import verify_tls, ServerConfigException, create_self_signed_cert
 
 logger = logging.getLogger(__name__)
@@ -245,10 +246,25 @@ class PrometheusService(CephadmService):
             addr = self.mgr.inventory.get_addr(dd.hostname)
             alertmgr_targets.append("'{}:9093'".format(addr.split(':')[0]))
 
+        # scrape haproxies
+        haproxy_targets = []
+        for dd in self.mgr.cache.get_daemons_by_type('ingress'):
+            if dd.service_name() in self.mgr.spec_store:
+                spec = cast(IngressSpec, self.mgr.spec_store[dd.service_name()].spec)
+                assert dd.hostname is not None
+                deps.append(dd.name())
+                if dd.daemon_type == 'haproxy':
+                    addr = self.mgr.inventory.get_addr(dd.hostname)
+                    haproxy_targets.append({
+                        "url": f"'{addr.split(':')[0]}:{spec.monitor_port}'",
+                        "service": dd.service_name(),
+                    })
+
         # generate the prometheus configuration
         context = {
             'alertmgr_targets': alertmgr_targets,
             'mgr_scrape_list': mgr_scrape_list,
+            'haproxy_targets': haproxy_targets,
             'nodes': nodes,
         }
         r = {
index 26af6db012d1e2fdd6bd19953b78dd9a2bd2f2c3..2b599a06b2af324e81afbb4ea829e48bfee393f3 100644 (file)
@@ -20,6 +20,7 @@ scrape_configs:
 {% for mgr in mgr_scrape_list %}
       - '{{ mgr }}'
 {% endfor %}
+
 {% if nodes %}
   - job_name: 'node'
     static_configs:
@@ -29,3 +30,13 @@ scrape_configs:
         instance: '{{ node.hostname }}'
 {% endfor %}
 {% endif %}
+
+{% if haproxy_targets %}
+  - job_name: 'haproxy'
+    static_configs:
+{% for haproxy in haproxy_targets %}
+      - targets: [{{ haproxy.url }}]
+        labels:
+         instance: '{{ haproxy.service }}'
+{% endfor %}
+{% endif %}