When a server feels off, I used to type the same five commands in a different order each time: df -h, free -m, uptime, systemctl --failed, and a guess about inodes. Half the time I forgot one, and the culprit was exactly that one.

So I wrapped them in a single Python file with no dependencies. It reads /proc, checks each real mounted disk (space and inodes), memory based on what is actually available rather than what the cache holds, load per CPU, failed systemd units, a reboot-required flag, and pending apt upgrades. Findings are sorted worst first and end with a one-line verdict.

The part I care about most is the exit code: 0 for fine, 1 for warnings, 2 for critical. That makes it usable in cron or a deploy script without parsing text. It is strictly read-only, so running it on a production box is low risk.

$ python3 health_report.py --skip-updates [WARN] reboot: reboot required [OK ] memory: 36% used (1402 MiB of 3896 MiB, available counts cache) [OK ] disk /: 59% used, 15.8 GiB free [OK ] failed units: none Overall: WARNINGS 

Limits worth knowing: it checks only the local machine, the updates check uses the local apt cache (it does not refresh it), and it says nothing about your applications, certificates or backups. I only tested it on Ubuntu.

It ships as a Hermes skill called server-health-report, so an agent can run it and explain the findings, but the script works fine on its own.

Skill (MIT): https://github.com/RobinBeraud/hermes-skills/tree/main/devops/server-health-report
All skills: https://github.com/RobinBeraud/hermes-skills

This post was written with AI assistance and reviewed through automated checks.