I've been monitoring my EdgeRouter 4 with SNMP Exporter for a while now. It works, but its a pain to manage the MIBs and having a separate service to maintain is annoying.
So lets try running node exporter on the EdgeRouter.
SSH into the router and install node exporter.
NOTE: Reader Travis reports that the Edgerouter X requires the "mipsle" binary to run.
https://github.com/prometheus/node_exporter/releases/download/v1.0.1/node_exporter-1.0.1.linux-mipsle.tar.gz
# enter configure mode
configure
# check the CPU architecture
lscpu
# download the correct executable, with the EdgeRouter 4 I want the MIPS64 version
curl https://github.com/prometheus/node_exporter/releases/download/v0.18.1/node_exporter-0.18.1.linux-mips64.tar.gz -L --output node_exporter-0.18.1.linux-mips64.tar.gz
tar -xf node_exporter-0.18.1.linux-mips64.tar.gz
cd node_exporter-0.18.1.linux-mips64
# test the executable
./node_exporter
sudo mkdir /usr/bin/node-exporter
sudo cp node_exporter /usr/bin/node-exporter/node_exporter
# clean up the mess
cd ..
rm node* -R
You should see "Listening on :9100" when you start node exporter
The next step is to create a node exporter service.
sudo vi /lib/systemd/system/node_exporter.service
sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter
[Unit]
Description=NodeExporter
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/node-exporter/node_exporter --collector.systemd --collector.logind --no-collector.bonding --no-collector.hwmon --no-collector.infiniband --no-collector.ipvs --no-collector.mdadm --no-collector.nfs --no-collector.nfsd --no-collector.powersupplyclass --no-collector.zfs --no-collector.xfs --no-collector.thermal_zone --no-collector.schedstat --no-collector.rapl --no-collector.btrfs --no-collector.bcache --no-collector.cpufreq --no-collector.edac
Restart=on-failure
[Install]
WantedBy=multi-user.target
Once your service is setup, create a job in Prometheus to scrape the metrics.
Node Exporter vs SNMP Exporter
Network



# Node Exporter
sum(irate(node_network_receive_bytes_total{device!="lo"}[1m]))
# SNMP Exporter
sum(irate(ifHCInOctets[1m]))