Bandwidth monitoring mit Openwrt

Hi, Anfrage an die „Wissenden“ in der Runde:
Ich möchte gerne die Bandbreitennutzung aufzeichnen um das Verhalten von verschiedenen Links genauer beobachten und auswerten zu können. Ich entsinne mich da einer Technik, die schon vor 15 oder 20 Jahren gut funktioniert hat: damals haben wir MRTG verwendet um über SNMP die Trafficdaten zyklisch auszulesen (und auch um Kunden-Verbrauchsdaten auszulesen).

Unter Openwrt ginge das ja recht elegant mit collectd und luci-statistics. Man kann recht gut lokalen Traffic aufzeichnen. Ich möchte aber gene einen zentralen (openwrt)Rechner, der von mehreren Geräten die Daten übernimmt. Nun das Problem:

  1. SNMP wäre eine wenig speicheraufwändige Sache, und könnte pratkisch auf allen Geräten mit snmp angewendet werden, aber die Implementation am Server muß man per Hand machen und scheint nicht trivial. Gibt es da ein howto?
  2. collectd hat einen client-Modus wo von einem Router Daten an den Server weitergegeben werden können. Hat jemand Erfahrung? Speicherbedarf bei Openwrt Systemen (der ja meist knapp ist)? Ist Implementierung auf Edge-Router möglich? Was macht man bei einem switch, der „nur“ snmp kann?

lg
Georg

Halb so wild. Welches Betriebssystem? z.B Ubuntu: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-an-snmp-daemon-and-client-on-ubuntu-18-04

ad 2.
So wie ich das verstehe hast Du mehrere Geräte, mehrere Interfaces u.a.m. Warum nicht einen separaten Logserver einrichten? Muss ja kein Barebone sein. Ein LXD, Docker oder neuerdings auch MicroK8s aufsetzen und zentral die Logfiles auswerten und anzeigen. Wäre auch vom Sicherheitsaspekt her etwas schlauer.

Welcher Switch? Gibt sicher eine MIB-DB-file oder Doku dazu. SNMP-Walk?
https://www.opsview.com/resources/network/blog/how-do-snmp-walk.
Oder mit Nagios https://www.nagios.com/solutions/snmp-monitoring/

Liebe Grüße
tscharlie

Hi, es geht nicht um den switch, sondern um das Problem den luci-statistics mit dem snmp plugin zu konfigurieren. Damit könnte man dann jedes beliebige Gerät per snmp auslesen … Die einzige Anleitung, die ich gefunden habe war diese
Wenn der collectd auf einem edge router auch laufen würde, ware es simpler, dann halt ohne snmp …
Ziel ist ein übersichtliches Bandbreitenmonitoriing

Noch einmal vorsichtig nachgefragt, was spricht dagegen, nicht alles unter openwrt zu fahren? Damit würdest Du Dich freischaufeln. Wenn Du schon einen separaten Openwrt-Rechner hast, stellt sich die frage, ob dieser nicht auch in einem Container laufen könnte? Dann könntest Du in einem anderen Container das Monitoring (mit oder ohne snmp) betreiben?
Im Übrigen klappt MRTG immer noch sehr gut.

Die besten kostenlosen Tools zur Netzwerküberwachung

Hab auf meinem Router nach dieser Anleitung
https://openwrt.org/docs/guide-user/services/snmp/mini_snmpd
snmp-utils installiert. https://openwrt.org/packages/pkgdata_owrt18_6/snmp-utils
dann …
BusyBox v1.30.1 () built-in shell (ash)


| |.-----.-----.-----.| | | |.----.| |_
| - || _ | -| || | | || || |
|
_____|| |
||||___||| |____|
|
| W I R E L E S S F R E E D O M

OpenWrt 19.07.2, r10947-65030d81f3

root@fahrenheit_451:~# snmp
snmpget snmpset snmpstatus snmptest snmptrap snmpwalk

danach ist alles da, was man benötigt.

Liebe Grüße
tscharlie

an einem Ort hab ich einen edge router, da kann ich maximal snmp nutzen, bei den openwrt routern muß genügend RAM verfügbar sein; mrtg mit perl ist bei den meisten auch zu viel. der collectd daemon bruacht nicht viel, wäre für openwrt sicher gut, der mini_snmp wäre speicherbedarfmäßig auch OK …

lösung 1: via cron ein script am (edge-)router laufen lassen, das die collectd-files auf den management server scp-en tut. in vice versa wenn notwendig (scp -l $user -P $port $host:/path/to/file(s) .)

lösung 2: wenn serial port | freier eth-port vorhanden, einen raspberry oder arduino (+ eth-shield) dran. dann entweder da die collectd-files rüber spielen bzw. dort dann einen smtpd|oder was auch immer laufen lassen.

Liebe Grüße
tscharlie

Wo findet man die Datenfiles vom collectd am EdgeRouter?

