Inspiration
If you want to monitor the CPU and RAM usage of a server running on Amazon EC2, the official way to do it is pretty complicated and it locks you into using CloudWatch.
Voice Resource Monitor can be installed with a single console command and a single voice command.
What it does
- Connect to your EC2 instances and run this script:
wget -O - https://gitlab.com/mac-chaffee/voice-resource-monitor/raw/master/server/install.sh | bash
This will install a super efficient Golang server I made (takes less than 1 MB of RAM).
Say "Alexa, ask VRM to monitor 34.227.15.5 on port 8000" for each server.
Now you can say "Alexa, ask VRM how my servers are doing" and she will tell you the RAM and CPU usage of each of your servers.
Alexa can also add, remove, and list which servers she's monitoring for you.
How I built it

The two main components are 1) the Alexa Skill written in Python that runs on Lambda, and 2) the Golang server that runs on all your EC2 instances. This was my first experience with Go. The Alexa skill uses boto3 to save your server IP addresses and port numbers in DynamoDB (since Alexa has not persistent state). It also makes the API call to the Golang server.
The Golang server listens for connections on a port of your choosing and when called, will serve up a bit of JSON containing the current CPU and RAM (calculated directly from sysinfo(2) and /proc/stat)
Challenges I ran into
Alexa does not support reading URLs, so I had to use IP addresses. Sometimes that means it takes more than one try to get her to recognize a long string of numbers. If I had more time, I would make a web frontend that would update DynamoDB after you fill in a simple form.
Log in or sign up for Devpost to join the conversation.