Using Zabbix and Ntfy to monitor production software status for free

I wanted to share a couple of tools we have been using lately that have been helpful in keeping us notified when we are having issues with our production software or hardware.

The first tool is Zabbix.

Zabbix is a powerful, open-source monitoring tool designed to track the performance and availability of various resources, including networks, servers, applications, and cloud services. It provides real-time monitoring and alerting, allowing you to quickly identify and resolve issues.

We use it to track the status of our production machines – hard drive space, memory used, etc., but we also use it to track the online status of software like Cronicle, Bitfocus Companion, etc. These tools are vital to the success of our services, so I want to know the instant they go down. It’s rare that they do, but I still need to know as soon as possible, and preferably before something fails because it’s down.

At my church, we have a server set up to run virtual servers through a hypervisor, and our IT department set up a simple linux virtual server for me. On that server, I run several Docker containers for software like Cronicle, Companion, Tally Arbiter ;), and more. I manage all of our containers through Portainer which is a GUI for Docker.

So – using Zabbix, I can create a host for any of my computers and set up things to monitor within those computers. For most of these, it’s just simple web checks. I can have Zabbix go check to see, for example, if the Companion web interface loads once a minute. If it doesn’t load, I can assume that Companion is no longer running, for whatever reason – the computer is off, the software crashed or was closed, etc.

Zabbix will then automatically report a problem with the service within the user interface. That’s great – but what I really need is to be notified on my phone. This is where the Ntfy service comes in.

Ntfy is an open-source notification service that lets you send real-time alerts. You can get notifications on your phone, computer, or browser. We use it with Cronicle whenever a job fails, error chaining on the job will automatically send out a Ntfy alert to my phone. I also use it for things like letting me know a recorder has started – anything that I just want to know about but don’t need or want to go specifically look at a device to know the status. Ntfy has a Companion module (I wrote it) and I also made a Cronicle plugin for it.

Zabbix can be configured to send alerts to a variety of media types – email, Discord, Slack, SMS, you name it. It comes automatically with several types. Someone in the community created a Ntfy type. I forked it and added additional support options, available here: https://github.com/josephdadams/zabbix-ntfy

So with these two tools, I am able to know instantly when a service has gone down, by receiving a push notification to my phone.

Here is a video that explains how to set up a web scenario in Zabbix and get pinged by Ntfy:

Maybe this will help you monitor your equipment as well! Leave me a comment with what you might use it for.

10 thoughts on “Using Zabbix and Ntfy to monitor production software status for free”

  1. Hi Joseph! Thanks for sharing this application. We use Companion on multiple machines and run Cronicle to schedule tasks. I setup Zabbix and managed to get it up and running to a point where I receive a notification on the dashboard that there is a problem. The part where I receive a notification on Ntfy isn’t working. In Zabbix its showing that the alert was Sent to Ntfy but I don’t receive a notification on Ntfy. When I send $ curl -d “Hi” ntfy.sh/myname-zabbix from the Zabbix server I do get the notification. Do you have any idea what I’m doing wrong?

      1. I get an Error when I test the Media type ntfy.sh.

        00:00:00.000 [Debug] [ ntfy Webhook ] Executed with params: {“Message”:”{ALERT.MESSAGE}”,”Nseverity”:”{EVENT.NSEVERITY}”,”Password”:””,”Subject”:”{ALERT.SUBJECT}”,”Token”:””,”Topic”:”{$ALERT.SENDTO}”,”URL”:”{$NTFY.URL}”,”Username”:””}
        00:00:00.005 [Warning] [ ntfy webhook ] notification failed: Error: cannot get URL: Couldn’t resolve host name.

        I can ping to google.com for example from the zabbix server so DNS is set up correctly.

          1. Value for Marco {$NTFY.URL} = https://ntfy.sh

            [cid:image001.png@01DADDA8.35F90F50]

            [cid:image002.png@01DADDA8.35F90F50]

            Kind regards,

            Chiel van Es
            Technical director

            EGHW
            http://www.eghw.nlhttp://www.eghw.nl/

            [cid:image001.jpg@01D6F8B6.5DAF1560]

            Dit bericht is uitsluitend bestemd voor de geadresseerde(n) en kan vertrouwelijke informatie bevatten. Indien dit bericht bij vergissing bij u terechtgekomen is, wilt u ons hierover dan berichten. Gelieve in dat geval het bericht te vernietigen, de inhoud ervan niet te gebruiken en niet aan derden ter kennis te brengen.

    1. Hi Joseph, I found what is causing the problem. In the Media type parameter for Topic = {$ALERT.SENDTO} so you have to create a Macro for it.

      SOLUTION = Delete the $ character or create a Macro {$ALERT.SENDTO} value: (add to README.md to add a Macro)

      I made a comment on the GitHub repositorie. Hopefully someone can adjust it.

      Thanks again for share this!

Leave a Reply to Joseph Adams (techministry.blog) Cancel reply

Your email address will not be published. Required fields are marked *