Commit 008e9111 authored by Hiro's avatar Hiro 🏄
Browse files

Add script to check onionperf instances status

parent 6f11afaa
Loading
Loading
Loading
Loading

services/onionperf

0 → 100644
+64 −0
Original line number Diff line number Diff line
#!/usr/bin/python3

# The following scripts needs the following packages installed:
# python3-prometheus-client python3-psutil python3-nmap
# Might also have to install nmap package

import nmap
import os
import psuitl

from prometheus_client import CollectorRegistry, Enum, write_to_textfile

registry = CollectorRegistry()

op = Enum('onionperf_state', 'Onionperf service current state',
        states=['starting', 'running', 'stopped', 'error'], registry=registry)

tor = Enum('tor_state', 'Tor process current state',
        states=['starting', 'running', 'stopped', 'error'], registry=registry)

tgen = Enum('tgen_state', 'Tgen process current state',
        states=['starting', 'running', 'stopped', 'error'], registry=registry)

port_status = Enum('port_status', 'Check that port 8080 can be reached',
        states=['open', 'close', 'error', 'error'], registry=registry)

try:
    op_stat = os.system('systemctl status onionperf --no-pager')
    if op_stat == 0:
        op.state('running')
    else:
        op.state('stopped')
except Exception as e:
    op.state('error')

try:
    if "tor" in (p.name() for p in psutil.process_iter()):
        tor.state('running')
    else:
        tor.state('stopped')
except Exception as e:
    tor.state('error')

try:
    if "tgen" in (p.name() for p in psutil.process_iter()):
        tgen.state('running')
    else:
        tgen.state('stopped')
except Exception as e:
    tgen.state('error')

try:
    nm = nmap.PortScanner()
    nm.scan('127.0.0.1', '8080')
    port_proxy = nm['127.0.0.1']['tcp'][8080]
    if port_proxy['state'] == 'open':
        port_status.state('open')
    else:
        port_status.state('closed')

except Exception as e:
    port_status.state('error')

write_to_textfile("./metrics", registry=registry)