hmm
This commit is contained in:
Executable
+47
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Collect server runtime stats (uptime, top, cgroup, mounts) and return as JSON."""
|
||||
|
||||
import json
|
||||
import subprocess
|
||||
|
||||
|
||||
def cmd(args, splitlines=False):
|
||||
try:
|
||||
result = subprocess.run(
|
||||
args,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
timeout=30,
|
||||
)
|
||||
out = (result.stdout + result.stderr).strip()
|
||||
|
||||
if splitlines:
|
||||
return out.splitlines()
|
||||
|
||||
return out
|
||||
|
||||
except Exception as e:
|
||||
return f"ERROR: {e}"
|
||||
|
||||
|
||||
def read_file(path):
|
||||
try:
|
||||
with open(path) as f:
|
||||
return f.read().strip().splitlines()
|
||||
except FileNotFoundError:
|
||||
return None
|
||||
|
||||
|
||||
def main():
|
||||
stats = {}
|
||||
|
||||
stats["uptime"] = cmd(["uptime"])
|
||||
stats["top"] = cmd(["sh", "-c", "top -b -n 1 | head -n 3"], splitlines=True)
|
||||
stats["cgroup"] = read_file("/proc/self/cgroup")
|
||||
stats["mounts"] = cmd(["mount"], splitlines=True)
|
||||
|
||||
print(json.dumps(stats, indent=2))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user