Build a Homelab Dashboard: Part 7, pfSense
After a small break, I’m ready to continue the homelab dashboard series! This week we’ll be looking at pfSense statistics and how we add those to our homelab dashboard. Before we dive in, as always, we’ll look at the series so far:
- An Introduction
- Organizr Continued
- Telegraf Introduction
- Grafana Introduction
pfSense and Telegraf
If you are reading this blog post, I’m going to assume you have at least a basic knowledge of pfSense. In short, pfSense is a firewall/router used by many of us in our homelabs. It is based on FreeBSD (Unix) and has many available built-in packages. One of those packages just happens to be Telegraf. Sadly, it also happens to be a really old verison of Telegraf, but more on that later. Having this built in makes it very easy to configure and get up and running. Once we have Telegraf running, we’ll dive into how we visualize the statistics in Grafana, which isn’t quite as straight forward.
Installing Telegraf on pfSense
Installation of Telegraf is pretty easy. As I mentioned earlier, this is one of the many packages that we can easily install in pfSense. We’ll start by opening the pfSense management interface:
For most of us, we’re looking at our primary means to access the internet, and as such I would recommend verifying that you are on the latest version before proceeding. Once you have completed that task, you can move on to clicking on System and then Package Manager:
Here we can see all of our installed packages. Next we’ll click on Available Packages:
If we scroll way down the alphabetical list, we’ll find Telegraf and click the associated install button:
Finally, click the Confirm button and watch the installer go:
We should see a success message:
Now we are ready to configure Telegraf. Click on the Services tab and then click on Telegraf:
Ensure that Telegraf is enabled and add in your server name, database name, username, and password. Once you click save, it should start sending statistics over to InfluxDB:
pfSense and Grafana
Now that we have Telegraf sending over our statistics, we should be ready to make it pretty with Grafana! But, before we head into Grafana, let’s make sure we understand which interface is which. At the very least, pfSense should have a WAN and a LAN interface. To see which interface is which (if you don’t know offhand), you can click on Interfaces and then Assignments:
Once we get to our assignments screen, we can make note of our WAN interface (which is what I care about monitoring). In my case, its em0:
Now that we have our interface name, we can head over to Grafana and put together a new dashboard. I’ve started with a graph and selected my TelegrafStats datasource, my table of net, and filtered by my host of pfSense.Hyperion.local and my interface of em0. Then I selected Bytes_Recv for my field:
If you’re like me, you might think that you are done with your query. But, if you take a look at the graph, you will notice that you are in fact…not done. We have to use some more advanced features of our query language to figure out what this should really look like. We’ll start with the derivative function. So why do we need this? If we look at the graph, we’ll see that it just continues to grow and grow. So instead of seeing the number, we need to see the change in the number over time. This will give us our actual rate, which is what the derivative function does. It looks at the current value and provides the difference between that value and the value prior. Once we add that, we should start to see a more reasonable graph:
Our final query should look like this:
Next we can go to our axes settings and set it to bytes/sec:
Finally, I like to set up my table-based legend:
Now let’s layer in bytes_sent by duplicating our first query:
And our final bandwidth graph should look like this:
Confirming Our Math
I spent a lot of time making sure I got the math right and the query, but just to check, here’s a current graph from pfSense:
This maxes out at 500 megabits per second. Now let’s check the same time period in Grafana:
If we convert 500 megabits to megabytes by dividing by 8, we get 62.5. So…success! The math checks out! This also tells me that my cable provider upgraded my from 400 megabit package to 500 megabit.
You should be able to follow my previous guide for CPU statistics. One thing you may notice is that there are no memory statistics for your pfSense host. This is a bug that should be fixed at some point, but I’m on the latest version and it still hasn’t been fixed. I’ve yet to find a decent set of steps to fix it, but if I do, or it becomes fixed with a patch, I’ll update this post! Until next time…when we check out FreeNAS.
You have a great blog, and I love this series! It’s very well put together, and easy to read…I can’t wait for the remaining sections!
Thanks! I have another post coming this week on FreeNAS! Also a few posts coming on home lab diagrams.
thanks, it was very helpful