Mit Prometheus und Grafana lässt sich recht schnell ein Dashboard für einen oder mehrere OpenWrt Router anfertigen.
Wir brauchen …
– Min. einen OpenWrt-Router mit 512KB freiem Speicherplatz
– Ein Server mit Docker (z.B. ein Raspberry Pi)
– Eine statische IP beim Docker-Server
– Auf allen Systemen Root-Rechte
1. OpenWrt vorbereiten
1. Folgende Pakete auf dem OpenWrt Router installieren
# opkg update # opkg install prometheus-node-exporter-lua \ prometheus-node-exporter-lua-nat_traffic \ prometheus-node-exporter-lua-netstat \ prometheus-node-exporter-lua-openwrt \ prometheus-node-exporter-lua-wifi \ prometheus-node-exporter-lua-wifi_stations
1.2 Die Konfiguration wie folgt editieren
# nano /etc/config/prometheus-node-exporter-lua
config prometheus-node-exporter-lua 'main'
option listen_ipv6 '0'
option listen_port '9100'
option listen_interface 'lan'
listen_interface muss das Interface sein, an das der Prometheus-Server dran kommt. In der Regel ist es das LAN-Interface.
1.3 den Node-exporter neu starten lassen
# /etc/init.d/prometheus-node-exporter-lua restart
2. Docker Compose Datei anlegen
2.1 Ordner für Konfigurationen anlegen
mkdir -p /opt/openwrt-grafana/prometheus
2.2 Konfigurationsdatei erstellen und mit Inhalt befüllen
nano /opt/openwrt-grafana/docker-compose.yml
Inhalt:
networks:
monitor-net:
driver: bridge
volumes:
prometheus_data: {}
grafana_data: {}
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus:/etc/prometheus
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--web.console.libraries=/etc/prometheus/console_libraries'
- '--web.console.templates=/etc/prometheus/consoles'
- '--storage.tsdb.retention.time=200h'
- '--web.enable-lifecycle'
restart: unless-stopped
expose:
- 9090
ports:
- 9090:9090
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
grafana:
image: grafana/grafana:latest
container_name: grafana
volumes:
- grafana_data:/var/lib/grafana
- ./grafana/provisioning:/etc/grafana/provisioning
environment:
- GF_SECURITY_ADMIN_USER=${ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}
- GF_USERS_ALLOW_SIGN_UP=false
restart: unless-stopped
expose:
- 3000
ports:
- 3000:3000
networks:
- monitor-net
labels:
org.label-schema.group: "monitoring"
WICHTIG: Container jetzt noch NICHT starten!
3. Prometheus-Konfiguration anlegen
3.1 Konfiguration anlegen
nano /opt/openwrt-grafana/prometheus/prometheus.yml
Inhalt:
global:
scrape_interval: 15s
evaluation_interval: 15s
# Attach these labels to any time series or alerts when communicating with
# external systems (federation, remote storage, Alertmanager).
external_labels:
monitor: 'docker-host-alpha'
# Load and evaluate rules in this file every 'evaluation_interval' seconds.
rule_files:
- "alert.rules"
# A scrape configuration containing exactly one endpoint to scrape.
scrape_configs:
- job_name: 'openwrt-router'
scrape_interval: 5s
static_configs:
- targets: ['192.168.69.1:9100']
- job_name: 'openwrt-ap01'
scrape_interval: 5s
static_configs:
- targets: ['192.168.69.2:9100']
HINWEIS: Du kannst mehrere scrape_configs hinzufügen, solltest du mehrere OpenWrt-Geräte haben.
4. Container starten & einloggen
4.1 docker compose up -d
4.2 In einem Webbrowser Grafana aufrufen
http://192.168.69.42:3000
Benutzername: admin
Passwort: admin
4.3 Nach dem Login muss das Kennwort sofort geändert werden
5. Prometheus als Datenquelle hinzufügen + Dashboard importieren
5.1 Auf der Linken Seite auf Verbindungen (Connections) -> Datenquellen (data sources)
5.2 Auf „+ Neue Datenquelle hinzufügen“
5.3 Prometheus auswählen
5.4 Bei Connection „http://prometheus:9090“ eintragen und den Rest auf den Standardwerten belassen
5.5 Save & test betätigen
5.6 Auf Dashboards auf der linken Seite klicken
5.7 Neu -> Importieren
5.8 Das Dashboard mit der ID 11147 importieren
5.9 Beim Import bei „Prometheus“ nun die Prometheus-Datenquelle aus Schritt 5.4 angeben
5.10 Dashboard öffnen 🙂
Nach einigen Sekunden sollte das Dashboard mit Informationen gefüllt werden.
Im oberen Bereich kann bei „Job“ der Router / Access Point ausgewählt werden.

