From: Nate Oaks nateos2g@fastmail.com
For proper display of network measurements, Bps (bytes) should be converted to bps (bits). Bytes are for data/storage (RAM, HDD, SSD, etc.), bits are for network bandwidth or throughput (NICs, switches, routers, WiFi adapters, etc.).
Networks transfer data as single bits at a time. It’s both more accurate and more intuitive to measure network speed in bits per second that a network connection is transmitting, not the amount of data units, or bytes, it transmits. Notice all network devices are marketed, measure and diplay in bits per second.
I simply used RRD CDEF to multiply by 8.
NOTE: Found: "ERROR: rpn expressions without DEF or CDEF variables are not supported". Specifically in updateqosgraph, CDEF does not like a number as a variable name. ie. "204" from $classline[1].
Requires update of the language cache files: perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" or: update-lang-cache
Found one other asking for this: https://community.ipfire.org/t/ipfire-bandwidth-usage/1203
Signed-off-by: Nate Oaks nateos2g@fastmail.com --- config/cfgroot/graphs.pl | 202 +++++++++++++++++++++------------------ langs/en/cgi-bin/en.pl | 13 +-- 2 files changed, 117 insertions(+), 98 deletions(-)
diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index 441d4c483a46..c83ae67bbfc1 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -545,28 +545,30 @@ sub updateifgraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:tx:AVERAGE", - "CDEF:outgoingn=outgoing,-1,*", + "CDEF:outgoingb=outgoing,8,*", + "CDEF:outgoingn=outgoingb,-1,*", + "CDEF:incomingb=incoming,8,*", "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j", - "AREA:incoming".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), - "GPRINT:incoming:MAX:%8.1lf %sBps", - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", - "GPRINT:incoming:MIN:%8.1lf %sBps", - "GPRINT:incoming:LAST:%8.1lf %sBps\j", - "AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), - "GPRINT:outgoing:MAX:%8.1lf %sBps", - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", - "GPRINT:outgoing:MIN:%8.1lf %sBps", - "GPRINT:outgoing:LAST:%8.1lf %sBps\j", + "AREA:incomingb".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}), + "GPRINT:incomingb:MAX:%8.1lf %sbps", + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", + "GPRINT:incomingb:MIN:%8.1lf %sbps", + "GPRINT:incomingb:LAST:%8.1lf %sbps\j", + "AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}), + "GPRINT:outgoingb:MAX:%8.1lf %sbps", + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", + "GPRINT:outgoingb:MIN:%8.1lf %sbps", + "GPRINT:outgoingb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; @@ -582,28 +584,30 @@ sub updatevpngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:tx:AVERAGE", - "CDEF:outgoingn=outgoing,-1,*", + "CDEF:outgoingb=outgoing,8,*", + "CDEF:outgoingn=outgoingb,-1,*", + "CDEF:incomingb=incoming,8,*", "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j", - "AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), - "GPRINT:incoming:MAX:%8.1lf %sBps", - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", - "GPRINT:incoming:MIN:%8.1lf %sBps", - "GPRINT:incoming:LAST:%8.1lf %sBps\j", - "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), - "GPRINT:outgoing:MAX:%8.1lf %sBps", - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", - "GPRINT:outgoing:MIN:%8.1lf %sBps", - "GPRINT:outgoing:LAST:%8.1lf %sBps\j", + "AREA:incomingb#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}), + "GPRINT:incomingb:MAX:%8.1lf %sbps", + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", + "GPRINT:incomingb:MIN:%8.1lf %sbps", + "GPRINT:incomingb:LAST:%8.1lf %sbps\j", + "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}), + "GPRINT:outgoingb:MAX:%8.1lf %sbps", + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", + "GPRINT:outgoingb:MIN:%8.1lf %sbps", + "GPRINT:outgoingb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; @@ -619,7 +623,7 @@ sub updatevpnn2ngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, @@ -629,44 +633,50 @@ sub updatevpnn2ngraph { "DEF:overhead_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", "DEF:compression_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", "DEF:compression_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE", - "CDEF:outgoingn=outgoing,-1,*", - "CDEF:overhead_outn=overhead_out,-1,*", - "CDEF:compression_outn=compression_out,-1,*", + "CDEF:outgoingb=outgoing,8,*", + "CDEF:outgoingn=outgoingb,-1,*", + "CDEF:incomingb=incoming,8,*", + "CDEF:overhead_outb=overhead_out,8,*", + "CDEF:overhead_outn=overhead_outb,-1,*", + "CDEF:overhead_inb=overhead_in,8,*", + "CDEF:compression_outb=compression_out,8,*", + "CDEF:compression_outn=compression_outb,-1,*", + "CDEF:compression_inb=compression_in,8,*", "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j", - "AREA:incoming#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bytes per second'}), - "GPRINT:incoming:MAX:%8.1lf %sBps", - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", - "GPRINT:incoming:MIN:%8.1lf %sBps", - "GPRINT:incoming:LAST:%8.1lf %sBps\j", - "STACK:overhead_in#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bytes per second'}), - "GPRINT:overhead_in:MAX:%8.1lf %sBps", - "GPRINT:overhead_in:AVERAGE:%8.1lf %sBps", - "GPRINT:overhead_in:MIN:%8.1lf %sBps", - "GPRINT:overhead_in:LAST:%8.1lf %sBps\j", - "LINE1:compression_in#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bytes per second'}), - "GPRINT:compression_in:MAX:%8.1lf %sBps", - "GPRINT:compression_in:AVERAGE:%8.1lf %sBps", - "GPRINT:compression_in:MIN:%8.1lf %sBps", - "GPRINT:compression_in:LAST:%8.1lf %sBps\j", - "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bytes per second'}), - "GPRINT:outgoing:MAX:%8.1lf %sBps", - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", - "GPRINT:outgoing:MIN:%8.1lf %sBps", - "GPRINT:outgoing:LAST:%8.1lf %sBps\j", - "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bytes per second'}), - "GPRINT:overhead_out:MAX:%8.1lf %sBps", - "GPRINT:overhead_out:AVERAGE:%8.1lf %sBps", - "GPRINT:overhead_out:MIN:%8.1lf %sBps", - "GPRINT:overhead_out:LAST:%8.1lf %sBps\j", - "LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bytes per second'}), - "GPRINT:compression_out:MAX:%8.1lf %sBps", - "GPRINT:compression_out:AVERAGE:%8.1lf %sBps", - "GPRINT:compression_out:MIN:%8.1lf %sBps", - "GPRINT:compression_out:LAST:%8.1lf %sBps\j", + "AREA:incomingb#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bits per second'}), + "GPRINT:incomingb:MAX:%8.1lf %sbps", + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", + "GPRINT:incomingb:MIN:%8.1lf %sbps", + "GPRINT:incomingb:LAST:%8.1lf %sbps\j", + "STACK:overhead_inb#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bits per second'}), + "GPRINT:overhead_inb:MAX:%8.1lf %sbps", + "GPRINT:overhead_inb:AVERAGE:%8.1lf %sbps", + "GPRINT:overhead_inb:MIN:%8.1lf %sbps", + "GPRINT:overhead_inb:bLAST:%8.1lf %sbps\j", + "LINE1:compression_inb#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bits per second'}), + "GPRINT:compression_inb:MAX:%8.1lf %sbps", + "GPRINT:compression_inb:AVERAGE:%8.1lf %sbps", + "GPRINT:compression_inb:MIN:%8.1lf %sbps", + "GPRINT:compression_inb:LAST:%8.1lf %sbps\j", + "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bits per second'}), + "GPRINT:outgoingb:MAX:%8.1lf %sbps", + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", + "GPRINT:outgoingb:MIN:%8.1lf %sbps", + "GPRINT:outgoingb:LAST:%8.1lf %sbps\j", + "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bits per second'}), + "GPRINT:overhead_outb:MAX:%8.1lf %sbps", + "GPRINT:overhead_outb:AVERAGE:%8.1lf %sbps", + "GPRINT:overhead_outb:MIN:%8.1lf %sbps", + "GPRINT:overhead_outb:LAST:%8.1lf %sbps\j", + "LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bits per second'}), + "GPRINT:compression_outb:MAX:%8.1lf %sbps", + "GPRINT:compression_outb:AVERAGE:%8.1lf %sbps", + "GPRINT:compression_outb:MIN:%8.1lf %sbps", + "GPRINT:compression_outb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; @@ -683,7 +693,7 @@ sub updatefwhitsgraph { "-1".$period, "-r", "-t ".$Lang::tr{'firewall hits per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, @@ -692,36 +702,41 @@ sub updatefwhitsgraph { "DEF:forward=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE", "DEF:newnotsyn=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE", "DEF:portscan=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE", + "CDEF:outputb=output,8,*", + "CDEF:inputb=input,8,*", + "CDEF:forwardb=forward,8,*", + "CDEF:newnotsynb=newnotsyn,8,*", + "CDEF:portscanb=portscan,8,*", "COMMENT:".sprintf("%-26s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%14s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j", - "AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"), - "GPRINT:output:MAX:%8.1lf %sBps", - "GPRINT:output:AVERAGE:%8.1lf %sBps", - "GPRINT:output:MIN:%8.1lf %sBps", - "GPRINT:output:LAST:%8.1lf %sBps\j", - "STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"), - "GPRINT:forward:MAX:%8.1lf %sBps", - "GPRINT:forward:AVERAGE:%8.1lf %sBps", - "GPRINT:forward:MIN:%8.1lf %sBps", - "GPRINT:forward:LAST:%8.1lf %sBps\j", - "STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"), - "GPRINT:input:MAX:%8.1lf %sBps", - "GPRINT:input:AVERAGE:%8.1lf %sBps", - "GPRINT:input:MIN:%8.1lf %sBps", - "GPRINT:input:LAST:%8.1lf %sBps\j", - "STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), - "GPRINT:newnotsyn:MAX:%8.1lf %sBps", - "GPRINT:newnotsyn:AVERAGE:%8.1lf %sBps", - "GPRINT:newnotsyn:MIN:%8.1lf %sBps", - "GPRINT:newnotsyn:LAST:%8.1lf %sBps\j", - "STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}), - "GPRINT:portscan:MAX:%8.1lf %sBps", - "GPRINT:portscan:AVERAGE:%8.1lf %sBps", - "GPRINT:portscan:MIN:%8.1lf %sBps", - "GPRINT:portscan:LAST:%8.1lf %sBps\j", + "AREA:outputb".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"), + "GPRINT:outputb:MAX:%8.1lf %sbps", + "GPRINT:outputb:AVERAGE:%8.1lf %sbps", + "GPRINT:outputb:MIN:%8.1lf %sbps", + "GPRINT:outputb:LAST:%8.1lf %sbps\j", + "STACK:forwardb".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"), + "GPRINT:forwardb:MAX:%8.1lf %sbps", + "GPRINT:forwardb:AVERAGE:%8.1lf %sbps", + "GPRINT:forwardb:MIN:%8.1lf %sbps", + "GPRINT:forwardb:LAST:%8.1lf %sbps\j", + "STACK:inputb".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"), + "GPRINT:inputb:MAX:%8.1lf %sbps", + "GPRINT:inputb:AVERAGE:%8.1lf %sbps", + "GPRINT:inputb:MIN:%8.1lf %sbps", + "GPRINT:inputb:LAST:%8.1lf %sbps\j", + "STACK:newnotsynb".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), + "GPRINT:newnotsynb:MAX:%8.1lf %sbps", + "GPRINT:newnotsynb:AVERAGE:%8.1lf %sbps", + "GPRINT:newnotsynb:MIN:%8.1lf %sbps", + "GPRINT:newnotsynb:LAST:%8.1lf %sbps\j", + "STACK:portscanb".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}), + "GPRINT:portscanb:MAX:%8.1lf %sbps", + "GPRINT:portscanb:AVERAGE:%8.1lf %sbps", + "GPRINT:portscanb:MIN:%8.1lf %sbps", + "GPRINT:portscanb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR; @@ -1012,7 +1027,7 @@ sub updateqosgraph { "-1".$period, "-r", "-t ".$Lang::tr{'Utilization on'}." (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, @@ -1039,21 +1054,24 @@ sub updateqosgraph { }
if ( $classline[0] eq $qossettings{'DEV'} ){ - push(@command, "DEF:$classline[1]=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); + # Found: ERROR: rpn expressions without DEF or CDEF variables are not supported + # CDEF does not like a number as a variable name. ie. "204" from $classline[1] + push(@command, "DEF:$classline[1]bit=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); + push(@command, "CDEF:$classline[8]=$classline[1]bit,8,*");
# get color to be used for this graph my $graphColor = $colorMap{$colorKey};
if ($count eq "1") { - push(@command, "AREA:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); + push(@command, "AREA:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); } else { - push(@command, "STACK:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); + push(@command, "STACK:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); }
- push(@command, "GPRINT:$classline[1]:MAX:%8.1lf %sBps" - , "GPRINT:$classline[1]:AVERAGE:%8.1lf %sBps" - , "GPRINT:$classline[1]:MIN:%8.1lf %sBps" - , "GPRINT:$classline[1]:LAST:%8.1lf %sBps\j"); + push(@command, "GPRINT:$classline[8]:MAX:%8.1lf %sbps" + , "GPRINT:$classline[8]:AVERAGE:%8.1lf %sbps" + , "GPRINT:$classline[8]:MIN:%8.1lf %sbps" + , "GPRINT:$classline[8]:LAST:%8.1lf %sbps\j"); $count++; } } diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index dc1fd8d67b30..b0097074beb0 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -515,6 +515,7 @@ 'broken pipe' => 'Broken pipe', 'buffered memory' => 'Buffered Memory', 'buffers' => 'buffers', +'bits per second' => 'Bits per Second', 'bytes per second' => 'Bytes per Second', 'bytes received' => 'Bytes Received', 'bytes sent' => 'Bytes Sent', @@ -1431,10 +1432,10 @@ 'inactive' => 'inactive', 'include logfiles' => 'Include logfiles', 'incoming' => 'incoming', -'incoming compression in bytes per second' => 'Incoming Compression', +'incoming compression in bits per second' => 'Incoming Compression', 'incoming firewall access' => 'Incoming Firewall Access', -'incoming overhead in bytes per second' => 'Incoming Overhead', -'incoming traffic in bytes per second' => 'Incoming Traffic', +'incoming overhead in bits per second' => 'Incoming Overhead', +'incoming traffic in bits per second' => 'Incoming Traffic', 'incorrect password' => 'Incorrect password', 'info' => 'Info', 'init string' => 'Init:', @@ -1907,7 +1908,7 @@ 'our donors' => 'Our donors', 'out' => 'Out', 'outgoing' => 'outgoing', -'outgoing compression in bytes per second' => 'Outgoing compression', +'outgoing compression in bits per second' => 'Outgoing compression', 'outgoing firewall' => 'Outgoing Firewall', 'outgoing firewall access' => 'Outgoing Firewall Access', 'outgoing firewall add ip group' => 'Add IP Address Group', @@ -1930,8 +1931,8 @@ 'outgoing firewall reset' => 'Reset all', 'outgoing firewall view group' => 'View group', 'outgoing firewall warning' => 'Not selecting source ip or mac ignores them', -'outgoing overhead in bytes per second' => 'Outgoing Overhead', -'outgoing traffic in bytes per second' => 'Outgoing Traffic', +'outgoing overhead in bits per second' => 'Outgoing Overhead', +'outgoing traffic in bits per second' => 'Outgoing Traffic', 'override mtu' => 'Override default MTU', 'ovpn' => 'OpenVPN', 'ovpn add conf' => 'Additional configuration',
Hi,
thanks for the corrected patch - now I could apply it.
I made a quick test => please see attachments.
Seems to work as expected.
However I cannot test VPN connections, sorry.
Best, Matthias
On 24.05.2021 16:04, nateos2g@fastmail.com wrote:
From: Nate Oaks nateos2g@fastmail.com
For proper display of network measurements, Bps (bytes) should be converted to bps (bits). Bytes are for data/storage (RAM, HDD, SSD, etc.), bits are for network bandwidth or throughput (NICs, switches, routers, WiFi adapters, etc.).
Networks transfer data as single bits at a time. It’s both more accurate and more intuitive to measure network speed in bits per second that a network connection is transmitting, not the amount of data units, or bytes, it transmits. Notice all network devices are marketed, measure and diplay in bits per second.
I simply used RRD CDEF to multiply by 8.
NOTE: Found: "ERROR: rpn expressions without DEF or CDEF variables are not supported". Specifically in updateqosgraph, CDEF does not like a number as a variable name. ie. "204" from $classline[1].
Requires update of the language cache files: perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" or: update-lang-cache
Found one other asking for this: https://community.ipfire.org/t/ipfire-bandwidth-usage/1203
Signed-off-by: Nate Oaks nateos2g@fastmail.com
config/cfgroot/graphs.pl | 202 +++++++++++++++++++++------------------ langs/en/cgi-bin/en.pl | 13 +-- 2 files changed, 117 insertions(+), 98 deletions(-)
diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index 441d4c483a46..c83ae67bbfc1 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -545,28 +545,30 @@ sub updateifgraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:tx:AVERAGE","-v ".$Lang::tr{'bits per second'},
"CDEF:outgoingn=outgoing,-1,*",
"CDEF:outgoingb=outgoing,8,*",
"CDEF:outgoingn=outgoingb,-1,*",
"COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:incomingb=incoming,8,*",
"AREA:incoming".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}),
"GPRINT:incoming:MAX:%8.1lf %sBps",
"GPRINT:incoming:AVERAGE:%8.1lf %sBps",
"GPRINT:incoming:MIN:%8.1lf %sBps",
"GPRINT:incoming:LAST:%8.1lf %sBps\\j",
"AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}),
"GPRINT:outgoing:MAX:%8.1lf %sBps",
"GPRINT:outgoing:AVERAGE:%8.1lf %sBps",
"GPRINT:outgoing:MIN:%8.1lf %sBps",
"GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
"AREA:incomingb".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}),
"GPRINT:incomingb:MAX:%8.1lf %sbps",
"GPRINT:incomingb:AVERAGE:%8.1lf %sbps",
"GPRINT:incomingb:MIN:%8.1lf %sbps",
"GPRINT:incomingb:LAST:%8.1lf %sbps\\j",
"AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}),
"GPRINT:outgoingb:MAX:%8.1lf %sbps",
"GPRINT:outgoingb:AVERAGE:%8.1lf %sbps",
"GPRINT:outgoingb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;"GPRINT:outgoingb:LAST:%8.1lf %sbps\\j",
@@ -582,28 +584,30 @@ sub updatevpngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:tx:AVERAGE","-v ".$Lang::tr{'bits per second'},
"CDEF:outgoingn=outgoing,-1,*",
"CDEF:outgoingb=outgoing,8,*",
"CDEF:outgoingn=outgoingb,-1,*",
"COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:incomingb=incoming,8,*",
"AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}),
"GPRINT:incoming:MAX:%8.1lf %sBps",
"GPRINT:incoming:AVERAGE:%8.1lf %sBps",
"GPRINT:incoming:MIN:%8.1lf %sBps",
"GPRINT:incoming:LAST:%8.1lf %sBps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}),
"GPRINT:outgoing:MAX:%8.1lf %sBps",
"GPRINT:outgoing:AVERAGE:%8.1lf %sBps",
"GPRINT:outgoing:MIN:%8.1lf %sBps",
"GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
"AREA:incomingb#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}),
"GPRINT:incomingb:MAX:%8.1lf %sbps",
"GPRINT:incomingb:AVERAGE:%8.1lf %sbps",
"GPRINT:incomingb:MIN:%8.1lf %sbps",
"GPRINT:incomingb:LAST:%8.1lf %sbps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}),
"GPRINT:outgoingb:MAX:%8.1lf %sbps",
"GPRINT:outgoingb:AVERAGE:%8.1lf %sbps",
"GPRINT:outgoingb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;"GPRINT:outgoingb:LAST:%8.1lf %sbps\\j",
@@ -619,7 +623,7 @@ sub updatevpnn2ngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"},"-v ".$Lang::tr{'bits per second'},
@@ -629,44 +633,50 @@ sub updatevpnn2ngraph { "DEF:overhead_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", "DEF:compression_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", "DEF:compression_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE",
"CDEF:outgoingn=outgoing,-1,*",
"CDEF:overhead_outn=overhead_out,-1,*",
"CDEF:compression_outn=compression_out,-1,*",
"CDEF:outgoingb=outgoing,8,*",
"CDEF:outgoingn=outgoingb,-1,*",
"CDEF:incomingb=incoming,8,*",
"CDEF:overhead_outb=overhead_out,8,*",
"CDEF:overhead_outn=overhead_outb,-1,*",
"CDEF:overhead_inb=overhead_in,8,*",
"CDEF:compression_outb=compression_out,8,*",
"CDEF:compression_outn=compression_outb,-1,*",
"COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:compression_inb=compression_in,8,*",
"AREA:incoming#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bytes per second'}),
"GPRINT:incoming:MAX:%8.1lf %sBps",
"GPRINT:incoming:AVERAGE:%8.1lf %sBps",
"GPRINT:incoming:MIN:%8.1lf %sBps",
"GPRINT:incoming:LAST:%8.1lf %sBps\\j",
"STACK:overhead_in#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bytes per second'}),
"GPRINT:overhead_in:MAX:%8.1lf %sBps",
"GPRINT:overhead_in:AVERAGE:%8.1lf %sBps",
"GPRINT:overhead_in:MIN:%8.1lf %sBps",
"GPRINT:overhead_in:LAST:%8.1lf %sBps\\j",
"LINE1:compression_in#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bytes per second'}),
"GPRINT:compression_in:MAX:%8.1lf %sBps",
"GPRINT:compression_in:AVERAGE:%8.1lf %sBps",
"GPRINT:compression_in:MIN:%8.1lf %sBps",
"GPRINT:compression_in:LAST:%8.1lf %sBps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bytes per second'}),
"GPRINT:outgoing:MAX:%8.1lf %sBps",
"GPRINT:outgoing:AVERAGE:%8.1lf %sBps",
"GPRINT:outgoing:MIN:%8.1lf %sBps",
"GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
"STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bytes per second'}),
"GPRINT:overhead_out:MAX:%8.1lf %sBps",
"GPRINT:overhead_out:AVERAGE:%8.1lf %sBps",
"GPRINT:overhead_out:MIN:%8.1lf %sBps",
"GPRINT:overhead_out:LAST:%8.1lf %sBps\\j",
"LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bytes per second'}),
"GPRINT:compression_out:MAX:%8.1lf %sBps",
"GPRINT:compression_out:AVERAGE:%8.1lf %sBps",
"GPRINT:compression_out:MIN:%8.1lf %sBps",
"GPRINT:compression_out:LAST:%8.1lf %sBps\\j",
"AREA:incomingb#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bits per second'}),
"GPRINT:incomingb:MAX:%8.1lf %sbps",
"GPRINT:incomingb:AVERAGE:%8.1lf %sbps",
"GPRINT:incomingb:MIN:%8.1lf %sbps",
"GPRINT:incomingb:LAST:%8.1lf %sbps\\j",
"STACK:overhead_inb#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bits per second'}),
"GPRINT:overhead_inb:MAX:%8.1lf %sbps",
"GPRINT:overhead_inb:AVERAGE:%8.1lf %sbps",
"GPRINT:overhead_inb:MIN:%8.1lf %sbps",
"GPRINT:overhead_inb:bLAST:%8.1lf %sbps\\j",
"LINE1:compression_inb#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bits per second'}),
"GPRINT:compression_inb:MAX:%8.1lf %sbps",
"GPRINT:compression_inb:AVERAGE:%8.1lf %sbps",
"GPRINT:compression_inb:MIN:%8.1lf %sbps",
"GPRINT:compression_inb:LAST:%8.1lf %sbps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bits per second'}),
"GPRINT:outgoingb:MAX:%8.1lf %sbps",
"GPRINT:outgoingb:AVERAGE:%8.1lf %sbps",
"GPRINT:outgoingb:MIN:%8.1lf %sbps",
"GPRINT:outgoingb:LAST:%8.1lf %sbps\\j",
"STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bits per second'}),
"GPRINT:overhead_outb:MAX:%8.1lf %sbps",
"GPRINT:overhead_outb:AVERAGE:%8.1lf %sbps",
"GPRINT:overhead_outb:MIN:%8.1lf %sbps",
"GPRINT:overhead_outb:LAST:%8.1lf %sbps\\j",
"LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bits per second'}),
"GPRINT:compression_outb:MAX:%8.1lf %sbps",
"GPRINT:compression_outb:AVERAGE:%8.1lf %sbps",
"GPRINT:compression_outb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;"GPRINT:compression_outb:LAST:%8.1lf %sbps\\j",
@@ -683,7 +693,7 @@ sub updatefwhitsgraph { "-1".$period, "-r", "-t ".$Lang::tr{'firewall hits per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"},"-v ".$Lang::tr{'bits per second'},
@@ -692,36 +702,41 @@ sub updatefwhitsgraph { "DEF:forward=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE", "DEF:newnotsyn=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE", "DEF:portscan=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE",
"CDEF:outputb=output,8,*",
"CDEF:inputb=input,8,*",
"CDEF:forwardb=forward,8,*",
"CDEF:newnotsynb=newnotsyn,8,*",
"COMMENT:".sprintf("%-26s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%14s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:portscanb=portscan,8,*",
"AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"),
"GPRINT:output:MAX:%8.1lf %sBps",
"GPRINT:output:AVERAGE:%8.1lf %sBps",
"GPRINT:output:MIN:%8.1lf %sBps",
"GPRINT:output:LAST:%8.1lf %sBps\\j",
"STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"),
"GPRINT:forward:MAX:%8.1lf %sBps",
"GPRINT:forward:AVERAGE:%8.1lf %sBps",
"GPRINT:forward:MIN:%8.1lf %sBps",
"GPRINT:forward:LAST:%8.1lf %sBps\\j",
"STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"),
"GPRINT:input:MAX:%8.1lf %sBps",
"GPRINT:input:AVERAGE:%8.1lf %sBps",
"GPRINT:input:MIN:%8.1lf %sBps",
"GPRINT:input:LAST:%8.1lf %sBps\\j",
"STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"),
"GPRINT:newnotsyn:MAX:%8.1lf %sBps",
"GPRINT:newnotsyn:AVERAGE:%8.1lf %sBps",
"GPRINT:newnotsyn:MIN:%8.1lf %sBps",
"GPRINT:newnotsyn:LAST:%8.1lf %sBps\\j",
"STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}),
"GPRINT:portscan:MAX:%8.1lf %sBps",
"GPRINT:portscan:AVERAGE:%8.1lf %sBps",
"GPRINT:portscan:MIN:%8.1lf %sBps",
"GPRINT:portscan:LAST:%8.1lf %sBps\\j",
"AREA:outputb".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"),
"GPRINT:outputb:MAX:%8.1lf %sbps",
"GPRINT:outputb:AVERAGE:%8.1lf %sbps",
"GPRINT:outputb:MIN:%8.1lf %sbps",
"GPRINT:outputb:LAST:%8.1lf %sbps\\j",
"STACK:forwardb".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"),
"GPRINT:forwardb:MAX:%8.1lf %sbps",
"GPRINT:forwardb:AVERAGE:%8.1lf %sbps",
"GPRINT:forwardb:MIN:%8.1lf %sbps",
"GPRINT:forwardb:LAST:%8.1lf %sbps\\j",
"STACK:inputb".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"),
"GPRINT:inputb:MAX:%8.1lf %sbps",
"GPRINT:inputb:AVERAGE:%8.1lf %sbps",
"GPRINT:inputb:MIN:%8.1lf %sbps",
"GPRINT:inputb:LAST:%8.1lf %sbps\\j",
"STACK:newnotsynb".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"),
"GPRINT:newnotsynb:MAX:%8.1lf %sbps",
"GPRINT:newnotsynb:AVERAGE:%8.1lf %sbps",
"GPRINT:newnotsynb:MIN:%8.1lf %sbps",
"GPRINT:newnotsynb:LAST:%8.1lf %sbps\\j",
"STACK:portscanb".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}),
"GPRINT:portscanb:MAX:%8.1lf %sbps",
"GPRINT:portscanb:AVERAGE:%8.1lf %sbps",
"GPRINT:portscanb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR;"GPRINT:portscanb:LAST:%8.1lf %sbps\\j",
@@ -1012,7 +1027,7 @@ sub updateqosgraph { "-1".$period, "-r", "-t ".$Lang::tr{'Utilization on'}." (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"},"-v ".$Lang::tr{'bits per second'},
@@ -1039,21 +1054,24 @@ sub updateqosgraph { }
if ( $classline[0] eq $qossettings{'DEV'} ){
push(@command, "DEF:$classline[1]=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
# Found: ERROR: rpn expressions without DEF or CDEF variables are not supported
# CDEF does not like a number as a variable name. ie. "204" from $classline[1]
push(@command, "DEF:$classline[1]bit=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
push(@command, "CDEF:$classline[8]=$classline[1]bit,8,*"); # get color to be used for this graph my $graphColor = $colorMap{$colorKey}; if ($count eq "1") {
push(@command, "AREA:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8]));
push(@command, "AREA:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); } else {
push(@command, "STACK:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8]));
push(@command, "STACK:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); }
push(@command, "GPRINT:$classline[1]:MAX:%8.1lf %sBps"
, "GPRINT:$classline[1]:AVERAGE:%8.1lf %sBps"
, "GPRINT:$classline[1]:MIN:%8.1lf %sBps"
, "GPRINT:$classline[1]:LAST:%8.1lf %sBps\\j");
push(@command, "GPRINT:$classline[8]:MAX:%8.1lf %sbps"
, "GPRINT:$classline[8]:AVERAGE:%8.1lf %sbps"
, "GPRINT:$classline[8]:MIN:%8.1lf %sbps"
}, "GPRINT:$classline[8]:LAST:%8.1lf %sbps\\j"); $count++; }
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index dc1fd8d67b30..b0097074beb0 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -515,6 +515,7 @@ 'broken pipe' => 'Broken pipe', 'buffered memory' => 'Buffered Memory', 'buffers' => 'buffers', +'bits per second' => 'Bits per Second', 'bytes per second' => 'Bytes per Second', 'bytes received' => 'Bytes Received', 'bytes sent' => 'Bytes Sent', @@ -1431,10 +1432,10 @@ 'inactive' => 'inactive', 'include logfiles' => 'Include logfiles', 'incoming' => 'incoming', -'incoming compression in bytes per second' => 'Incoming Compression', +'incoming compression in bits per second' => 'Incoming Compression', 'incoming firewall access' => 'Incoming Firewall Access', -'incoming overhead in bytes per second' => 'Incoming Overhead', -'incoming traffic in bytes per second' => 'Incoming Traffic', +'incoming overhead in bits per second' => 'Incoming Overhead', +'incoming traffic in bits per second' => 'Incoming Traffic', 'incorrect password' => 'Incorrect password', 'info' => 'Info', 'init string' => 'Init:', @@ -1907,7 +1908,7 @@ 'our donors' => 'Our donors', 'out' => 'Out', 'outgoing' => 'outgoing', -'outgoing compression in bytes per second' => 'Outgoing compression', +'outgoing compression in bits per second' => 'Outgoing compression', 'outgoing firewall' => 'Outgoing Firewall', 'outgoing firewall access' => 'Outgoing Firewall Access', 'outgoing firewall add ip group' => 'Add IP Address Group', @@ -1930,8 +1931,8 @@ 'outgoing firewall reset' => 'Reset all', 'outgoing firewall view group' => 'View group', 'outgoing firewall warning' => 'Not selecting source ip or mac ignores them', -'outgoing overhead in bytes per second' => 'Outgoing Overhead', -'outgoing traffic in bytes per second' => 'Outgoing Traffic', +'outgoing overhead in bits per second' => 'Outgoing Overhead', +'outgoing traffic in bits per second' => 'Outgoing Traffic', 'override mtu' => 'Override default MTU', 'ovpn' => 'OpenVPN', 'ovpn add conf' => 'Additional configuration',
Hi,
I've tested also, for the qos and network graphs. No problem.
One annotation: why are the legends 'incoming traffic in bytes per second' ( new '... bits per second' )? The associated text is 'incoming traffic' ( obviously in both versions ). Can't we change this key just to 'incoming traffic'? This is true for 'outgoing traffic...', 'incoming overhead...', ... I didn't search where this texts are used in the project.
Regards, Bernhard
Am 24.05.2021 um 18:18 schrieb Matthias Fischer:
Hi,
thanks for the corrected patch - now I could apply it.
I made a quick test => please see attachments.
Seems to work as expected.
However I cannot test VPN connections, sorry.
Best, Matthias
On 24.05.2021 16:04, nateos2g@fastmail.com wrote:
From: Nate Oaks nateos2g@fastmail.com
For proper display of network measurements, Bps (bytes) should be converted to bps (bits). Bytes are for data/storage (RAM, HDD, SSD, etc.), bits are for network bandwidth or throughput (NICs, switches, routers, WiFi adapters, etc.).
Networks transfer data as single bits at a time. It’s both more accurate and more intuitive to measure network speed in bits per second that a network connection is transmitting, not the amount of data units, or bytes, it transmits. Notice all network devices are marketed, measure and diplay in bits per second.
I simply used RRD CDEF to multiply by 8.
NOTE: Found: "ERROR: rpn expressions without DEF or CDEF variables are not supported". Specifically in updateqosgraph, CDEF does not like a number as a variable name. ie. "204" from $classline[1].
Requires update of the language cache files: perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" or: update-lang-cache
Found one other asking for this: https://community.ipfire.org/t/ipfire-bandwidth-usage/1203
Signed-off-by: Nate Oaks nateos2g@fastmail.com
config/cfgroot/graphs.pl | 202 +++++++++++++++++++++------------------ langs/en/cgi-bin/en.pl | 13 +-- 2 files changed, 117 insertions(+), 98 deletions(-)
diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index 441d4c483a46..c83ae67bbfc1 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -545,28 +545,30 @@ sub updateifgraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:tx:AVERAGE","-v ".$Lang::tr{'bits per second'},
"CDEF:outgoingn=outgoing,-1,*",
"CDEF:outgoingb=outgoing,8,*",
"CDEF:outgoingn=outgoingb,-1,*",
"COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:incomingb=incoming,8,*",
"AREA:incoming".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}),
"GPRINT:incoming:MAX:%8.1lf %sBps",
"GPRINT:incoming:AVERAGE:%8.1lf %sBps",
"GPRINT:incoming:MIN:%8.1lf %sBps",
"GPRINT:incoming:LAST:%8.1lf %sBps\\j",
"AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}),
"GPRINT:outgoing:MAX:%8.1lf %sBps",
"GPRINT:outgoing:AVERAGE:%8.1lf %sBps",
"GPRINT:outgoing:MIN:%8.1lf %sBps",
"GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
"AREA:incomingb".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}),
"GPRINT:incomingb:MAX:%8.1lf %sbps",
"GPRINT:incomingb:AVERAGE:%8.1lf %sbps",
"GPRINT:incomingb:MIN:%8.1lf %sbps",
"GPRINT:incomingb:LAST:%8.1lf %sbps\\j",
"AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}),
"GPRINT:outgoingb:MAX:%8.1lf %sbps",
"GPRINT:outgoingb:AVERAGE:%8.1lf %sbps",
"GPRINT:outgoingb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;"GPRINT:outgoingb:LAST:%8.1lf %sbps\\j",
@@ -582,28 +584,30 @@ sub updatevpngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:tx:AVERAGE","-v ".$Lang::tr{'bits per second'},
"CDEF:outgoingn=outgoing,-1,*",
"CDEF:outgoingb=outgoing,8,*",
"CDEF:outgoingn=outgoingb,-1,*",
"COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:incomingb=incoming,8,*",
"AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}),
"GPRINT:incoming:MAX:%8.1lf %sBps",
"GPRINT:incoming:AVERAGE:%8.1lf %sBps",
"GPRINT:incoming:MIN:%8.1lf %sBps",
"GPRINT:incoming:LAST:%8.1lf %sBps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}),
"GPRINT:outgoing:MAX:%8.1lf %sBps",
"GPRINT:outgoing:AVERAGE:%8.1lf %sBps",
"GPRINT:outgoing:MIN:%8.1lf %sBps",
"GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
"AREA:incomingb#00dd00:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}),
"GPRINT:incomingb:MAX:%8.1lf %sbps",
"GPRINT:incomingb:AVERAGE:%8.1lf %sbps",
"GPRINT:incomingb:MIN:%8.1lf %sbps",
"GPRINT:incomingb:LAST:%8.1lf %sbps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}),
"GPRINT:outgoingb:MAX:%8.1lf %sbps",
"GPRINT:outgoingb:AVERAGE:%8.1lf %sbps",
"GPRINT:outgoingb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;"GPRINT:outgoingb:LAST:%8.1lf %sbps\\j",
@@ -619,7 +623,7 @@ sub updatevpnn2ngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"},"-v ".$Lang::tr{'bits per second'},
@@ -629,44 +633,50 @@ sub updatevpnn2ngraph { "DEF:overhead_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", "DEF:compression_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", "DEF:compression_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE",
"CDEF:outgoingn=outgoing,-1,*",
"CDEF:overhead_outn=overhead_out,-1,*",
"CDEF:compression_outn=compression_out,-1,*",
"CDEF:outgoingb=outgoing,8,*",
"CDEF:outgoingn=outgoingb,-1,*",
"CDEF:incomingb=incoming,8,*",
"CDEF:overhead_outb=overhead_out,8,*",
"CDEF:overhead_outn=overhead_outb,-1,*",
"CDEF:overhead_inb=overhead_in,8,*",
"CDEF:compression_outb=compression_out,8,*",
"CDEF:compression_outn=compression_outb,-1,*",
"COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:compression_inb=compression_in,8,*",
"AREA:incoming#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bytes per second'}),
"GPRINT:incoming:MAX:%8.1lf %sBps",
"GPRINT:incoming:AVERAGE:%8.1lf %sBps",
"GPRINT:incoming:MIN:%8.1lf %sBps",
"GPRINT:incoming:LAST:%8.1lf %sBps\\j",
"STACK:overhead_in#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bytes per second'}),
"GPRINT:overhead_in:MAX:%8.1lf %sBps",
"GPRINT:overhead_in:AVERAGE:%8.1lf %sBps",
"GPRINT:overhead_in:MIN:%8.1lf %sBps",
"GPRINT:overhead_in:LAST:%8.1lf %sBps\\j",
"LINE1:compression_in#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bytes per second'}),
"GPRINT:compression_in:MAX:%8.1lf %sBps",
"GPRINT:compression_in:AVERAGE:%8.1lf %sBps",
"GPRINT:compression_in:MIN:%8.1lf %sBps",
"GPRINT:compression_in:LAST:%8.1lf %sBps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bytes per second'}),
"GPRINT:outgoing:MAX:%8.1lf %sBps",
"GPRINT:outgoing:AVERAGE:%8.1lf %sBps",
"GPRINT:outgoing:MIN:%8.1lf %sBps",
"GPRINT:outgoing:LAST:%8.1lf %sBps\\j",
"STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bytes per second'}),
"GPRINT:overhead_out:MAX:%8.1lf %sBps",
"GPRINT:overhead_out:AVERAGE:%8.1lf %sBps",
"GPRINT:overhead_out:MIN:%8.1lf %sBps",
"GPRINT:overhead_out:LAST:%8.1lf %sBps\\j",
"LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bytes per second'}),
"GPRINT:compression_out:MAX:%8.1lf %sBps",
"GPRINT:compression_out:AVERAGE:%8.1lf %sBps",
"GPRINT:compression_out:MIN:%8.1lf %sBps",
"GPRINT:compression_out:LAST:%8.1lf %sBps\\j",
"AREA:incomingb#00dd00:".sprintf("%-23s",$Lang::tr{'incoming traffic in bits per second'}),
"GPRINT:incomingb:MAX:%8.1lf %sbps",
"GPRINT:incomingb:AVERAGE:%8.1lf %sbps",
"GPRINT:incomingb:MIN:%8.1lf %sbps",
"GPRINT:incomingb:LAST:%8.1lf %sbps\\j",
"STACK:overhead_inb#116B11:".sprintf("%-23s",$Lang::tr{'incoming overhead in bits per second'}),
"GPRINT:overhead_inb:MAX:%8.1lf %sbps",
"GPRINT:overhead_inb:AVERAGE:%8.1lf %sbps",
"GPRINT:overhead_inb:MIN:%8.1lf %sbps",
"GPRINT:overhead_inb:bLAST:%8.1lf %sbps\\j",
"LINE1:compression_inb#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bits per second'}),
"GPRINT:compression_inb:MAX:%8.1lf %sbps",
"GPRINT:compression_inb:AVERAGE:%8.1lf %sbps",
"GPRINT:compression_inb:MIN:%8.1lf %sbps",
"GPRINT:compression_inb:LAST:%8.1lf %sbps\\j",
"AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing traffic in bits per second'}),
"GPRINT:outgoingb:MAX:%8.1lf %sbps",
"GPRINT:outgoingb:AVERAGE:%8.1lf %sbps",
"GPRINT:outgoingb:MIN:%8.1lf %sbps",
"GPRINT:outgoingb:LAST:%8.1lf %sbps\\j",
"STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing overhead in bits per second'}),
"GPRINT:overhead_outb:MAX:%8.1lf %sbps",
"GPRINT:overhead_outb:AVERAGE:%8.1lf %sbps",
"GPRINT:overhead_outb:MIN:%8.1lf %sbps",
"GPRINT:overhead_outb:LAST:%8.1lf %sbps\\j",
"LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bits per second'}),
"GPRINT:compression_outb:MAX:%8.1lf %sbps",
"GPRINT:compression_outb:AVERAGE:%8.1lf %sbps",
"GPRINT:compression_outb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR;"GPRINT:compression_outb:LAST:%8.1lf %sbps\\j",
@@ -683,7 +693,7 @@ sub updatefwhitsgraph { "-1".$period, "-r", "-t ".$Lang::tr{'firewall hits per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"},"-v ".$Lang::tr{'bits per second'},
@@ -692,36 +702,41 @@ sub updatefwhitsgraph { "DEF:forward=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE", "DEF:newnotsyn=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE", "DEF:portscan=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE",
"CDEF:outputb=output,8,*",
"CDEF:inputb=input,8,*",
"CDEF:forwardb=forward,8,*",
"CDEF:newnotsynb=newnotsyn,8,*",
"COMMENT:".sprintf("%-26s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%14s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j","CDEF:portscanb=portscan,8,*",
"AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"),
"GPRINT:output:MAX:%8.1lf %sBps",
"GPRINT:output:AVERAGE:%8.1lf %sBps",
"GPRINT:output:MIN:%8.1lf %sBps",
"GPRINT:output:LAST:%8.1lf %sBps\\j",
"STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"),
"GPRINT:forward:MAX:%8.1lf %sBps",
"GPRINT:forward:AVERAGE:%8.1lf %sBps",
"GPRINT:forward:MIN:%8.1lf %sBps",
"GPRINT:forward:LAST:%8.1lf %sBps\\j",
"STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"),
"GPRINT:input:MAX:%8.1lf %sBps",
"GPRINT:input:AVERAGE:%8.1lf %sBps",
"GPRINT:input:MIN:%8.1lf %sBps",
"GPRINT:input:LAST:%8.1lf %sBps\\j",
"STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"),
"GPRINT:newnotsyn:MAX:%8.1lf %sBps",
"GPRINT:newnotsyn:AVERAGE:%8.1lf %sBps",
"GPRINT:newnotsyn:MIN:%8.1lf %sBps",
"GPRINT:newnotsyn:LAST:%8.1lf %sBps\\j",
"STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}),
"GPRINT:portscan:MAX:%8.1lf %sBps",
"GPRINT:portscan:AVERAGE:%8.1lf %sBps",
"GPRINT:portscan:MIN:%8.1lf %sBps",
"GPRINT:portscan:LAST:%8.1lf %sBps\\j",
"AREA:outputb".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"),
"GPRINT:outputb:MAX:%8.1lf %sbps",
"GPRINT:outputb:AVERAGE:%8.1lf %sbps",
"GPRINT:outputb:MIN:%8.1lf %sbps",
"GPRINT:outputb:LAST:%8.1lf %sbps\\j",
"STACK:forwardb".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"),
"GPRINT:forwardb:MAX:%8.1lf %sbps",
"GPRINT:forwardb:AVERAGE:%8.1lf %sbps",
"GPRINT:forwardb:MIN:%8.1lf %sbps",
"GPRINT:forwardb:LAST:%8.1lf %sbps\\j",
"STACK:inputb".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"),
"GPRINT:inputb:MAX:%8.1lf %sbps",
"GPRINT:inputb:AVERAGE:%8.1lf %sbps",
"GPRINT:inputb:MIN:%8.1lf %sbps",
"GPRINT:inputb:LAST:%8.1lf %sbps\\j",
"STACK:newnotsynb".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"),
"GPRINT:newnotsynb:MAX:%8.1lf %sbps",
"GPRINT:newnotsynb:AVERAGE:%8.1lf %sbps",
"GPRINT:newnotsynb:MIN:%8.1lf %sbps",
"GPRINT:newnotsynb:LAST:%8.1lf %sbps\\j",
"STACK:portscanb".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}),
"GPRINT:portscanb:MAX:%8.1lf %sbps",
"GPRINT:portscanb:AVERAGE:%8.1lf %sbps",
"GPRINT:portscanb:MIN:%8.1lf %sbps",
); $ERROR = RRDs::error; return "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR;"GPRINT:portscanb:LAST:%8.1lf %sbps\\j",
@@ -1012,7 +1027,7 @@ sub updateqosgraph { "-1".$period, "-r", "-t ".$Lang::tr{'Utilization on'}." (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"},
"-v ".$Lang::tr{'bytes per second'},
"--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"},"-v ".$Lang::tr{'bits per second'},
@@ -1039,21 +1054,24 @@ sub updateqosgraph { }
if ( $classline[0] eq $qossettings{'DEV'} ){
push(@command, "DEF:$classline[1]=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
# Found: ERROR: rpn expressions without DEF or CDEF variables are not supported
# CDEF does not like a number as a variable name. ie. "204" from $classline[1]
push(@command, "DEF:$classline[1]bit=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE");
push(@command, "CDEF:$classline[8]=$classline[1]bit,8,*"); # get color to be used for this graph my $graphColor = $colorMap{$colorKey}; if ($count eq "1") {
push(@command, "AREA:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8]));
push(@command, "AREA:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); } else {
push(@command, "STACK:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8]));
push(@command, "STACK:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); }
push(@command, "GPRINT:$classline[1]:MAX:%8.1lf %sBps"
, "GPRINT:$classline[1]:AVERAGE:%8.1lf %sBps"
, "GPRINT:$classline[1]:MIN:%8.1lf %sBps"
, "GPRINT:$classline[1]:LAST:%8.1lf %sBps\\j");
push(@command, "GPRINT:$classline[8]:MAX:%8.1lf %sbps"
, "GPRINT:$classline[8]:AVERAGE:%8.1lf %sbps"
, "GPRINT:$classline[8]:MIN:%8.1lf %sbps"
}, "GPRINT:$classline[8]:LAST:%8.1lf %sbps\\j"); $count++; }
diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index dc1fd8d67b30..b0097074beb0 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -515,6 +515,7 @@ 'broken pipe' => 'Broken pipe', 'buffered memory' => 'Buffered Memory', 'buffers' => 'buffers', +'bits per second' => 'Bits per Second', 'bytes per second' => 'Bytes per Second', 'bytes received' => 'Bytes Received', 'bytes sent' => 'Bytes Sent', @@ -1431,10 +1432,10 @@ 'inactive' => 'inactive', 'include logfiles' => 'Include logfiles', 'incoming' => 'incoming', -'incoming compression in bytes per second' => 'Incoming Compression', +'incoming compression in bits per second' => 'Incoming Compression', 'incoming firewall access' => 'Incoming Firewall Access', -'incoming overhead in bytes per second' => 'Incoming Overhead', -'incoming traffic in bytes per second' => 'Incoming Traffic', +'incoming overhead in bits per second' => 'Incoming Overhead', +'incoming traffic in bits per second' => 'Incoming Traffic', 'incorrect password' => 'Incorrect password', 'info' => 'Info', 'init string' => 'Init:', @@ -1907,7 +1908,7 @@ 'our donors' => 'Our donors', 'out' => 'Out', 'outgoing' => 'outgoing', -'outgoing compression in bytes per second' => 'Outgoing compression', +'outgoing compression in bits per second' => 'Outgoing compression', 'outgoing firewall' => 'Outgoing Firewall', 'outgoing firewall access' => 'Outgoing Firewall Access', 'outgoing firewall add ip group' => 'Add IP Address Group', @@ -1930,8 +1931,8 @@ 'outgoing firewall reset' => 'Reset all', 'outgoing firewall view group' => 'View group', 'outgoing firewall warning' => 'Not selecting source ip or mac ignores them', -'outgoing overhead in bytes per second' => 'Outgoing Overhead', -'outgoing traffic in bytes per second' => 'Outgoing Traffic', +'outgoing overhead in bits per second' => 'Outgoing Overhead', +'outgoing traffic in bits per second' => 'Outgoing Traffic', 'override mtu' => 'Override default MTU', 'ovpn' => 'OpenVPN', 'ovpn add conf' => 'Additional configuration',
I noticed your pic is missing 'Outgoing Traffic'. Did you regenerate the language cache files? This only has to done by us manually, but I assume an update package would do this, or the files would already be in new version, like the ISO.
The Lang keys are in langs/en/cgi-bin/en.pl, which is in this patch. As these keys are only used for these graphs, as far as I can find, I guess we could change/shorten them. But I didn't want to change something that I wasn't specifically focusing on.
Thanks, Nate
On 24/05/2021 15:43, Bernhard Bitsch wrote:
Hi,
I've tested also, for the qos and network graphs. No problem.
One annotation: why are the legends 'incoming traffic in bytes per second' ( new '... bits per second' )? The associated text is 'incoming traffic' ( obviously in both versions ). Can't we change this key just to 'incoming traffic'? This is true for 'outgoing traffic...', 'incoming overhead...', ... I didn't search where this texts are used in the project.
Regards, Bernhard
Am 24.05.2021 um 18:18 schrieb Matthias Fischer:
Hi,
thanks for the corrected patch - now I could apply it.
I made a quick test => please see attachments.
Seems to work as expected.
However I cannot test VPN connections, sorry.
Best, Matthias
On 24.05.2021 16:04, nateos2g@fastmail.com wrote:
From: Nate Oaks nateos2g@fastmail.com
For proper display of network measurements, Bps (bytes) should be converted to bps (bits). Bytes are for data/storage (RAM, HDD, SSD, etc.), bits are for network bandwidth or throughput (NICs, switches, routers, WiFi adapters, etc.).
Networks transfer data as single bits at a time. It’s both more accurate and more intuitive to measure network speed in bits per second that a network connection is transmitting, not the amount of data units, or bytes, it transmits. Notice all network devices are marketed, measure and diplay in bits per second.
I simply used RRD CDEF to multiply by 8.
NOTE: Found: "ERROR: rpn expressions without DEF or CDEF variables are not supported". Specifically in updateqosgraph, CDEF does not like a number as a variable name. ie. "204" from $classline[1].
Requires update of the language cache files: perl -e "require '/var/ipfire/lang.pl'; &Lang::BuildCacheLang" or: update-lang-cache
Found one other asking for this: https://community.ipfire.org/t/ipfire-bandwidth-usage/1203
Signed-off-by: Nate Oaks nateos2g@fastmail.com
config/cfgroot/graphs.pl | 202 +++++++++++++++++++++------------------ langs/en/cgi-bin/en.pl | 13 +-- 2 files changed, 117 insertions(+), 98 deletions(-)
diff --git a/config/cfgroot/graphs.pl b/config/cfgroot/graphs.pl index 441d4c483a46..c83ae67bbfc1 100644 --- a/config/cfgroot/graphs.pl +++ b/config/cfgroot/graphs.pl @@ -545,28 +545,30 @@ sub updateifgraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/interface/if_octets-".$interface.".rrd:tx:AVERAGE", - "CDEF:outgoingn=outgoing,-1,*", + "CDEF:outgoingb=outgoing,8,*", + "CDEF:outgoingn=outgoingb,-1,*", + "CDEF:incomingb=incoming,8,*", "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j",
"AREA:incoming".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bytes per second'}), - "GPRINT:incoming:MAX:%8.1lf %sBps", - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", - "GPRINT:incoming:MIN:%8.1lf %sBps", - "GPRINT:incoming:LAST:%8.1lf %sBps\j",
"AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bytes per second'}), - "GPRINT:outgoing:MAX:%8.1lf %sBps", - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", - "GPRINT:outgoing:MIN:%8.1lf %sBps", - "GPRINT:outgoing:LAST:%8.1lf %sBps\j",
"AREA:incomingb".$color{"color12"}."A0:".sprintf("%-20s",$Lang::tr{'incoming traffic in bits per second'}), + "GPRINT:incomingb:MAX:%8.1lf %sbps", + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", + "GPRINT:incomingb:MIN:%8.1lf %sbps", + "GPRINT:incomingb:LAST:%8.1lf %sbps\j",
"AREA:outgoingn".$color{"color13"}."A0:".sprintf("%-20s",$Lang::tr{'outgoing traffic in bits per second'}), + "GPRINT:outgoingb:MAX:%8.1lf %sbps", + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", + "GPRINT:outgoingb:MIN:%8.1lf %sbps", + "GPRINT:outgoingb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; @@ -582,28 +584,30 @@ sub updatevpngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, "DEF:incoming=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:rx:AVERAGE", "DEF:outgoing=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive.rrd:tx:AVERAGE", - "CDEF:outgoingn=outgoing,-1,*", + "CDEF:outgoingb=outgoing,8,*", + "CDEF:outgoingn=outgoingb,-1,*", + "CDEF:incomingb=incoming,8,*", "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j",
- "AREA:incoming#00dd00:".sprintf("%-20s",$Lang::tr{'incoming
traffic in bytes per second'}), - "GPRINT:incoming:MAX:%8.1lf %sBps", - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", - "GPRINT:incoming:MIN:%8.1lf %sBps", - "GPRINT:incoming:LAST:%8.1lf %sBps\j",
- "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing
traffic in bytes per second'}), - "GPRINT:outgoing:MAX:%8.1lf %sBps", - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", - "GPRINT:outgoing:MIN:%8.1lf %sBps", - "GPRINT:outgoing:LAST:%8.1lf %sBps\j",
- "AREA:incomingb#00dd00:".sprintf("%-20s",$Lang::tr{'incoming
traffic in bits per second'}), + "GPRINT:incomingb:MAX:%8.1lf %sbps", + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", + "GPRINT:incomingb:MIN:%8.1lf %sbps", + "GPRINT:incomingb:LAST:%8.1lf %sbps\j",
- "AREA:outgoingn#dd0000:".sprintf("%-20s",$Lang::tr{'outgoing
traffic in bits per second'}), + "GPRINT:outgoingb:MAX:%8.1lf %sbps", + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", + "GPRINT:outgoingb:MIN:%8.1lf %sbps", + "GPRINT:outgoingb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; @@ -619,7 +623,7 @@ sub updatevpnn2ngraph { "-1".$period, "-r", "-t ".$Lang::tr{'traffic on'}." ".$interface." ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, @@ -629,44 +633,50 @@ sub updatevpnn2ngraph { "DEF:overhead_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/if_octets_derive-overhead.rrd:tx:AVERAGE", "DEF:compression_in=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_in.rrd:uncompressed:AVERAGE", "DEF:compression_out=".$mainsettings{'RRDLOG'}."/collectd/localhost/openvpn-$interface/compression_derive-data_out.rrd:uncompressed:AVERAGE", - "CDEF:outgoingn=outgoing,-1,*", - "CDEF:overhead_outn=overhead_out,-1,*", - "CDEF:compression_outn=compression_out,-1,*", + "CDEF:outgoingb=outgoing,8,*", + "CDEF:outgoingn=outgoingb,-1,*", + "CDEF:incomingb=incoming,8,*", + "CDEF:overhead_outb=overhead_out,8,*", + "CDEF:overhead_outn=overhead_outb,-1,*", + "CDEF:overhead_inb=overhead_in,8,*", + "CDEF:compression_outb=compression_out,8,*", + "CDEF:compression_outn=compression_outb,-1,*", + "CDEF:compression_inb=compression_in,8,*", "COMMENT:".sprintf("%-20s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%15s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j",
- "AREA:incoming#00dd00:".sprintf("%-23s",$Lang::tr{'incoming
traffic in bytes per second'}), - "GPRINT:incoming:MAX:%8.1lf %sBps", - "GPRINT:incoming:AVERAGE:%8.1lf %sBps", - "GPRINT:incoming:MIN:%8.1lf %sBps", - "GPRINT:incoming:LAST:%8.1lf %sBps\j",
- "STACK:overhead_in#116B11:".sprintf("%-23s",$Lang::tr{'incoming
overhead in bytes per second'}), - "GPRINT:overhead_in:MAX:%8.1lf %sBps", - "GPRINT:overhead_in:AVERAGE:%8.1lf %sBps", - "GPRINT:overhead_in:MIN:%8.1lf %sBps", - "GPRINT:overhead_in:LAST:%8.1lf %sBps\j",
- "LINE1:compression_in#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming
compression in bytes per second'}), - "GPRINT:compression_in:MAX:%8.1lf %sBps", - "GPRINT:compression_in:AVERAGE:%8.1lf %sBps", - "GPRINT:compression_in:MIN:%8.1lf %sBps", - "GPRINT:compression_in:LAST:%8.1lf %sBps\j",
- "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing
traffic in bytes per second'}), - "GPRINT:outgoing:MAX:%8.1lf %sBps", - "GPRINT:outgoing:AVERAGE:%8.1lf %sBps", - "GPRINT:outgoing:MIN:%8.1lf %sBps", - "GPRINT:outgoing:LAST:%8.1lf %sBps\j",
- "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing
overhead in bytes per second'}), - "GPRINT:overhead_out:MAX:%8.1lf %sBps", - "GPRINT:overhead_out:AVERAGE:%8.1lf %sBps", - "GPRINT:overhead_out:MIN:%8.1lf %sBps", - "GPRINT:overhead_out:LAST:%8.1lf %sBps\j",
"LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bytes per second'}), - "GPRINT:compression_out:MAX:%8.1lf %sBps", - "GPRINT:compression_out:AVERAGE:%8.1lf %sBps", - "GPRINT:compression_out:MIN:%8.1lf %sBps", - "GPRINT:compression_out:LAST:%8.1lf %sBps\j",
- "AREA:incomingb#00dd00:".sprintf("%-23s",$Lang::tr{'incoming
traffic in bits per second'}), + "GPRINT:incomingb:MAX:%8.1lf %sbps", + "GPRINT:incomingb:AVERAGE:%8.1lf %sbps", + "GPRINT:incomingb:MIN:%8.1lf %sbps", + "GPRINT:incomingb:LAST:%8.1lf %sbps\j",
- "STACK:overhead_inb#116B11:".sprintf("%-23s",$Lang::tr{'incoming
overhead in bits per second'}), + "GPRINT:overhead_inb:MAX:%8.1lf %sbps", + "GPRINT:overhead_inb:AVERAGE:%8.1lf %sbps", + "GPRINT:overhead_inb:MIN:%8.1lf %sbps", + "GPRINT:overhead_inb:bLAST:%8.1lf %sbps\j",
"LINE1:compression_inb#ff00ff:".sprintf("%-23s",$Lang::tr{'incoming compression in bits per second'}), + "GPRINT:compression_inb:MAX:%8.1lf %sbps", + "GPRINT:compression_inb:AVERAGE:%8.1lf %sbps", + "GPRINT:compression_inb:MIN:%8.1lf %sbps", + "GPRINT:compression_inb:LAST:%8.1lf %sbps\j",
- "AREA:outgoingn#dd0000:".sprintf("%-23s",$Lang::tr{'outgoing
traffic in bits per second'}), + "GPRINT:outgoingb:MAX:%8.1lf %sbps", + "GPRINT:outgoingb:AVERAGE:%8.1lf %sbps", + "GPRINT:outgoingb:MIN:%8.1lf %sbps", + "GPRINT:outgoingb:LAST:%8.1lf %sbps\j",
- "STACK:overhead_outn#870C0C:".sprintf("%-23s",$Lang::tr{'outgoing
overhead in bits per second'}), + "GPRINT:overhead_outb:MAX:%8.1lf %sbps", + "GPRINT:overhead_outb:AVERAGE:%8.1lf %sbps", + "GPRINT:overhead_outb:MIN:%8.1lf %sbps", + "GPRINT:overhead_outb:LAST:%8.1lf %sbps\j",
"LINE1:compression_outn#000000:".sprintf("%-23s",$Lang::tr{'outgoing compression in bits per second'}), + "GPRINT:compression_outb:MAX:%8.1lf %sbps", + "GPRINT:compression_outb:AVERAGE:%8.1lf %sbps", + "GPRINT:compression_outb:MIN:%8.1lf %sbps", + "GPRINT:compression_outb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for ".$interface.": ".$ERROR."\n" if $ERROR; @@ -683,7 +693,7 @@ sub updatefwhitsgraph { "-1".$period, "-r", "-t ".$Lang::tr{'firewall hits per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, @@ -692,36 +702,41 @@ sub updatefwhitsgraph { "DEF:forward=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-POLICYFWD/ipt_bytes-DROP_FORWARD.rrd:value:AVERAGE", "DEF:newnotsyn=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-NEWNOTSYN/ipt_bytes-DROP_NEWNOTSYN.rrd:value:AVERAGE", "DEF:portscan=".$mainsettings{'RRDLOG'}."/collectd/localhost/iptables-filter-PSCAN/ipt_bytes-DROP_PScan.rrd:value:AVERAGE", + "CDEF:outputb=output,8,*", + "CDEF:inputb=input,8,*", + "CDEF:forwardb=forward,8,*", + "CDEF:newnotsynb=newnotsyn,8,*", + "CDEF:portscanb=portscan,8,*", "COMMENT:".sprintf("%-26s",$Lang::tr{'caption'}), "COMMENT:".sprintf("%15s",$Lang::tr{'maximal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'average'}), "COMMENT:".sprintf("%14s",$Lang::tr{'minimal'}), "COMMENT:".sprintf("%15s",$Lang::tr{'current'})."\j",
"AREA:output".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"), - "GPRINT:output:MAX:%8.1lf %sBps", - "GPRINT:output:AVERAGE:%8.1lf %sBps", - "GPRINT:output:MIN:%8.1lf %sBps", - "GPRINT:output:LAST:%8.1lf %sBps\j",
"STACK:forward".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"), - "GPRINT:forward:MAX:%8.1lf %sBps", - "GPRINT:forward:AVERAGE:%8.1lf %sBps", - "GPRINT:forward:MIN:%8.1lf %sBps", - "GPRINT:forward:LAST:%8.1lf %sBps\j",
"STACK:input".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"), - "GPRINT:input:MAX:%8.1lf %sBps", - "GPRINT:input:AVERAGE:%8.1lf %sBps", - "GPRINT:input:MIN:%8.1lf %sBps", - "GPRINT:input:LAST:%8.1lf %sBps\j",
"STACK:newnotsyn".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"), - "GPRINT:newnotsyn:MAX:%8.1lf %sBps", - "GPRINT:newnotsyn:AVERAGE:%8.1lf %sBps", - "GPRINT:newnotsyn:MIN:%8.1lf %sBps", - "GPRINT:newnotsyn:LAST:%8.1lf %sBps\j",
"STACK:portscan".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}), - "GPRINT:portscan:MAX:%8.1lf %sBps", - "GPRINT:portscan:AVERAGE:%8.1lf %sBps", - "GPRINT:portscan:MIN:%8.1lf %sBps", - "GPRINT:portscan:LAST:%8.1lf %sBps\j",
"AREA:outputb".$color{"color25"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (OUTPUT)"), + "GPRINT:outputb:MAX:%8.1lf %sbps", + "GPRINT:outputb:AVERAGE:%8.1lf %sbps", + "GPRINT:outputb:MIN:%8.1lf %sbps", + "GPRINT:outputb:LAST:%8.1lf %sbps\j",
"STACK:forwardb".$color{"color23"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (FORWARD)"), + "GPRINT:forwardb:MAX:%8.1lf %sbps", + "GPRINT:forwardb:AVERAGE:%8.1lf %sbps", + "GPRINT:forwardb:MIN:%8.1lf %sbps", + "GPRINT:forwardb:LAST:%8.1lf %sbps\j",
"STACK:inputb".$color{"color24"}."A0:".sprintf("%-25s",$Lang::tr{'firewallhits'}." (INPUT)"), + "GPRINT:inputb:MAX:%8.1lf %sbps", + "GPRINT:inputb:AVERAGE:%8.1lf %sbps", + "GPRINT:inputb:MIN:%8.1lf %sbps", + "GPRINT:inputb:LAST:%8.1lf %sbps\j",
"STACK:newnotsynb".$color{"color14"}."A0:".sprintf("%-25s","NewNotSYN"),
+ "GPRINT:newnotsynb:MAX:%8.1lf %sbps", + "GPRINT:newnotsynb:AVERAGE:%8.1lf %sbps", + "GPRINT:newnotsynb:MIN:%8.1lf %sbps", + "GPRINT:newnotsynb:LAST:%8.1lf %sbps\j",
"STACK:portscanb".$color{"color16"}."A0:".sprintf("%-25s",$Lang::tr{'portscans'}), + "GPRINT:portscanb:MAX:%8.1lf %sbps", + "GPRINT:portscanb:AVERAGE:%8.1lf %sbps", + "GPRINT:portscanb:MIN:%8.1lf %sbps", + "GPRINT:portscanb:LAST:%8.1lf %sbps\j", ); $ERROR = RRDs::error; return "Error in RRD::graph for firewallhits: ".$ERROR."\n" if $ERROR; @@ -1012,7 +1027,7 @@ sub updateqosgraph { "-1".$period, "-r", "-t ".$Lang::tr{'Utilization on'}." (".$qossettings{'DEV'}.") ".$Lang::tr{'graph per'}." ".$Lang::tr{$period."-graph"}, - "-v ".$Lang::tr{'bytes per second'}, + "-v ".$Lang::tr{'bits per second'}, "--color=SHADEA".$color{"color19"}, "--color=SHADEB".$color{"color19"}, "--color=BACK".$color{"color21"}, @@ -1039,21 +1054,24 @@ sub updateqosgraph { } if ( $classline[0] eq $qossettings{'DEV'} ){ - push(@command, "DEF:$classline[1]=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); + # Found: ERROR: rpn expressions without DEF or CDEF variables are not supported + # CDEF does not like a number as a variable name. ie. "204" from $classline[1] + push(@command, "DEF:$classline[1]bit=$mainsettings{'RRDLOG'}/class_$qossettings{'CLASSPRFX'}-$classline[1]_$qossettings{'DEV'}.rrd:bytes:AVERAGE"); + push(@command, "CDEF:$classline[8]=$classline[1]bit,8,*"); # get color to be used for this graph my $graphColor = $colorMap{$colorKey}; if ($count eq "1") { - push(@command, "AREA:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); + push(@command, "AREA:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); } else { - push(@command, "STACK:$classline[1]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); + push(@command, "STACK:$classline[8]$graphColor:$Lang::tr{'Class'} $classline[1] -".sprintf("%15s",$classline[8])); } - push(@command, "GPRINT:$classline[1]:MAX:%8.1lf %sBps" - , "GPRINT:$classline[1]:AVERAGE:%8.1lf %sBps" - , "GPRINT:$classline[1]:MIN:%8.1lf %sBps" - , "GPRINT:$classline[1]:LAST:%8.1lf %sBps\j"); + push(@command, "GPRINT:$classline[8]:MAX:%8.1lf %sbps" + , "GPRINT:$classline[8]:AVERAGE:%8.1lf %sbps" + , "GPRINT:$classline[8]:MIN:%8.1lf %sbps" + , "GPRINT:$classline[8]:LAST:%8.1lf %sbps\j"); $count++; } } diff --git a/langs/en/cgi-bin/en.pl b/langs/en/cgi-bin/en.pl index dc1fd8d67b30..b0097074beb0 100644 --- a/langs/en/cgi-bin/en.pl +++ b/langs/en/cgi-bin/en.pl @@ -515,6 +515,7 @@ 'broken pipe' => 'Broken pipe', 'buffered memory' => 'Buffered Memory', 'buffers' => 'buffers', +'bits per second' => 'Bits per Second', 'bytes per second' => 'Bytes per Second', 'bytes received' => 'Bytes Received', 'bytes sent' => 'Bytes Sent', @@ -1431,10 +1432,10 @@ 'inactive' => 'inactive', 'include logfiles' => 'Include logfiles', 'incoming' => 'incoming', -'incoming compression in bytes per second' => 'Incoming Compression', +'incoming compression in bits per second' => 'Incoming Compression', 'incoming firewall access' => 'Incoming Firewall Access', -'incoming overhead in bytes per second' => 'Incoming Overhead', -'incoming traffic in bytes per second' => 'Incoming Traffic', +'incoming overhead in bits per second' => 'Incoming Overhead', +'incoming traffic in bits per second' => 'Incoming Traffic', 'incorrect password' => 'Incorrect password', 'info' => 'Info', 'init string' => 'Init:', @@ -1907,7 +1908,7 @@ 'our donors' => 'Our donors', 'out' => 'Out', 'outgoing' => 'outgoing', -'outgoing compression in bytes per second' => 'Outgoing compression', +'outgoing compression in bits per second' => 'Outgoing compression', 'outgoing firewall' => 'Outgoing Firewall', 'outgoing firewall access' => 'Outgoing Firewall Access', 'outgoing firewall add ip group' => 'Add IP Address Group', @@ -1930,8 +1931,8 @@ 'outgoing firewall reset' => 'Reset all', 'outgoing firewall view group' => 'View group', 'outgoing firewall warning' => 'Not selecting source ip or mac ignores them', -'outgoing overhead in bytes per second' => 'Outgoing Overhead', -'outgoing traffic in bytes per second' => 'Outgoing Traffic', +'outgoing overhead in bits per second' => 'Outgoing Overhead', +'outgoing traffic in bits per second' => 'Outgoing Traffic', 'override mtu' => 'Override default MTU', 'ovpn' => 'OpenVPN', 'ovpn add conf' => 'Additional configuration',