lokinet/contrib/munin/lokinet-munin.py

80 lines
2.7 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
#
# requires python3-requests
#
import requests
import json
2019-05-27 11:22:48 +00:00
import os
import sys
2019-05-27 11:08:59 +00:00
from collections import defaultdict as Dict
from requests.exceptions import RequestException
def jsonrpc(method, **args):
return requests.post('http://127.0.0.1:1190/', data=json.dumps(
2019-05-27 11:08:59 +00:00
{'method': method, 'params': args, 'id': 'munin'}), headers={'content-type': 'application/json'}).json()
2019-05-27 12:00:02 +00:00
def exit_sessions_main():
if len(sys.argv) == 2 and sys.argv[1] == 'config':
print("graph_title lokinet exit sessions")
print("graph_vlabel sessions")
print("graph_category network")
print("graph_info This graph shows the number of exit sessions on a lokinet exit")
2019-05-27 12:00:02 +00:00
print("_exit_sessions.info Number of exit sessions")
print("_exit_sessions.label sessions")
else:
count = 0
try:
j = jsonrpc("llarp.admin.exit.list")
count = len(j['result'])
except RequestException:
pass
2019-05-27 12:00:02 +00:00
print("_exit_sessions.value {}".format(count))
2019-05-27 12:00:02 +00:00
def peers_main():
if len(sys.argv) == 2 and sys.argv[1] == 'config':
print("graph_title lokinet peers")
2018-11-20 14:40:31 +00:00
print("graph_vlabel peers")
print("graph_category network")
print("graph_info This graph shows the number of node to node sessions of this lokinet router")
2019-05-27 12:00:02 +00:00
print("_peers_outbound.info Number of outbound lokinet peers")
print("_peers_inbound.info Number of inbound lokinet peers")
print("_peers_outbound.label outbound peers")
print("_peers_inbound.label inbound peers")
print("_peers_clients.info Number of lokinet client peers")
print("_peers_clients.label lokinet client peers")
else:
2019-05-27 11:08:59 +00:00
inbound = Dict(int)
outbound = Dict(int)
clients = Dict(int)
try:
j = jsonrpc("llarp.admin.link.neighboors")
for peer in j['result']:
if peer["svcnode"]:
if peer["outbound"]:
outbound[peer['ident']] += 1
else:
inbound[peer['ident']] += 1
else:
clients[peer['ident']] += 1
except RequestException:
pass
2019-05-27 12:00:02 +00:00
print("_peers_outbound.value {}".format(len(outbound)))
print("_peers_inbound.value {}".format(len(inbound)))
print("_peers_clients.value {}".format(len(clients)))
if __name__ == '__main__':
2019-05-27 11:22:48 +00:00
exe = os.path.basename(sys.argv[0]).lower()
2019-05-27 11:34:28 +00:00
if exe == 'lokinet_peers':
2019-05-27 12:00:02 +00:00
peers_main()
2019-05-27 11:34:28 +00:00
elif exe == 'lokinet_exit':
2019-05-27 12:00:02 +00:00
exit_sessions_main()
else:
print(
2019-05-27 11:34:28 +00:00
'please symlink this as `lokinet_peers` or `lokinet_exit` in munin plugins dir')