Ubiquiti Networks社のルータ EdgeRouter X (ER-X)を数年前に購入したものの放置したままだったので、 今回 L2 スイッチとして使ってみた。 ER-X上ではDebianベースのOSで動いているため、Prometheus用に Node exporter のような監視プログラムを使うことができる。 Prometheus自体はRaspberry Pi上で動かした。 ElastiFlowも動かしたかったが、Raspberry Piのスペックでは厳しそうだった。

Prometheus と Grafana の導入

Raspberry PiにPrometheusとGrafnaをインストールする。 Prometheusはメトリクスを収集するために、GrafanaはPrometheusで収集したメトリクスをウェブ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

Node exporter の導入

ER-XにNode exporterをインストールする。 CPU、メモリ、ディスク、ネットワークに関連するメトリクスを自動で収集してくれる。

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

Blackbox exporter の導入

自宅内外の適当なホストに対して常時Pingを打ち続けることで外部監視をしたい。 Raspberry Pi上にBlackbox exporterをインストールする。

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