1
0
mirror of https://github.com/librenms/librenms-agent.git synced 2024-05-09 09:54:52 +00:00
librenms-librenms-agent/snmp/supervisord.py
2022-01-13 18:18:57 +01:00

83 lines
1.8 KiB
Python

#!/usr/bin/env python
import json
import sys
from supervisor import xmlrpc
if sys.version_info.major < 3:
from xmlrpclib import ServerProxy
else:
from xmlrpc.client import ServerProxy
unix_socket_path = "/var/run/supervisor/supervisor.sock"
error = 0
error_string = 0
processes = []
total = {
"STOPPED": 0,
"STARTING": 0,
"RUNNING": 0,
"BACKOFF": 0,
"STOPPING": 0,
"EXITED": 0,
"FATAL": 0,
"UNKNOWN": 0,
}
try:
server = ServerProxy(
"http://127.0.0.1",
transport=xmlrpc.SupervisorTransport(None, None, "unix://" + unix_socket_path),
)
state = server.supervisor.getState()["statename"]
if state != "RUNNING":
error = 1
error_string = "Not running"
for process in server.supervisor.getAllProcessInfo():
if process["statename"] == "RUNNING":
uptime = process["now"] - process["start"]
else:
uptime = process["stop"] - process["start"]
uptime = 0 if uptime < 0 else uptime
processes.append(
{
"name": process["name"],
"group": process["group"],
"statename": process["statename"],
"state": process["state"],
"error": process["spawnerr"] if process["spawnerr"] else None,
"start": process["start"],
"stop": process["stop"],
"now": process["now"],
"uptime": uptime,
}
)
total[process["statename"]] += 1
except Exception as e:
error = 1
error_string = repr(e)
print(
json.dumps(
{
"version": 1,
"error": error,
"errorString": error_string,
"data": {
"total": total,
"processes": processes,
},
}
)
)