Skip to content

Commit 3dea1b5

Browse files
committed
mgr/cephadm: fixing Prometheus dependencies calculation
This change include: 1. Adding boolean dependencies on other services (to avoid reconfiguring when not necessary) 2. Adding all Ceph managers daemons as dependency (instead of active one) 3. Remove mgr-prometheus port dependency (not needed anymore) Signed-off-by: Redouane Kachach <[email protected]>
1 parent d1ba8e9 commit 3dea1b5

File tree

1 file changed

+14
-21
lines changed

1 file changed

+14
-21
lines changed

src/pybind/mgr/cephadm/services/monitoring.py

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ def get_dependencies(cls, mgr: "CephadmOrchestrator",
309309
daemon_type: Optional[str] = None) -> List[str]:
310310
deps = []
311311
deps.append(f'secure_monitoring_stack:{mgr.secure_monitoring_stack}')
312-
deps = deps + mgr.cache.get_daemons_by_types(['alertmanager', 'snmp-gateway', 'mgmt-gateway', 'oauth2-proxy'])
312+
deps += mgr.cache.get_daemons_by_types(['alertmanager', 'snmp-gateway', 'mgmt-gateway', 'oauth2-proxy'])
313313
security_enabled, mgmt_gw_enabled, _ = mgr._get_security_config()
314314
if security_enabled:
315315
alertmanager_user, alertmanager_password = mgr._get_alertmanager_credentials()
@@ -654,19 +654,9 @@ def get_dependencies(cls, mgr: "CephadmOrchestrator",
654654
spec: Optional[ServiceSpec] = None,
655655
daemon_type: Optional[str] = None) -> List[str]:
656656
deps = [] # type: List[str]
657-
port = cast(int, mgr.get_module_option_ex('prometheus', 'server_port', PrometheusService.DEFAULT_MGR_PROMETHEUS_PORT))
658-
deps.append(str(port))
659657
deps.append(str(mgr.service_discovery_port))
660658
deps.append(f'secure_monitoring_stack:{mgr.secure_monitoring_stack}')
661659
security_enabled, mgmt_gw_enabled, _ = mgr._get_security_config()
662-
663-
if not mgmt_gw_enabled:
664-
# add an explicit dependency on the active manager. This will force to
665-
# re-deploy prometheus if the mgr has changed (due to a fail-over i.e).
666-
# when mgmt_gw is enabled there's no need for such dep as mgmt-gw wil
667-
# route to the active mgr automatically
668-
deps.append(mgr.get_active_mgr().name())
669-
670660
if security_enabled:
671661
alertmanager_user, alertmanager_password = mgr._get_alertmanager_credentials()
672662
prometheus_user, prometheus_password = mgr._get_prometheus_credentials()
@@ -675,16 +665,19 @@ def get_dependencies(cls, mgr: "CephadmOrchestrator",
675665
if alertmanager_user and alertmanager_password:
676666
deps.append(f'{utils.md5_hash(alertmanager_user + alertmanager_password)}')
677667

678-
# add a dependency since url_prefix depends on the existence of mgmt-gateway
679-
deps += [d.name() for d in mgr.cache.get_daemons_by_service('mgmt-gateway')]
680-
# add a dependency since enbling basic-auth (or not) depends on the existence of 'oauth2-proxy'
681-
deps += [d.name() for d in mgr.cache.get_daemons_by_service('oauth2-proxy')]
668+
# Adding other services as deps (with corresponding justification):
669+
# ceph-exporter: scraping target
670+
# node-exporter: scraping target
671+
# ingress : scraping target
672+
# alert-manager: part of prometheus configuration
673+
# mgmt-gateway : since url_prefix depends on the existence of mgmt-gateway
674+
# oauth2-proxy : enbling basic-auth (or not) depends on the existence of 'oauth2-proxy'
675+
for svc in ['mgmt-gateway', 'oauth2-proxy', 'alertmanager', 'node-exporter', 'ceph-exporter', 'ingress']:
676+
deps.append(f'{svc}_configured:{bool(mgr.cache.get_daemons_by_service(svc))}')
682677

683-
# add dependency on ceph-exporter daemons
684-
deps += [d.name() for d in mgr.cache.get_daemons_by_service('ceph-exporter')]
685-
deps += [s for s in ['node-exporter', 'alertmanager'] if mgr.cache.get_daemons_by_service(s)]
686-
if len(mgr.cache.get_daemons_by_type('ingress')) > 0:
687-
deps.append('ingress')
678+
if not mgmt_gw_enabled:
679+
# Ceph mgrs are dependency because when mgmt-gateway is not enabled the service-discovery depends on mgrs ips
680+
deps += mgr.cache.get_daemons_by_types(['mgr'])
688681

689682
return sorted(deps)
690683

@@ -797,7 +790,7 @@ def get_dependencies(cls, mgr: "CephadmOrchestrator",
797790
daemon_type: Optional[str] = None) -> List[str]:
798791
deps = []
799792
deps.append(f'secure_monitoring_stack:{mgr.secure_monitoring_stack}')
800-
deps = deps + mgr.cache.get_daemons_by_types(['mgmt-gateway'])
793+
deps += mgr.cache.get_daemons_by_types(['mgmt-gateway'])
801794
return sorted(deps)
802795

803796
def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:

0 commit comments

Comments
 (0)