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