mirror of https://github.com/MISP/misp-dashboard
fix: [diagnostic] socket subscribing multiple time and improved status
messagesubzero
parent
a9f9a67184
commit
ddf7cbcfff
|
@ -171,14 +171,15 @@ def check_redis(spinner):
|
||||||
def check_zmq(spinner):
|
def check_zmq(spinner):
|
||||||
timeout = 15
|
timeout = 15
|
||||||
context = zmq.Context()
|
context = zmq.Context()
|
||||||
socket = context.socket(zmq.SUB)
|
misp_instances = json.loads(configuration_file.get('RedisGlobal', 'misp_instances'))
|
||||||
misp_instances = json.loads(cfg.get('RedisGlobal', 'misp_instances'))
|
|
||||||
instances_status = {}
|
instances_status = {}
|
||||||
for misp_instance in misp_instances:
|
for misp_instance in misp_instances:
|
||||||
|
socket = context.socket(zmq.SUB)
|
||||||
socket.connect(misp_instance.get('zmq'))
|
socket.connect(misp_instance.get('zmq'))
|
||||||
socket.setsockopt_string(zmq.SUBSCRIBE, '')
|
socket.setsockopt_string(zmq.SUBSCRIBE, '')
|
||||||
poller = zmq.Poller()
|
poller = zmq.Poller()
|
||||||
|
|
||||||
|
flag_skip = False
|
||||||
start_time = time.time()
|
start_time = time.time()
|
||||||
poller.register(socket, zmq.POLLIN)
|
poller.register(socket, zmq.POLLIN)
|
||||||
for t in range(1, timeout+1):
|
for t in range(1, timeout+1):
|
||||||
|
@ -188,21 +189,23 @@ def check_zmq(spinner):
|
||||||
rcv_string = socket.recv()
|
rcv_string = socket.recv()
|
||||||
if rcv_string.startswith(b'misp_json'):
|
if rcv_string.startswith(b'misp_json'):
|
||||||
instances_status[misp_instance.get('name')] = True
|
instances_status[misp_instance.get('name')] = True
|
||||||
|
flag_skip = True
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
pass
|
spinner.text = f'checking zmq of {misp_instance.get("name")} - elapsed time: {int(time.time() - start_time)}s'
|
||||||
spinner.text = f'checking zmq of {misp_instance.get('name')} - elapsed time: {int(time.time() - start_time)}s'
|
if not flag_skip:
|
||||||
instances_status[misp_instance.get('name')] = False
|
instances_status[misp_instance.get('name')] = False
|
||||||
|
|
||||||
results = [s for n, s in instances_status.items()]
|
results = [s for n, s in instances_status.items()]
|
||||||
if all(results):
|
if all(results):
|
||||||
return (True, '')
|
return (True, '')
|
||||||
elif any(results):
|
elif any(results):
|
||||||
return_text = 'Some connection to ZMQ streams failed.\n'
|
return_text = 'Connection to ZMQ stream(s) failed.\n'
|
||||||
for name, status:
|
for name, status in instances_status.items():
|
||||||
return_text += f'\t➥ {name}: {'success' if status else 'failed'}\n'
|
return_text += f'\t➥ {name}: {"success" if status else "failed"}\n'
|
||||||
return (True, return_text)
|
return (True, return_text)
|
||||||
else:
|
else:
|
||||||
return (False, '''Can\'t connect to the ZMQ stream.
|
return (False, '''Can\'t connect to the ZMQ stream(s).
|
||||||
\t➥ Make sure the MISP ZMQ is running: `/servers/serverSettings/diagnostics`
|
\t➥ Make sure the MISP ZMQ is running: `/servers/serverSettings/diagnostics`
|
||||||
\t➥ Make sure your network infrastucture allows you to connect to the ZMQ''')
|
\t➥ Make sure your network infrastucture allows you to connect to the ZMQ''')
|
||||||
|
|
||||||
|
@ -215,11 +218,8 @@ def check_processes_status(spinner):
|
||||||
universal_newlines=True
|
universal_newlines=True
|
||||||
)
|
)
|
||||||
for line in response.splitlines():
|
for line in response.splitlines():
|
||||||
lines = line.split(' ')
|
lines = line.split(' ', maxsplit=1)
|
||||||
if len(lines) == 2:
|
|
||||||
pid, p_name = lines
|
pid, p_name = lines
|
||||||
elif len(lines) ==3:
|
|
||||||
pid, _, p_name = lines
|
|
||||||
|
|
||||||
if 'zmq_subscriber.py' in p_name:
|
if 'zmq_subscriber.py' in p_name:
|
||||||
pgrep_subscriber_output = line
|
pgrep_subscriber_output = line
|
||||||
|
|
Loading…
Reference in New Issue