缓存模块和采集模块

This commit is contained in:
2025-11-12 14:55:52 +00:00
commit 38e371fb1d
12 changed files with 260 additions and 0 deletions

1
agent_core/__init__.py Normal file
View File

@@ -0,0 +1 @@
from dispatcher import Dispatcher

49
agent_core/dispatcher.py Normal file
View File

@@ -0,0 +1,49 @@
import importlib
from multiprocessing import Process, Queue
class Dispatcher:
def __init__(self, config):
self.config = config
self.plugins = config['server']['plugins']
self.collector_to_storage_queue = Queue()
self.manage_queue = Queue()
self.get_queue = Queue()
def start_plugins(self):
self.processes = []
# storage模块
storage_config = self.config['modules']['storage'][0]
storage_instance = self.get_module_instance(storage_config)
storage_instance.set_input_queue(self.collector_to_storage_queue)
storage_instance.set_manage_queue(self.manage_queue)
storage_instance.set_get_queue(self.get_queue)
storage_process = Process(target=storage_instance.run, name=storage_config['name'])
self.processes.append(storage_process)
storage_process.start()
# collector模块
for collector_config in self.config['modules']['collector']:
collector_instance = self.get_module_instance(collector_config)
collector_instance.set_output_queue(self.collector_to_storage_queue)
collector_process = Process(target=collector_instance.run, name=collector_config['name'])
self.processes.append(collector_process)
collector_process.start()
# sender模块
sender_config = self.config['modules']['sender'][0]
sender_instance = self.get_module_instance(sender_config)
sender_instance.set_manage_queue(self.manage_queue)
sender_process = Process(target=sender_instance.run, name=sender_config['name'])
self.processes.append(sender_process)
sender_process.start()
def get_module_instance(self, module_config):
module = importlib.import_module(module_config['path'])
ModuleClass = getattr(module, module_config['name'])
return ModuleClass(module_config['params'])
def run(self):
self.start_module_processes()
for p in self.processes:
p.join()