In the chaotic symphony of a sysadmin's day-to-day operations, there are instances when servers, for various reasons, decide to act a fool. This could be due to system instability or the server simply requiring a rest. Enter PRISM, a server management tool I developed to proactively monitor my servers, ensure they are performing, and, when necessary, orchestrate their recovery.
Crafted in Python, PRISM transcends the functionality of a basic ping tool. Its abilities include server
availability checks, IPMI connectivity verification, and even the capability to power cycle your servers through their
iDRAC interfaces. Coupled with Discord notifications, it keeps you informed of your servers' statuses and any actions
PRISM takes on your behalf.
The aspiration behind PRISM was to streamline and automate server management. By mitigating the need for
constant manual intervention, it allows me to concentrate on tasks that demand my direct attention, rather than
continually reviving unresponsive servers.
Diving deeper into PRISM's inner workings, the script initiates by importing necessary libraries and loading environment variables from a .env file. Subsequently, it establishes a logger to document messages in the console and a designated file. It then defines two crucial functions, one to evaluate server reachability, and the other to examine the IPMI connectivity of the iDRAC interface. Upon initiation, the script conducts an immediate status check and then proceeds into a loop, consistently examining the servers every minute.
Deploying PRISM is designed to be simple, thanks to Docker containers, which prevent any compatibility issues or complex runtime environment setup. Follow the steps below to get PRISM up and running on your system.
.env
file with your configuration settings and save it in the same directory as your docker-compose file. Use the provided .env.example
file for reference.docker-compose up -d
PRISM is an evolving project, and I have several exciting plans to further improve its features and usability. Here are some things I'm working on:
Stay tuned for these updates!