Integrating NetBox and PRTG using webhooks

February 25, 2022

NetBox is a popular DCIM, and is often used as the “Source of Truth” for your network. PRTG is a monitoring platform, often used for network monitoring (although they have sensors for plenty of other devices). This post will outline some ways of integrating NetBox and PRTG.

Setup requirements

In this post I am using:

Custom Field in NetBox

In NetBox I have a number of sites. For this example I have a site named “PRTG Site” in NetBox, as well as in PRTG. To “connect” these two I have to create a field in NetBox where I can input the PRTG ID.

So I create a custom field named “PRTG ID” in NetBox.

Custom Field PRTG ID

In PRTG I create my corresponding group:

Group in PRTG

And in NetBox I add the PRTG ID to my site:

Add the PRTG ID to NetBox

Now I need to make sure any update in NetBox is reflected in PRTG.

Webhook for PRTG updates

The NetBox site has a number of statuses available. A site can be “Active”, “Planned”, “Staging”, “Decommissioning”, and “Retired”. In this example I expect the site to be monitored in PRTG when the status is “Active”. Any other status I expect the site to not be monitored in PRTG.

To achieve this I need to configure a webhook in NetBox. This will fire on any change on a NetBox site, and triggering a pause/resume in PRTG depending on the status.

The PRTG API defines the URL for pausing/resuming an object. /api/pause.htm?id=objectid&action=1 resumes monitoring. /api/pause.htm?id=objectid&action=0 stops monitoring. All PRTG API calls require a username and passhash as well. So a simple webhook would look like this:

The configured webhook in NetBox

Note that using jinja2 code in the payload URL is a new feature of NetBox 3.2. Being able to create your URL from jinja2 code you can skip middleware having to “translate” the URL to a different URL. This can simplify your webhook configuration and administration.

Enabling/disabling monitoring in PRTG from NetBox

If I now change the NetBox site status from “Active” to “Planned”, I can check PRTG and see the site paused.

The paused site in PRTG

If you want to provide a message with the webhook you can add &pausemsg=youmessage to the webhook configuration.

The paused site in PRTG with a message

And I can resumed the monitoring again by setting the site status to “Active”.

The resumed site in PRTG

Summary

Using the new feature of templated payload URL in NetBox, integrating a system like PRTG becomes easy. This example is relatively simple. It would make more sense to add another custom field to the Site model where you can define the Monitoring status of a site. This way a site could still be in an “Active” status, but the monitoring could be stopped using a status in the custom field. Or, if you want to play with the new custom statuses in NetBox 3.2 you could add a “Stopped monitoring” status to the Site model.

562