Raven Sentry client for Bash.
Logs error if one of your commands exits with non-zero return code and produces simple traceback for easier debugging. It also tries to extract last values of the variables visible in the traceback. Environment variables and stderr output are also included.
Bash does not provide much of the debugging capabilities known from the higher level languages so the capabilities are somewhat limited. However it works just fine for simple bash scripts used for deployment, monitoring, starting/stopping services, etc.
This script is currently in working beta. Use at your own risk. Any contributions are highly appreciated.
pip install raven-bash- Create the file
/etc/raven-bash.confwith the following content:
[DEFAULT]
# replace with your DSN
SENTRY_DSN = https://key:secret@your_sentry_domain/project_idAdditionally you can use SENTRY_DSN environment variable which will override any settings defined in configuration file.
- Add
source raven-bashto the beginning of your bash scripts, e.g.:
#!/bin/bash
source raven-bash # sentry reporting
echo "Hello world!"
echo "This will produce an error" | grep "success"Scripts you include using source or . will be monitored automatically. Any other scripts you execute won't be monitored unless you add source raven-bash to them.
This script works only with set -e (enabled automatically) bash option which means that any command returning non-zero return code will produce an error and stop the execution. If some of your commands is returning non-zero return code and it is not an error you can prevent this from happening for example by piping it's output to | true.
When running your scripts as cron jobs please be aware of possibly different PATH settings. source raven-bash will not work with incorrect PATH. This can be fixed by specifying environment variable in crontab, eg.:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h dom mon dow command
# your commandsWill be hopefully fixed in one of the future releases.
- stderr output is discarded when your program exits correctly
- "traceback" works only for the last included file
- Unrelated package versions are added to the request (this is due to
raven-pythonwhich collects additional data from Python interpreter)
