Service monitoring with Monitorr


Monitorr

As part of my dashboard project (link coming soon) I was looking for a lightweight self hosted monitoring solution for my home network services. I found Monitorr and decided it was a perfect fit for my needs. It’s simple and it doesn’t have any frills, which is exactly what I wanted.

Read more

pfSense graphs in Grafana

Using Grafana with pfSense

Grafana Dashboard

Update: 2018/09/13
pfSense has a plugin for telegraf which can be installed from the gui. I recommend this method rather than what I figured out below. I’m leaving these notes for manual installation reference.

2017/12/09
I put this guide together using information from various other blogs. This is current as of December 2017 and using pfSense 2.4.2. For this tutorial, you’ll need your IP or hostname of your influxdb data source and your username and password.

The data flow is as follows:

pfSense -> Telegraf (gather metrics) -> InfluxDB (store metrics) -> Grafana (render graphs)

Read more

NZBGet MySQL Extension Script

I wrote a simple plugin for NZBGet that inserts download history into a MySQL database. Having my download list in a database makes operations on the data easier than groking text logs.

I wanted to display my most recent downloads on a Grafana Dashboard:
Table of downloads

To use simply copy the Mysql-Log.py script into your NZBGet/scripts directory. In NZBGet, select settings and set the hostname of your MySQL instance.

You can download the plugin on github

Read more

Using curl with the Pihole API

I couldn’t find any quick references about accessing the Pihole API so I created this page.

Pihole is a great app for blocking internet advertising that was originally designed to be run on a raspberry pi. It blocks known advertisers’ domains at the DNS level by effectively null routing requests destined to serve ads. It can be run on VMs, Raspberry Pis and bare metal servers.

Here are the steps to access the pihole’s rest api. I’m using curl in this example, but you can integrate it with OpenHAB or any other system that can talk REST.

Step 1: Obtaining the web password

Most of the useful API endpoints the pihole provides wisely require authentication. After searching around the net I found that I could pass &token=A_VALID_SESSION_TOKEN to authenticate to the pihole for a session. Unfortunately, this is a temporary auth token and wasn’t suitable for my needs. After more digging, I found the gem I needed: &auth=WEBPASSWORD. Sounds great, but where do I obtain this password? You simply log onto your pihole instance or server and run:

1
2
sudo cat /etc/pihole/setupVars.conf | grep PASSWORD
17d1ce58eb420998d69dfd2850e7c639706715335d78447f78723489df78234

Read more

NZBGet ElasticSearch Plugin

I wrote a simple plugin for NZBGet that inserts download history into an ElasticSearch cluster (or node). It uses API calls rather than parsing filesystem logs. I wanted a quick way to just insert the data so I created this script.

Simply copy the ESLog.py script into your NZBGet/scripts directory. In NZBGet, select settings and set the hostname of your ElasticSearch instance.

You can download the plugin on github

Read more

Speeding up Ansible Playbook runs

Ansible is a great tool for configuration management but because of the way it’s designed a common complaint is that it’s not as fast as other tools like Salt, Chef or Puppet. This is because Ansible doesn’t have an agent that listens (although it can) on a host and uses a different type of deployment methodology that is based on SSH. This post isn’t about the pros and cons of each tool, but rather about ways to improve upon Ansible’s default configuration values. By default Ansible ships with very conservative default values. This is smart in my opinion because it offers greater compatibility out-of-the-box. Here I highlight some safe adjustments that can be made to the default configuration for improved performance (speed!)

Real World Playbook Test

For this test I’m using a real-world playbook that I use in my homelab when provisioning a new CentOS VM. It configures some basic things (hostname, ssh keys, etc), installs common packages/utilities and tunes some OS configurations.

Read more

Pfsense WAN with Cellular LTE/4G

Using pfsense for WAN Redundancy with Cellular LTE/4G

I work from home a lot and I need reliable internet connectivity to workplace. As a result, I decided to implement a failover WAN connection into my firewall. I use pfSense as my firewall which combines power and flexibility with ease of configuration.

The Hardware: NetGear LB2120 LTE Modem

While researching options, I decided on the Netgear LB2120 4G LTE modem since it has Gigabit port(s) and can be used with external antennae.

Netgear LB2120

Read more

Dynamic DNS via Digital Ocean API

This is a quick tutorial about setting up a simple shell script that runs periodically to update a DNS record on the internet with the IP address of your network. If you’ve ever wanted to have myhome.mydomain.com always updated with your home IP address, this is one way you can do it. There are paid and free services that offer this functionality, but I choose to use this method because it gives me ultimate flexibility over my domain.
This tutorial assumes you have your own Top Level Domain (TLD) and that you’ve configured it to use Digital Ocean as the authoritative DNS for it. Here, I’ll use “example.com” as the top level domain.

Generate a Personal Access Token

Log in to Digital Ocean and click on API from the top Menu. Click the Generate New Token button and give it a name. The name is not parsed, it’s just for your own reference. I like to give it something descriptive to my application. For this example, I’ll use MyDNS. Be sure to check the box next to Write so we can update the records using this API Key.

Once you have the API Key, save it somewhere for reference. It’s one of the 3 variables we’ll need to update in the update_do_dns.sh script.

The API Key will look something like this:
fe3aeda96b7wer8wer1e6bb5erae528sdf3a6120dfrf7e492bwer6343fsdf

Read more

Quieting a Dell R710

I have a Dell R710 rev. II that I use in my home office lab (homelab) running ESXi 6.5. The R710 sits in my office where we work from home. Normally the hum of the R710 fans isn’t terribly bothersome - the 5 fans it houses run at around 3,800 RPM each. The noise is definitely noticeable so I did a little bit of digging into ways I could quiet it down. After looking into replacing the fans with quieter ones I found that I could override the system control of the fans and silence them that way. While I have to monitor the onboard temperatures more closely when disabled, I’ve found little downside to doing so when I’m in there. Here’s how to do it:

The commands used below assume default username / password of root / calvin. Hopefully you’ve changed the default password so substitute yours where applicable.

Read more