OpenWrt – Ein Dashboard mit Prometheus & Grafana erstellen

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden.