TpLink ER707 - SNMP

Ich hab einen ER707-M2 VPN/Firewall/Router. Der hat auch eine Möglichkeit über SNMP Daten zu empfangen.

Ich würde gerne ein paar Daten in IPS haben.

  • CPU
  • Memory
  • Temperatur
  • Aktueller Datendurchsatz Up/Down
  • Datenmenge WAN/LAN Up/Down

Die kommen sicher über den SNMP Walkthrough herein. Das IPS Modul von Symcon hab ich mir installiert und eingerichtet. Daten kommen rein.

Nur kommen halt nur Zahlen (1.3.1.4…. - oder so) und keine Beschreibung. ChatGPT hab ich bis zum äußersten gequält mir da was zu liefern. Eine Dokumentation gibt es nicht. Zumindest wurde keine gefunden.

Gibt es noch eine andere Möglichkeit herauszufinden, welche OID was bedeutet?

Es war mühselig aber ich hab jetzt zumindest die für mich wichtigsten Werte herausbekommen. ChatGPT hat geglüht.

Da die Werte in Bytes ankommen hab ich da kurzerhand ein Skript zum Umrechnen gemacht. Das funktioniert. Weiters möchte ich den ungefähren aktuellen Datendurchsatz haben. Kann ja nicht so schwer sein, sollte man meinen.

Theoretisch funktionert es aber warum auch immer, kommen nur bei jeder zweiten Aktualisierung neue Werte an. Was bei 5 Sekunden zu 100% unmöglich ist. Zuerst dachte ich, dass es an den 5 Sekunden lag und hab es auf 10 Sekunden erweitert. Aber auch da gibt es nur bei jeder zweiten Aktualisierung was an.

Hier mal das Skript

<?php

//LAN Port
$in_eth0_id=10669;
$out_eth0_id=10884;
$in_eth0_mb_id=34687;
$out_eth0_mb_id=14203;

//WAN Port
$in_eth1_id=30504;

$out_eth1_id=20943;

$in_eth1_mb_id=32204;
$out_eth1_mb_id=38832;

//Byte pro Sekunde
$in_byte_sekunde_id=28194;
$out_byte_sekunde_id=37011;

//Alte Werte speichern
$in_eth1_alt=GetValue($in_eth1_id);
$out_eth1_alt=GetValue($out_eth1_id);

SNMP_UpdateValues(22153);

setvalue($in_byte_sekunde_id,(GetValue($in_eth1_id)-$in_eth1_alt)/5/1000000);
setvalue($out_byte_sekunde_id,(GetValue($out_eth1_id)-$out_eth1_alt)/5/1000000);

//Werte auf MB umrechnen
setvalue($in_eth0_mb_id,GetValue($in_eth0_id)/1000000);
setvalue($out_eth0_mb_id,GetValue($out_eth0_id)/1000000);

setvalue($in_eth1_mb_id,GetValue($in_eth1_id)/1000000);
setvalue($out_eth1_mb_id,GetValue($out_eth1_id)/1000000);

Ist da irgendwo ein Denkfehler drinnen? Die alten Werte werden gespeichert, dann kommt die Aktualiserung und dann soll berechnet werden.

Außerdem hat das SNMP Modul von Symcon ein Problem mit Variablen, die man selbst in der Instanz anlegt. Da kommt bei der Aktualsierung eine Warnung.

So, das Skript habe ich etwas geändert, aber es hat grundsätzlich funktioniert. Es sind 15 Sekunden. Darunter liefert der ER707 keine neuen Werte.

<?php
//Timer
$timer=15;
//LAN Port
$in_eth0_id=10669;
$out_eth0_id=10884;
$in_eth0_mb_id=34687;
$out_eth0_mb_id=14203;

//WAN Port
$in_eth1_id=30504;

$out_eth1_id=20943;

$in_eth1_mb_id=32204;
$out_eth1_mb_id=38832;

//Byte pro Sekunde
$in_mbit_sekunde_id=28194;
$out_mbit_sekunde_id=37011;

//Alte Werte speichern
$in_eth1_alt=GetValue($in_eth1_id);
$out_eth1_alt=GetValue($out_eth1_id);

//SNMP Update
SNMP_UpdateValues(22153);

$diff_in=GetValue($in_eth1_id)-$in_eth1_alt;
$diff_out=getValue($out_eth1_id)-$out_eth1_alt;
if ($diff_in != 0) setvalue($in_mbit_sekunde_id,($diff_in*8)/$timer/1000000);
if ($diff_out != 0) setvalue($out_mbit_sekunde_id,($diff_out*8)/$timer/1000000);

//Werte auf MB umrechnen
setvalue($in_eth0_mb_id,GetValue($in_eth0_id)/1000000);
setvalue($out_eth0_mb_id,GetValue($out_eth0_id)/1000000);

setvalue($in_eth1_mb_id,GetValue($in_eth1_id)/1000000);
setvalue($out_eth1_mb_id,GetValue($out_eth1_id)/1000000);

Ist die Abfragerate nicht arg übertrieben?

Finde ich nicht. Ich möchte die ungefähre Datenrate haben. Gerade aktuell, da ich von 5G auf Glasfaser gewechselt bin.