Skip to content

Monitor logs live and take actions with swatchdog

swatchdog was originally called swatch. I'll call it swatch in this article.

So, swatch is a very simple process that can monitor a log file live, and take actions if a string is found.

It's an ideal situation if you don't have the resources to run a full fledged monitoring solution such as Graylog.

On Fedora, install the package:

sudo dnf install swatch

Create a configuration file .swatchrc, for example:

watchfor /success/
        echo green
        exec bash /opt/swatch/notify.sh $_

watchfor /failure/
        echo red
        exec bash /opt/swatch/notify.sh $_

Between slashes is the regexp you want to match.

The echo line will output the matched log line and display it in the specified color.

The exec line contains $_. $_ contains the log line, so as you can see you can execute binaries or scripts and pass the log line as an argument to it.

Now start swatch:

swatch -c ~/.swatchrc -t /var/log/myapp.log

This is the expected output as soon as something gets matched:

*** swatch version 3.2.3 (pid:1) started at Sun Jan 12 18:59:57 UTC 2020

[2020-01-12 19:00:09] blah is a success

The color of the output would be green.

You can run swatch as a daemon with the option --daemon.

Conclusion:

swatch is a fairly simple and lightweight tool if you need to monitor events without installing a resource hungry monitoring solution.