mirror of
https://github.com/librenms/librenms-agent.git
synced 2024-05-09 09:54:52 +00:00
Add supervisord script (#392)
This commit is contained in:
82
snmp/supervisord.py
Normal file
82
snmp/supervisord.py
Normal file
@@ -0,0 +1,82 @@
|
||||
#!/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,
|
||||
},
|
||||
}
|
||||
)
|
||||
)
|
Reference in New Issue
Block a user