缓存模块和采集模块
This commit is contained in:
49
agent_core/dispatcher.py
Normal file
49
agent_core/dispatcher.py
Normal 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()
|
||||
Reference in New Issue
Block a user