Skip to content

Commit 834323c

Browse files
committed
mgr/cephadm: adding needs_monitoring flag
This new flag indicates whether a given service needs monitoring (to be included in Prometheus jobs as scraping target) or not Signed-off-by: Redouane Kachach <[email protected]>
1 parent 44510fd commit 834323c

File tree

7 files changed

+39
-1
lines changed

7 files changed

+39
-1
lines changed

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,10 @@ class CephadmService(metaclass=ABCMeta):
266266
Base class for service types. Often providing a create() and config() fn.
267267
"""
268268

269+
@property
270+
def needs_monitoring(self) -> bool:
271+
return False
272+
269273
@property
270274
@abstractmethod
271275
def TYPE(self) -> str:
@@ -1419,6 +1423,10 @@ class CephExporterService(CephService):
14191423
TYPE = 'ceph-exporter'
14201424
DEFAULT_SERVICE_PORT = 9926
14211425

1426+
@property
1427+
def needs_monitoring(self) -> bool:
1428+
return True
1429+
14221430
@classmethod
14231431
def get_dependencies(cls, mgr: "CephadmOrchestrator",
14241432
spec: Optional[ServiceSpec] = None,

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,10 @@ class IngressService(CephService):
2222
TYPE = 'ingress'
2323
MAX_KEEPALIVED_PASS_LEN = 8
2424

25+
@property
26+
def needs_monitoring(self) -> bool:
27+
return True
28+
2529
@classmethod
2630
def get_dependencies(cls, mgr: "CephadmOrchestrator",
2731
spec: Optional[ServiceSpec] = None,

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,10 @@ class AlertmanagerService(CephadmService):
279279
USER_CFG_KEY = 'alertmanager/web_user'
280280
PASS_CFG_KEY = 'alertmanager/web_password'
281281

282+
@property
283+
def needs_monitoring(self) -> bool:
284+
return True
285+
282286
def prepare_create(self, daemon_spec: CephadmDaemonDeploySpec) -> CephadmDaemonDeploySpec:
283287
assert self.TYPE == daemon_spec.daemon_type
284288
daemon_spec.final_config, daemon_spec.deps = self.generate_config(daemon_spec)
@@ -800,6 +804,10 @@ class NodeExporterService(CephadmService):
800804
TYPE = 'node-exporter'
801805
DEFAULT_SERVICE_PORT = 9100
802806

807+
@property
808+
def needs_monitoring(self) -> bool:
809+
return True
810+
803811
@classmethod
804812
def get_dependencies(cls, mgr: "CephadmOrchestrator",
805813
spec: Optional[ServiceSpec] = None,

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ class NFSService(CephService):
2626
TYPE = 'nfs'
2727
DEFAULT_EXPORTER_PORT = 9587
2828

29+
@property
30+
def needs_monitoring(self) -> bool:
31+
return True
32+
2933
def ranked(self, spec: ServiceSpec) -> bool:
3034
return True
3135

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ class NvmeofService(CephService):
2525
TYPE = 'nvmeof'
2626
PROMETHEUS_PORT = 10008
2727

28+
@property
29+
def needs_monitoring(self) -> bool:
30+
return True
31+
2832
def config(self, spec: NvmeofServiceSpec) -> None: # type: ignore
2933
assert self.TYPE == spec.service_type
3034
# Looking at src/pybind/mgr/cephadm/services/iscsi.py

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

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
import os
2424
import logging
25-
from typing import Type, Dict, TYPE_CHECKING
25+
from typing import Type, Dict, List, TYPE_CHECKING
2626
import importlib
2727
import pkgutil
2828

@@ -66,6 +66,12 @@ def get_service(self, service_type: str) -> "CephadmService":
6666
"""Retrieves an initialized service instance by type."""
6767
return self._services[service_type]
6868

69+
def get_services_requiring_monitoring(self) -> List[str]:
70+
"""Return a list with service types that requiere monitoring."""
71+
services_to_monitor = [svc for svc in self._services if self._services[svc].needs_monitoring]
72+
services_to_monitor.append('ceph') # this is needed for mgr-prometheus targets
73+
return sorted(services_to_monitor)
74+
6975

7076
def register_cephadm_service(cls: Type["CephadmService"]) -> Type["CephadmService"]:
7177
"""

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,10 @@ class SMBService(CephService):
2525
TYPE = 'smb'
2626
smb_pool = '.smb' # minor layering violation. try to clean up later.
2727

28+
@property
29+
def needs_monitoring(self) -> bool:
30+
return True
31+
2832
def config(self, spec: ServiceSpec) -> None:
2933
assert self.TYPE == spec.service_type
3034
smb_spec = cast(SMBSpec, spec)

0 commit comments

Comments
 (0)