Hängt davon ab, was konfiguriert ist. (https://collectd.org/documentation/manpages/collectd.conf.5.shtml oder http://manpages.ubuntu.com/manpages/cosmic/man1/collectd.1.html)

Lösung 3:
Man könnte es auch so einrichten, dass der collectd in eine externe db schreibt. (plugin-dbi)

Ich finde nicht einmal den collectd selbst.

Welche firmware? Welcher edge router? Datasheet?
Lösung 4: rafana Dashboard for EdgeRouter Lite Using Grafana, InfluxDB, SNMP and collectd to graph metrics from EdgeRouters and VyOS.

Weiterführende Links:



EdgeOS v2.0.8
EdgeRouter-X

Ist per default collectd installiert?
Könntest Du kurz nachsehen?

Könntest Du Dir das hier mal ansehen, ob Du eventuell damit weiterkommst?

Eventuell hilft das weiter:
https://www.thomas-krenn.com/de/wiki/Linux_Performance_Auswertung_mit_collectd

Der Uplink als auch die Links zwischen den Nodes sind eine gemeinsam genutzte Ressource.
Bitte somit davon absehen, automatisierte periodische Bandbreitenmessungen zu machen, da es zulasten aller die das Netz nutzen geht! Ich persönlich hatte schonmal festgestellt, dass das jemand ständig macht. Seit ihm bewusst ist was das bedeutet und er das nicht mehr macht haben alle ein besser nutzbares Netz!

Bitte wenn, dann nur temporär solche ‚Messungen‘ machen.

1 Like

Das stimmt, was automatisierte Bandbreiten-Messungen ins Internet angeht.
Soweit ich glaube verstanden zu haben, geht es hier aber nicht um solche Bandbreiten-Messungen sondern um die effektiv genutzte Bandbreite bzw. den Datentransfer, wie Georg im ersten posting schreibt:

Aso, Bandbreitennutzung/Traffic-Statistik ist kein Problem, ich hatte von ‚Monitoring‘ fälschlicherweise auf etwas anderes geschlossen gehabt. Jetzt gibt auch SNMP für mich Sinn. Traffic-Counter.

Ja, das wäre meine Intention, also nur snmp auslesen am Router, wobei ich nicht sicher bin, wieweit ein openwrt router damit belastet wird. edgerouter sollte eingentlich mehr resourcen haben, dürfte aber komplexer sein.

Probier mal das:
opkg update
opkg install procps-ng-watch

Und danach probier mal: procps-ng-watch -n1 ifconfig
Damit siehst du jede Sekunde die TX und RX den Traffic deiner Netzwerkkarten. Hält ers aus?

Zum Auslesen der OIDs wird ein SNMP-Server benötigt, der am Port 161 lauscht, um derartige
Requests von einem z.B.Rechner anzunehmen, der die Aufbereitung (RRD,MRTG oder dgl.) übernimmt. Mit SNMP allein geht gar nichts.

snmp 161/tcp # Simple Net Mgmt Protocol
snmp 161/udp
snmp-trap 162/tcp snmptrap # Traps for SNMP
snmp-trap 162/udp snmptrap

Wenn man nur jene Bereiche (MIBs->Handbuch|Datasheet) ausliest, die für das Netzwerkmonitoring von Belang sind, sprechen wir hier von Peanuts in terms of RAM. Wennst natürlich ALLES von einer Maschine runtersaugst, dauerts echt a bissale. BTW wennst im OpenWRT-Router mal auf
http://$yourrouter/cgi-bin/luci/admin/status/realtime gehst … schafft er das ? Tut er sich da schwer? Oiso, kein Mitleid mit den Dingern :wink:

Zur Veranschaulichung teste mal folgendes: installiere auf einem Rechner snmp und snmpd. Danach mach - ohne jegliche konfiguration oder so - einen einfachen snmp-walk a la

snmpwalk -v1 -c public localhost
iso.3.6.1.2.1.1.1.0 = STRING: „Linux homestead 4.4.0-179-generic #209-Ubuntu SMP Fri Apr 24 17:48:44 UTC 2020 x86_64“
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.8072.3.2.10
iso.3.6.1.2.1.1.3.0 = Timeticks: (21326) 0:03:33.26
iso.3.6.1.2.1.1.4.0 = STRING: „Me me@example.org
iso.3.6.1.2.1.1.5.0 = STRING: „blabalbal“
iso.3.6.1.2.1.1.6.0 = STRING: „Sitting on the Dock of the Bay“
iso.3.6.1.2.1.1.7.0 = INTEGER: 72
iso.3.6.1.2.1.1.8.0 = Timeticks: (10) 0:00:00.10
iso.3.6.1.2.1.1.9.1.2.1 = OID: iso.3.6.1.6.3.11.3.1.1
iso.3.6.1.2.1.1.9.1.2.2 = OID: iso.3.6.1.6.3.15.2.1.1
iso.3.6.1.2.1.1.9.1.2.3 = OID: iso.3.6.1.6.3.10.3.1.1
iso.3.6.1.2.1.1.9.1.2.4 = OID: iso.3.6.1.6.3.1
iso.3.6.1.2.1.1.9.1.2.5 = OID: iso.3.6.1.6.3.16.2.2.1
iso.3.6.1.2.1.1.9.1.2.6 = OID: iso.3.6.1.2.1.49
iso.3.6.1.2.1.1.9.1.2.7 = OID: iso.3.6.1.2.1.4
iso.3.6.1.2.1.1.9.1.2.8 = OID: iso.3.6.1.2.1.50
iso.3.6.1.2.1.1.9.1.2.9 = OID: iso.3.6.1.6.3.13.3.1.3
iso.3.6.1.2.1.1.9.1.2.10 = OID: iso.3.6.1.2.1.92
iso.3.6.1.2.1.1.9.1.3.1 = STRING: „The MIB for Message Processing and Dispatching.“
iso.3.6.1.2.1.1.9.1.3.2 = STRING: „The management information definitions for the SNMP User-based Security Model.“
iso.3.6.1.2.1.1.9.1.3.3 = STRING: „The SNMP Management Architecture MIB.“
iso.3.6.1.2.1.1.9.1.3.4 = STRING: „The MIB module for SNMPv2 entities“
iso.3.6.1.2.1.1.9.1.3.5 = STRING: „View-based Access Control Model for SNMP.“
iso.3.6.1.2.1.1.9.1.3.6 = STRING: „The MIB module for managing TCP implementations“
iso.3.6.1.2.1.1.9.1.3.7 = STRING: „The MIB module for managing IP and ICMP implementations“
iso.3.6.1.2.1.1.9.1.3.8 = STRING: „The MIB module for managing UDP implementations“
iso.3.6.1.2.1.1.9.1.3.9 = STRING: „The MIB modules for managing SNMP Notification, plus filtering.“
iso.3.6.1.2.1.1.9.1.3.10 = STRING: „The MIB module for logging SNMP Notifications.“
iso.3.6.1.2.1.1.9.1.4.1 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.2 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.3 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.4 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.5 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.6 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.7 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.8 = Timeticks: (9) 0:00:00.09
iso.3.6.1.2.1.1.9.1.4.9 = Timeticks: (10) 0:00:00.10
iso.3.6.1.2.1.1.9.1.4.10 = Timeticks: (10) 0:00:00.10
iso.3.6.1.2.1.25.1.1.0 = Timeticks: (48447) 0:08:04.47
iso.3.6.1.2.1.25.1.2.0 = Hex-STRING: 07 E4 06 03 12 26 0B 00 2B 02 00
iso.3.6.1.2.1.25.1.3.0 = INTEGER: 393216
iso.3.6.1.2.1.25.1.4.0 = STRING: "BOOT_IMAGE=/ROOT/ubuntu@/boot/vmlinuz-4.4.0-179-generic root=ZFS=/ROOT/ubuntu ro
"
iso.3.6.1.2.1.25.1.5.0 = Gauge32: 1
iso.3.6.1.2.1.25.1.6.0 = Gauge32: 915
iso.3.6.1.2.1.25.1.7.0 = INTEGER: 0
End of MIB

Welche OIDs du abholen willst und was die dafür notwendigen credentials sind etc., schreibst du selbst in die snmp.conf.

port 161/tcp&udp in der firewall zulassen nicht vergessen.

That’s all folks.

[Zitat]
SNMP is designed to be robust and can be used on a large number of network devices with minimal impact on the managed nodes. It has low transport overheads and keeps working even when other applications fail.
[Zitat Ende]
https://www.hcc-embedded.com/embedded-snmp

Obs nun collectd oder mini-snmpd ist, kochen alle nur mit (snmp)Wasser.

https://tools.ietf.org/html/rfc1213

z.B. hier:

<Plugin rrdtool>
     DataDir "/var/lib/collectd/rrd"
</Plugin>

What does collectd do?

collectd gathers metrics from various sources, e.g. the operating system, applications, logfiles and external devices, and stores this information or makes it available over the network. Those statistics can be used to monitor systems, find performance bottlenecks (i.e. performance analysis ) and predict future system load (i.e. capacity planning ). Or if you just want pretty graphs of your private server and are fed up with some homegrown solution you’re at the right place, too ;).

more:
https://collectd.org/

Erste Schritte:
https://collectd.org/wiki/index.php/First_steps

How to:
https://frontier.town/2017/10/collectd-and-rrdtool/

Ich muss erst mal versuchen mit snmp und openwrt klar zu kommen. kriege keine Antwort vom port 161 am localhost, weder mit snmpd noch mit mini_snmpd, wahrscheinlich firewall oder config Problem.
collectd habe ich mal nach einer Anleitung soweit, dass das luci-statistics-interface konfigurierbar wird. Hab nur im Moment weing Zeit dafür.
der edge router (das eigentliche Ziel) kommt dann dran.