def collect_system_metadata(metadata):
metadata['platform'] = platform.platform(True, False)
if sys.platform.startswith('linux'):
collect_linux_metadata(metadata)
# on linux, load average over 1 minute
for line in read_proc("loadavg"):
fields = line.split()
loadavg = fields[0]
metadata['load_avg_1min'] = float(loadavg)
if len(fields) >= 4 and '/' in fields[3]:
runnable_threads = fields[3].split('/', 1)[0]
runnable_threads = int(runnable_threads)
metadata['runnable_threads'] = runnable_threads
if 'load_avg_1min' not in metadata and hasattr(os, 'getloadavg'):
metadata['load_avg_1min'] = os.getloadavg()[0]
# Hostname
hostname = socket.gethostname()
if hostname:
metadata['hostname'] = hostname
# Boot time
boot_time = None
for line in read_proc("stat"):
if not line.startswith("btime "):
continue
boot_time = int(line[6:])
break
if boot_time is None and psutil:
boot_time = psutil.boot_time()
if boot_time is not None:
btime = datetime.datetime.fromtimestamp(boot_time)
metadata['boot_time'] = format_datetime(btime)
metadata['uptime'] = time.time() - boot_time
评论列表
文章目录