I purchased Ubiquiti Networks’ router EdgeRouter X (ER-X) a few years ago but left it unused, so this time I tried using it as an L2 switch. Since ER-X runs on a Debian-based OS, monitoring programs like Node exporter for Prometheus can be used. Prometheus itself was run on a Raspberry Pi. I wanted to run ElastiFlow too, but it seemed too demanding for the Raspberry Pi’s specs.
Installing Prometheus and Grafana
Install Prometheus and Grafana on the Raspberry Pi. Prometheus is used to collect metrics, and Grafana is used to check the metrics collected by Prometheus from a web UI.
wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
echo "deb https://packages.grafana.com/oss/deb stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
apt install prometheus grafana -y
sudo systemctl start prometheus
sudo systemctl start grafana-server
Installing Node exporter
Install Node exporter on ER-X. It automatically collects metrics related to CPU, memory, disk, and network.

curl -L https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-mipsle.tar.gz -o node_exporter.tar.gz
tar xf ./node_exporter.tar.gz
sudo mv ./node_exporter-1.0.1.linux-mipsle/node_exporter /usr/bin/node_exporter
cat << EOF | sudo tee /lib/systemd/system/node_exporter.service
[Unit]
Description=NodeExporter
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/node_exporter
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl start node_exporter
Installing Blackbox exporter
I want to perform external monitoring by continuously pinging arbitrary hosts inside and outside my home. Install Blackbox exporter on the Raspberry Pi.

curl -L https://github.com/prometheus/blackbox_exporter/releases/download/v0.17.0/blackbox_exporter-0.17.0.linux-armv7.tar.gz -o blackbox_exporter.tar.gz
tar -xzf blackbox_exporter.tar.gz
sudo cp blackbox_exporter /usr/bin
sudo cp blackbox.yml /etc/
cat << EOF | sudo tee /lib/systemd/system/blackbox_exporter.service
[Unit]
Description=BlackboxExporter
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/blackbox_exporter --config.file=/etc/blackbox.yml
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
cat << EOF | sudo tee -a /etc/blackbox.yml
icmp_ipv4:
prober: icmp
icmp:
preferred_ip_protocol: ip4
EOF
cat << EOF | sudo tee -a /etc/prometheus/prometheus.yml
- job_name: 'blackbox'
metrics_path: /probe
params:
module: [icmp_ipv4]
static_configs:
- targets:
- localhost
- 192.168.3.1
- 192.168.3.200
- 192.168.3.201
- 192.168.3.202
- google.co.jp
- yahoo.co.jp
relabel_configs:
- source_labels: [__address__]
target_label: __param_target
- source_labels: [__param_target]
target_label: instance
- target_label: __address__
replacement: 127.0.0.1:9115
EOF
sudo systemctl daemon-reload
sudo systemctl start blackbox_exporter
sudo systemctl restart prometheus