From: Sage Weil Date: Tue, 13 Apr 2021 22:20:21 +0000 (-0400) Subject: mgr/cephadm: make prometheus scrape ingress haproxy X-Git-Tag: v16.2.2~1^2~28 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=b616585241c28bec22390ab026ddf50eff273ee8;p=ceph.git mgr/cephadm: make prometheus scrape ingress haproxy Signed-off-by: Sage Weil (cherry picked from commit 7a30e656b9c719ec0141e19bfc629c0f7ae89c9f) --- diff --git a/src/pybind/mgr/cephadm/module.py b/src/pybind/mgr/cephadm/module.py index 56c3bac41f508..75e65804aac9e 100644 --- a/src/pybind/mgr/cephadm/module.py +++ b/src/pybind/mgr/cephadm/module.py @@ -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) diff --git a/src/pybind/mgr/cephadm/services/monitoring.py b/src/pybind/mgr/cephadm/services/monitoring.py index a95a515247e6c..f749f05595178 100644 --- a/src/pybind/mgr/cephadm/services/monitoring.py +++ b/src/pybind/mgr/cephadm/services/monitoring.py @@ -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 = { diff --git a/src/pybind/mgr/cephadm/templates/services/prometheus/prometheus.yml.j2 b/src/pybind/mgr/cephadm/templates/services/prometheus/prometheus.yml.j2 index 26af6db012d1e..2b599a06b2af3 100644 --- a/src/pybind/mgr/cephadm/templates/services/prometheus/prometheus.yml.j2 +++ b/src/pybind/mgr/cephadm/templates/services/prometheus/prometheus.yml.j2 @@ -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 %}