A Status Board for your Crontab10 Nov 2012
Over the past week I threw together a “status board” that I’ve hooked into my crontab. Since I don’t log into my linux server on a daily basis to check logs/mail output and i don’t always give my full attention to automated messages that come to my main mailbox, a status board is a good compromise. If everything is in order I can review in a quick glance, if there is an error i know where i need to look into later. Simple highlighting of errored jobs stands out in a different color.
For me this is also a learning exercise in Go (http://golang.org/) so the code could be vastly improved. Essentially, what we are doing is taking command line options to either update a status or output the “database” to html. The database is just a simple json file living in ~/.status. I left what is meant by “object” and “status” pretty vague to keep this tool flexible for future use - both are just strings. When the html output is dumped it will highlight in green for a status of “Success” and red for “Fail”. This could easily be extended to highlight different colors for different status, do a regex instead of a straight match, etc.
Integrating Into Crontabs and Scripts
To integrate into my crontabs i created a simple “if” wrapper that assumes an return code of 0 is good and anything else is bad. Scripts are wrapped the same way
<code>00 06 * * * if someCommandThatReturnsAnErrorCode; then statusboard update "My Thing" "Success"; else statusboard update "My Thing" "Fail"; fi</code>
#!/bin/sh tar czf /tmp/mytar.tar.gz /myfiles TAR_RESULT=$? if [ ! $TAR_RESULT ] then statusboard update "Tar Operation" "Fail" else statusboard update "Tar Operation" "Success" fi
Statusboard - https://github.com/zpeters/GoStatusBoard
Many improvements can (and probably should) be made to the code:
Use a html template instead of hard-coded html
regex scan strings for success or failure instead of hard-coded strings
include a link for STDOUT and STDERR output of scripts that failed for review right in the html file
Thank you for reading I hope you’ve enjoyed and find this Go Statusboard helpful