Source code for crossbar.edge.worker.monitor._system

##############################################################################
#
#                        Crossbar.io
#     Copyright (C) typedef int GmbH. All rights reserved.
#
##############################################################################

import os

import psutil
from txaio import perf_counter_ns

from crossbar.edge.worker.monitor._base import Monitor

__all__ = ("SystemMonitor",)


[docs] class SystemMonitor(Monitor): """ System monitoring via psutils. """
[docs] ID = "system"
[docs] def poll(self): hdata = Monitor.poll(self) start = perf_counter_ns() hdata["cpu"] = psutil.cpu_times_percent()._asdict() hdata["memory"] = psutil.virtual_memory()._asdict() hdata["loadavg"] = os.getloadavg() # uptime, as all durations, is in ns hdata["uptime"] = int(hdata["timestamp"] - psutil.boot_time() * 10**10) hdata["elapsed"] = perf_counter_ns() - start self._last_value = hdata return hdata