Ergebnis 1 bis 11 von 11

Thema: ctlmgr_ctl funktioniert nicht wie vorher im 6.20

  1. #1
    IPPF-Fan
    Registriert seit
    23.11.2008
    Beiträge
    354

    ctlmgr_ctl funktioniert nicht wie vorher im 6.20

    Ich nutze diese Befehle im Zabbix.
    Jetzt im 6.20 funktioniert das nicht mehr.

    Wie bekomme ich jetzt diese Werten?

    Code:
    ctlmgr_ctl r sar status/us_margin
    ctlmgr_ctl r sar status/ds_margin
    ctlmgr_ctl r sar status/us_crc
    ctlmgr_ctl r sar status/ds_crc
    ctlmgr_ctl r sar status/ds_los

  2. #2
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.183
    Du müßtest Dir aus der Lua-Seite, in der die Daten angezeigt werden (das sollte imho bei den DSL-Werten irgendwo stehen), die korrekten Abfragen heraussuchen und kannst diese dann mit den neuen "Pfaden" mit ctlmgr_ctl probieren oder auch per Lua abfragen (ein Skript dafür habe ich z.B. im Freetz-Ticket 2499 hochgeladen - inkl. kleiner Erklärung).
    ⠠⠏⠑⠞⠑⠗⠠⠏⠁⠺⠝

  3. #3
    IPPF-Fan
    Registriert seit
    23.11.2008
    Beiträge
    354
    Ich habe ins /usr/www/all/internet/dsl_overview.lua geguckt, aber kann nichts funktionierend daraus bekommen...

  4. #4
    IPPF Achttausend-VIP Avatar von PeterPawn
    Registriert seit
    10.05.2006
    Ort
    Berlin
    Beiträge
    8.183
    Wenn ich mich nicht vertue, wäre auch /usr/www/avm/internet/dsl_stats_tab.lua die richtige Stelle ... wenn Du Freetz hast (schließe ich aus dem abweichenden Pfad), dann eben entsprechend angepaßt.

    Da das luadsl-Objekt offenbar ein direkter Export ist (require "libluadsl"), bringt Dir allerdings das allgemein gehaltene queries.lua nichts und Du müßtest Dir selbst ein passendes Lua-Skript (das also nicht mit box.query abfragt, sondern eben die luadsl-Objekteigenschaften direkt ausliest) basteln ... Lua ist eine ziemlich simple Sprache. Das dann (wie queries.lua) durch 'luavar' gejagt, sollte eigentlich auch die Abfrage des luadsl-Objekts möglich machen.
    ⠠⠏⠑⠞⠑⠗⠠⠏⠁⠺⠝

  5. #5
    IPPF-Einsteiger
    Registriert seit
    16.11.2012
    Beiträge
    3
    hier nen script mit dem die Daten ausgelesen werden können.

    Code:
    #! /bin/luavar
    require("libluadsl")
    g_data={}
    g_data.port = {}
    g_data.port[1] = {}
    g_data.port[2] = {}
    g_data.port[1].ds_negotiated= luadsl.getNegotiatedValues(1, "DS")
    for i = 1, g_data.port[1].ds_negotiated.PORTS, 1 do
    g_data.port[i] = {}
    g_data.port[i].ds_negotiated= luadsl.getNegotiatedValues(i, "DS")
    g_data.port[i].us_negotiated = luadsl.getNegotiatedValues(i, "US")
    g_data.port[i].ds_errors = luadsl.getErrorCounters(i, "DS")
    g_data.port[i].us_errors = luadsl.getErrorCounters(i, "US")
    g_data.port[i].ds_overview = luadsl.getOverviewStatus(i, "DS")
    g_data.port[i].us_overview = luadsl.getOverviewStatus(i, "US")
    end
    
    print("ds_state :",g_data.port[1].ds_overview.STATE);
    print("us_state :",g_data.port[1].us_overview.STATE);
    print("ds_timeinstate :",g_data.port[1].ds_overview.TIME_IN_STATE);
    print("us_timeinstate :",g_data.port[1].us_overview.TIME_IN_STATE);
    print("ds_showtime :",g_data.port[1].ds_overview.SHOWTIME);
    print("us_showtime :",g_data.port[1].us_overview.SHOWTIME);
    print("ds_mode :",g_data.port[1].ds_overview.MODE);
    print("us_mode :",g_data.port[1].us_overview.MODE);
    print("ds_attain_dr :",g_data.port[1].ds_negotiated.ATTAIN_DR);
    print("us_attain_dr :",g_data.port[1].us_negotiated.ATTAIN_DR);
    print("ds_actual_dr :",g_data.port[1].ds_negotiated.ACTUAL_DR);
    print("us_actual_dr :",g_data.port[1].us_negotiated.ACTUAL_DR);
    print("ds_margin :",g_data.port[1].ds_negotiated.MARGIN);
    print("us_margin :",g_data.port[1].us_negotiated.MARGIN);
    print("ds_attenuation :",g_data.port[1].ds_negotiated.ATTENUATION);
    print("us_attenuation :",g_data.port[1].us_negotiated.ATTENUATION);
    print("ds_delay :",g_data.port[1].ds_negotiated.DELAY);
    print("us_delay :",g_data.port[1].us_negotiated.DELAY);
    ausgabe
    Code:
    ds_state :      SHOWTIME
    us_state :      SHOWTIME
    ds_timeinstate :        40058
    us_timeinstate :        40058
    ds_showtime :   40058
    us_showtime :   40058
    ds_mode :       VDSL2
    us_mode :       VDSL2
    ds_attain_dr :  121792
    us_attain_dr :  47642
    ds_actual_dr :  109344
    us_actual_dr :  41997
    ds_margin :     10
    us_margin :     6
    ds_attenuation :        9
    us_attenuation :        8
    ds_delay :      0
    us_delay :      2
    Wer noch mehr Infos auslesen will soll in die dsl_stats_tab.lua datei schauen.
    have fun
    Geändert von speedyking (31.01.2016 um 08:51 Uhr)

  6. #6
    IPPF Achttausend-VIP Avatar von koyaanisqatsi
    Registriert seit
    24.01.2013
    Ort
    Berlin (Neukölln)
    Beiträge
    8.899
    Moins


    Danke fürs Skript.

    Bei mir siehts dann so aus...
    Vorbereitung, Erstellung und Aufruf...
    Code:
    ~ # cd /var/media/ftp/SanDisk-Cruzer-01/scripts/
    /var/media/ftp/SanDisk-Cruzer-01/scripts # vi dslinfo.lua
    /var/media/ftp/SanDisk-Cruzer-01/scripts # chmod +x dslinfo.lua
    /var/media/ftp/SanDisk-Cruzer-01/scripts # ./dslinfo.lua
    Ausgabe...
    Code:
    ds_state :      SHOWTIME
    us_state :      SHOWTIME
    ds_timeinstate :        432482
    us_timeinstate :        432482
    ds_showtime :   432482
    us_showtime :   432482
    ds_mode :       VDSL2
    us_mode :       VDSL2
    ds_attain_dr :  113466
    us_attain_dr :  25889
    ds_actual_dr :  51392
    us_actual_dr :  10048
    ds_margin :     15
    us_margin :     14
    ds_attenuation :        6
    us_attenuation :        4
    ds_delay :      7
    us_delay :      6
    Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt (Albert E.) mfg koy
    Anschluss: 1&1 Komplett VDSL 50/10 DS
    Fritz!Box: 7560 FRITZ!OS 6.83 & 6.52 & 1x 7112 (WDS Basis), 3x 7113 (Repeater)
    Telefonie: Rotes Posttelefon, 2x snom320-SIP 8.7.5.44, 2x (billig) DECT, 1x Fax (MuFuG)

    SmartHome: SensorAndSwitch auf Rasperry Pi mit OSMC/KODI (Jessie/Sarge)

  7. #7
    IPPF-Fan
    Registriert seit
    23.11.2008
    Beiträge
    354
    @speedyking

    Vielen dank....
    Geändert von frater (03.02.2016 um 14:57 Uhr)

  8. #8
    IPPF-Fan
    Registriert seit
    23.11.2008
    Beiträge
    354
    @speedyking

    Ich bekomme jetzt wieder die "saturation werte" mit zabbix.
    Möchte auch gerne die errors bekommen

    Dein script angesehen und hier geguckt /usr/www/all/internet ....
    Ich versteh nicht ganz wie es functioniert

    Auch niemals etwas mit LUA gemacht...

    Kannst du das noch hinzufugen und vielleicht einige "comments" im script setzen
    Vielleicht kann ich es nächstes mahl selbst.


    So lese ich die werte mit zabbix
    /sbin/dsl.lua ist dein script

    Code:
    UserParameter=dsl.upstream, sudo /sbin/dsl.lua | tee /tmp/dsl.output | grep ^us_actual_dr | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.downstream, grep ^ds_actual_dr /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    
    
    UserParameter=saturation.tx, adsl.saturation tx
    UserParameter=saturation.rx, adsl.saturation rx
    
    
    UserParameter=dsl.bytes.tx, dsl.bytes tx
    UserParameter=dsl.bytes.rx, dsl.bytes rx
    
    
    UserParameter=dsl.upsnr, grep ^us_margin /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.downsnr, grep ^ds_margin /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    Geändert von frater (03.02.2016 um 18:22 Uhr)

  9. #9
    IPPF-Einsteiger
    Registriert seit
    16.11.2012
    Beiträge
    3
    Hi,

    füge das in die script Datei ein.

    Code:
    print("ds_es :",g_data.port[1].ds_errors.ES);
    print("us_es :",g_data.port[1].us_errors.ES);
    print("ds_ses :",g_data.port[1].ds_errors.SES);
    print("us_ses :",g_data.port[1].us_errors.SES);
    print("ds_crc_min :",g_data.port[1].ds_errors.CRC_MIN);
    print("us_crc_min :",g_data.port[1].us_errors.CRC_MIN);
    print("ds_crc_15min :",g_data.port[1].ds_errors.CRC_15MIN);
    print("us_crc_15min :",g_data.port[1].us_errors.CRC_15MIN);
    Und nun such mal nach "ES, SES, CRC_MIN, CRC_15MIN" in der Datei "/usr/www/all/internet/dsl_stats_tab.lua".

  10. #10
    IPPF-Fan
    Registriert seit
    23.11.2008
    Beiträge
    354
    Thanks to speedyking I have implemented my saturation script in Zabbix again.
    It works like this.

    The zabbix-agent contains (among other stuff) these entries:

    Code:
    # Freetz DSL
    UserParameter=dsl.upstream, sudo /sbin/dsl.lua | tee /tmp/dsl.output | grep ^us_actual_dr | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.downstream, grep ^ds_actual_dr /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    
    
    UserParameter=saturation.tx, adsl.saturation tx
    UserParameter=saturation.rx, adsl.saturation rx
    
    
    UserParameter=dsl.bytes.tx, dsl.bytes tx
    UserParameter=dsl.bytes.rx, dsl.bytes rx
    
    
    UserParameter=dsl.upsnr, grep ^us_margin /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.downsnr, grep ^ds_margin /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.upcrc, grep ^us_crc_min  /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.downcrc, grep ^ds_crc_min  /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'
    UserParameter=dsl.los, sudo ctlmgr_ctl r sar status/ds_los
    The first entry will call the script dsl.lua
    It will be called each minute invoked by the zabbix-server. The output of dsl.lua will be "teed" to the file /tmp/dsl.output
    The file /tmp/dsl.output will get re-used by the other zabbix entries. This way it only needs to run once each minute,

    The 2nd script is dsl.bytes
    This script tries to give the amount of bytes that have been transferred using the DSL-interface.
    It should work on all models with all flavours (ADSL / VDSL)

    The 3rd script is adsl.saturation
    This script calculates the difference between amount of bytes transferred since it last call. It will divide this by the time since it was last called.
    Normally this is 1 minute, but this is determined by the interval set in the Zabbix server.
    To work optimally I have enabled "nanoseconds" in busybox

    I am now monitoring the saturation of the DSL-interface and made triggers in Zabbix that will alert me if more than 95% saturations happens over a longer period of time.
    I have also a "packetloss" trigger in Zabbix and if this trigger is shown together with the saturation trigger I will already have the cause of performance degradation.
    If that client then calls me I can answer him immediately the reason for this degraded performance.
    If it doesn't coincide with a saturation then it's either some ISP-problem or a problem with his DSL (CRC-errors)

    Of course I am also monitoring the DSL-speeds and have triggers on those.
    On ADSL it should always be at least 1 MBit/s upload speed.
    Code:
    freetz@freetz:~/trunk$ grep -i nano= ~/trunk/.config
    FREETZ_BUSYBOX_FEATURE_DATE_NANO=y

    Here are the 3 files


    cat ~/trunk/make/zabbix_agentd-support/files/root/sbin/dsl.bytes
    Code:
    #!/bin/sh
    
    
    # the parameter rx or tx has to be given
    echo "$1" | egrep -q '^(tx|rx)$' || exit 1
    
    
    # Fetch the corresponding DSL-speed of physical layer
    DSL_BYTES=`grep -A3 internet /proc/net/avm_pa/vpids 2>/dev/null | grep -i $1 | awk '{print $7}' | tr -cd '0-9'`
    
    
    [ -z "${DSL_BYTES}" ] && DSL_BYTES=`grep -v '^0$' /sys/class/net/vdsl/statistics/${1}_bytes 2>/dev/null`
    [ -z "${DSL_BYTES}" ] && DSL_BYTES=`grep -v '^0$' /sys/class/net/adsl/statistics/${1}_bytes 2>/dev/null`
    [ -z "${DSL_BYTES}" ] && DSL_BYTES=`grep -v '^0$' /sys/class/net/dsl/statistics/${1}_bytes 2>/dev/null`
    
    
    echo ${DSL_BYTES}
    freetz@freetz:~/trunk$ cat ~/trunk/make/zabbix_agentd-support/files/root/sbin/adsl.saturation
    Code:
    #!/bin/sh
    
    
    # You do need to turn on support for %N (nanoseconds) in busybox
    
    
    # the parameter rx or tx has to be given
    echo "$1" | egrep -q '^(tx|rx)$' || exit 1
    
    
    # Create a file in /tmp to fetch the previous sample
    SCRATCH=/tmp/${0##*/}.$1
    
    
    # Fetch the corresponding DSL-speed of physical layer
    if [ "$1" = 'rx' ] ; then
      DSL_SPEED=`grep ^ds_actual_dr /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'`
    else
      DSL_SPEED=`grep ^us_actual_dr /tmp/dsl.output | awk -F: '{print $2}' | tr -cd '0-9'`
    fi
    
    
    if [ -z "${DSL_SPEED}" ] || [ ${DSL_SPEED} -eq 0 ] ; then
      echo 0
      exit
    fi
    
    
    # Fetch date and Bytes from DSL-interface
    NOW_TIME=`date +%s.%N`
    NOW_BYTES=`dsl.bytes $1`
    
    
    # On first run, these vars do not exist
    LAST_BYTES=${NOW_BYTES}
    LAST_TIME=0
    
    
    # read previous values
    [ -f ${SCRATCH} ] && . ${SCRATCH}
    
    
    # Sanity check in case previous value is somehow off
    LAST_BYTES=`echo "${NOW_BYTES} ${LAST_BYTES}" | awk '{if($1 > $2) {print $2} else print $1}'`
    
    
    DIFF_BYTES=`echo "${NOW_BYTES} ${LAST_BYTES}" | awk '{print $1 - $2}'`
    DIFF_TIME=`echo  "${NOW_TIME} ${LAST_TIME}"   | awk '{print $1 - $2}' | tr -cd '[0-9].'`
    
    
    BITS_PER_SEC=0
    [ "${DIFF_TIME}" = '0' ] || BITS_PER_SEC=`echo "${DIFF_BYTES} ${DIFF_TIME}" | awk '{printf"%.0f\n", 8 * $1 / $2}'`
    
    
    # Write Bytes and Time to ${SCRATCH}
    echo -e "LAST_BYTES=${NOW_BYTES}\nLAST_TIME=${NOW_TIME}" >${SCRATCH}
    
    
    # There's some overhead going from ATM over DSL to Ethernet (PPPoA)... a bit less for PPPoE
    # I don't know (yet) how to detect an IPoE connection. I don't have such a connection..... (not such a big deal)
    #NETTO=0.895
    NETTO=0.93
    
    
    # showdsldstat | egrep -qi '(vlan|/PPPoE)' && NETTO=0.91
    
    
    # echo "${BITS_PER_SEC} ${DSL_SPEED} ${NETTO}"
    RETVAL=`echo "${BITS_PER_SEC} ${DSL_SPEED} ${NETTO}" | awk '{printf"%.0f\n", $1 / ($2 * $3 * 10)}' 2>/dev/null`
    [ -z "${RETVAL}" ] && RETVAL=0
    echo ${RETVAL}

    freetz@freetz:~/trunk$ cat ~/trunk/make/zabbix_agentd-support/files/root/sbin/dsl.lua
    Code:
    #! /bin/luavar
    require("libluadsl")
    g_data={}
    g_data.port = {}
    g_data.port[1] = {}
    g_data.port[2] = {}
    g_data.port[1].ds_negotiated= luadsl.getNegotiatedValues(1, "DS")
    for i = 1, g_data.port[1].ds_negotiated.PORTS, 1 do
    g_data.port[i] = {}
    g_data.port[i].ds_negotiated= luadsl.getNegotiatedValues(i, "DS")
    g_data.port[i].us_negotiated = luadsl.getNegotiatedValues(i, "US")
    g_data.port[i].ds_errors = luadsl.getErrorCounters(i, "DS")
    g_data.port[i].us_errors = luadsl.getErrorCounters(i, "US")
    g_data.port[i].ds_overview = luadsl.getOverviewStatus(i, "DS")
    g_data.port[i].us_overview = luadsl.getOverviewStatus(i, "US")
    end
    
    
    print("ds_state :",g_data.port[1].ds_overview.STATE);
    print("us_state :",g_data.port[1].us_overview.STATE);
    print("ds_timeinstate :",g_data.port[1].ds_overview.TIME_IN_STATE);
    print("us_timeinstate :",g_data.port[1].us_overview.TIME_IN_STATE);
    print("ds_showtime :",g_data.port[1].ds_overview.SHOWTIME);
    print("us_showtime :",g_data.port[1].us_overview.SHOWTIME);
    print("ds_mode :",g_data.port[1].ds_overview.MODE);
    print("us_mode :",g_data.port[1].us_overview.MODE);
    print("ds_attain_dr :",g_data.port[1].ds_negotiated.ATTAIN_DR);
    print("us_attain_dr :",g_data.port[1].us_negotiated.ATTAIN_DR);
    print("ds_actual_dr :",g_data.port[1].ds_negotiated.ACTUAL_DR);
    print("us_actual_dr :",g_data.port[1].us_negotiated.ACTUAL_DR);
    print("ds_margin :",g_data.port[1].ds_negotiated.MARGIN);
    print("us_margin :",g_data.port[1].us_negotiated.MARGIN);
    print("ds_attenuation :",g_data.port[1].ds_negotiated.ATTENUATION);
    print("us_attenuation :",g_data.port[1].us_negotiated.ATTENUATION);
    print("ds_delay :",g_data.port[1].ds_negotiated.DELAY);
    print("us_delay :",g_data.port[1].us_negotiated.DELAY);
    print("ds_es :",g_data.port[1].ds_errors.ES);
    print("us_es :",g_data.port[1].us_errors.ES);
    print("ds_ses :",g_data.port[1].ds_errors.SES);
    print("us_ses :",g_data.port[1].us_errors.SES);
    print("ds_crc_min :",g_data.port[1].ds_errors.CRC_MIN);
    print("us_crc_min :",g_data.port[1].us_errors.CRC_MIN);
    print("ds_crc_15min :",g_data.port[1].ds_errors.CRC_15MIN);
    print("us_crc_15min :",g_data.port[1].us_errors.CRC_15MIN);

  11. #11
    IPPF-Fan
    Registriert seit
    23.11.2008
    Beiträge
    354
    @speedyking

    Your script does not work in the new 6.8 firmware and now I lost the DSL-parameters.
    Because I never knew how you "mined" that library I don't know what to do to regain this.

    Maybe you can be of help another time?

Ähnliche Themen

  1. [Frage] FBF 7490 DSL Parameter aendern [ctlmgr_ctl w sar settings/ControlBitfield]
    Von sQueeZer im Forum FRITZ!Box Fon: DSL, Internet und Netzwerk
    Antworten: 12
    Letzter Beitrag: 05.03.2014, 10:57
  2. [Problem] [Telnet] Egal welcher befehl es kommt immer "-sh: ctlmgr_ctl: Not found"
    Von freeway123 im Forum FRITZ!Box Fon: Modifikationen
    Antworten: 24
    Letzter Beitrag: 08.07.2013, 11:46
  3. Antworten: 0
    Letzter Beitrag: 19.10.2012, 14:38
  4. [Frage] Kein ctlmgr_ctl vorhanden - wie Parameter ändern?
    Von edgecrusher im Forum FRITZ!Box Fon: Modifikationen
    Antworten: 0
    Letzter Beitrag: 15.08.2012, 21:24
  5. [Frage] Problem with ctlmgr_ctl command
    Von RobBastiaansen im Forum FRITZ!Box Fon: Modifikationen
    Antworten: 0
    Letzter Beitrag: 20.01.2012, 11:47

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •