summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/monit_device/monit_device.py25
1 files changed, 21 insertions, 4 deletions
diff --git a/tools/monit_device/monit_device.py b/tools/monit_device/monit_device.py
index 0f8d7e6..8b906c8 100755
--- a/tools/monit_device/monit_device.py
+++ b/tools/monit_device/monit_device.py
@@ -23,7 +23,6 @@ TITLE_VECTOR = ['PhyRXFrame', 'PhyRXBits', 'PhyRXMissed', 'PhyRXError',
'PhyRXNoBUF', 'PhyTXFrame', 'PhyTXBits', 'PhyTXError',
'UsrRXDrops', 'UsrTXDrops']
-
TITLE_MAP = {'PhyRXFrame': 'ipackets',
'PhyRXBits': 'ibytes',
'PhyRXMissed': 'imissed',
@@ -62,6 +61,11 @@ TITLE_MAP_PROMETHEUS = {
'usr_tx_drop_total': 'usertxdrop'
}
+TITLE_MAP_PKT_LATENCY_PROMETHEUS = {
+ "avg_latency_ns": "pkt_latency_avg_ns",
+ "jitter_ns": "pkt_latency_jitter_ns",
+}
+
def locate_vector_by_symbol(vector, symbol):
return [s for s in vector if s['symbol'] == symbol]
@@ -71,6 +75,17 @@ def list_all_phydev(json_fp):
return [s['symbol'] for s in json_fp['device']]
+def dump_pkt_latency_prometheus_output(json_fp):
+ resp = ''
+ try:
+ for item in TITLE_MAP_PKT_LATENCY_PROMETHEUS:
+ value = json_fp['pkt_latency'][item]
+ resp += '%s %u\n' % (item, value)
+ except KeyError:
+ resp = ''
+ return resp
+
+
def phydev_value_read(json_fp, str_device, str_item):
phydevs = locate_vector_by_symbol(json_fp['device'], str_device)
return phydevs[0]['stats']['accumulative'][str_item]
@@ -95,7 +110,6 @@ def trans_to_human_readable(value):
def dump_human_table(json_fp, devsym, is_human_number=0):
-
print('\nTime: %s, Physical device: %s' % (time.strftime('%c'), devsym))
table_phydev = prettytable.PrettyTable([' '] + TITLE_VECTOR,
@@ -129,6 +143,7 @@ def dump_human_table(json_fp, devsym, is_human_number=0):
table_phydev.add_row(SpeedList)
print(table_phydev)
+
# APM sendlog format
def dump_prometheus_output(json_fp, devsym):
@@ -140,7 +155,6 @@ def dump_prometheus_output(json_fp, devsym):
def setup_argv_parser(phydev_list):
-
parser = argparse.ArgumentParser(
description='Marsio ZeroCopy Tools -- Monitor NIC devices')
@@ -181,11 +195,13 @@ class PrometheusClient(BaseHTTPRequestHandler):
BaseHTTPRequestHandler.__init__(self, request, client_address, server)
def do_GET(self):
- if (self.path == '/metrics'):
+ if self.path == '/metrics':
resp = ''
+
for devsym in self.phydev_list:
resp += dump_prometheus_output(self.json_fp, devsym)
+ resp += dump_pkt_latency_prometheus_output(self.json_fp)
self.send_response(200)
self.send_header('Content-type', 'text/plain; version=0.0.4')
self.end_headers()
@@ -198,6 +214,7 @@ class PrometheusClient(BaseHTTPRequestHandler):
def prometheus_client_init(json_fp, phydev_list, prometheus_client_port):
HTTPServer(("", prometheus_client_port), PrometheusClient).serve_forever()
+
def main():
signal.signal(signal.SIGINT, sigint_handler)