from apiserver.bll.util import get_server_uuid from apiserver.bll.workers import WorkerStats, WorkerBLL from apiserver.config_repo import config from apiserver.config.info import get_deployment_type from apiserver.database.model import Company, User from apiserver.database.model.queue import Queue from apiserver.database.model.task.task import Task from apiserver.tools import safe_get from apiserver.utilities.json import dumps from apiserver.utilities.threads_manager import ThreadsManager from apiserver.version import __version__ as current_version from .resource_monitor import ResourceMonitor log = config.logger(__file__) worker_bll = WorkerBLL() class StatisticsReporter: threads = ThreadsManager("Statistics", resource_monitor=ResourceMonitor) send_queue = queue.Queue() supported = config.get("apiserver.statistics.supported", True) @classmethod def start(cls): cls.start_sender() cls.start_reporter() @classmethod @threads.register("reporter", daemon=True) def start_reporter(cls):
def __init__(self, worker_bll: WorkerBLL = None, es: Elasticsearch = None): self.worker_bll = worker_bll or WorkerBLL() self.es = es or es_factory.connect("workers") self._metrics = QueueMetrics(self.es)