diff options
Diffstat (limited to '.venv/lib/python3.12/site-packages/prometheus_client/platform_collector.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/prometheus_client/platform_collector.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/prometheus_client/platform_collector.py b/.venv/lib/python3.12/site-packages/prometheus_client/platform_collector.py new file mode 100644 index 00000000..6040fcce --- /dev/null +++ b/.venv/lib/python3.12/site-packages/prometheus_client/platform_collector.py @@ -0,0 +1,59 @@ +import platform as pf +from typing import Any, Iterable, Optional + +from .metrics_core import GaugeMetricFamily, Metric +from .registry import Collector, CollectorRegistry, REGISTRY + + +class PlatformCollector(Collector): + """Collector for python platform information""" + + def __init__(self, + registry: Optional[CollectorRegistry] = REGISTRY, + platform: Optional[Any] = None, + ): + self._platform = pf if platform is None else platform + info = self._info() + system = self._platform.system() + if system == "Java": + info.update(self._java()) + self._metrics = [ + self._add_metric("python_info", "Python platform information", info) + ] + if registry: + registry.register(self) + + def collect(self) -> Iterable[Metric]: + return self._metrics + + @staticmethod + def _add_metric(name, documentation, data): + labels = data.keys() + values = [data[k] for k in labels] + g = GaugeMetricFamily(name, documentation, labels=labels) + g.add_metric(values, 1) + return g + + def _info(self): + major, minor, patchlevel = self._platform.python_version_tuple() + return { + "version": self._platform.python_version(), + "implementation": self._platform.python_implementation(), + "major": major, + "minor": minor, + "patchlevel": patchlevel + } + + def _java(self): + java_version, _, vminfo, osinfo = self._platform.java_ver() + vm_name, vm_release, vm_vendor = vminfo + return { + "jvm_version": java_version, + "jvm_release": vm_release, + "jvm_vendor": vm_vendor, + "jvm_name": vm_name + } + + +PLATFORM_COLLECTOR = PlatformCollector() +"""PlatformCollector in default Registry REGISTRY""" |