Files
vista-agent/plugins/collector/systemcollector.py
2025-11-12 14:55:52 +00:00

49 lines
1.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from plugins.base import BaseModule
import psutil
import time
class SystemMetricsCollector(BaseModule):
def __init__(self, params):
super().__init__(params)
self.output_queue = None
self.host_tag = params.get('host_tag', 'unknown')
self.interval = params.get('interval', 1.0)
def set_output_queue(self, queue):
self.output_queue = queue
def collect_metrics(self):
return {
'cpu_percent': psutil.cpu_percent(interval=None),
'mem_available_gb': psutil.virtual_memory().available / (1024 ** 3),
'disk_usage_percent': psutil.disk_usage('/').percent,
'timestamp': int(time.time() * 1000000000)
}
def run(self):
self.is_running = True
while self.is_running:
raw_metrics = self.collect_metrics()
line_protocol_string = self.format_to_line_protocol(raw_metrics)
if self.output_queue and line_protocol_string:
# 放入 Queue传递给 Storage 进程
self.output_queue.put(line_protocol_string)
time.sleep(self.interval)
def format_to_line_protocol(self, metrics):
tag_set = f"host={self.host_tag}"
field_set_parts = []
for key, value in metrics.items():
if key == 'timestamp':
continue
if isinstance(value, int):
field_set_parts.append(f"{key}={value}i")
else:
field_set_parts.append(f"{key}={value}")
field_set = ",".join(field_set_parts)
timestamp = metrics.get('timestamp')
line = f"system_metrics,{tag_set} {field_set} {timestamp}"
return line