Network Statistics

Status
Für weitere Antworten geschlossen.

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
hi leutz,

ich bastle gerade an einer einfachen, aber hübschen Netzwerk Statistik (netstats). Ungefähr soviel wie vnstat, aber etwas weniger aufwendig. Die Daten werden auch über ein cron-Skript gesammelt.
Rich (BBCode):
0,30    *       *       *       *       root    /bin/sh /usr/sbin/netstatsd

Das Skript /usr/sbin/netstatsd sucht sich die Netzwerk-Infos und schreibt sie in eine Datei namens /var/log/netstats:
Rich (BBCode):
[ "$1" == "" ] || exit 1
NOW=$(</proc/net/dev sed 's/:/ /'|awk 'NR==3{printf("%d %d %d %d\n",$2,$3,$10,$11)}')
date "+%m %d %H %M $NOW" >>/var/log/netstats

Abfragen kann man die Statistik-Datei mit dem Skript /usr/sbin/netstats:
Rich (BBCode):
[ "$1" == "" ] || exit 1
</var/log/netstats awk "/^$GET/{
if(v1==0||\$5<v1)v1=\$5;else v1delta+=\$5-v1;
if(v2==0||\$6<v2)v2=\$6;else v2delta+=\$6-v2;
if(v3==0||\$7<v3)v3=\$7;else v3delta+=\$7-v3;
if(v4==0||\$8<v4)v4=\$8;else v4delta+=\$8-v4;
}
{v1=\$5;v2=\$6;v3=\$7;v4=\$8;}
END{if(v2delta>0)printf(\"%14d kB %5d %14d kB %5d\n\",v1delta/1000,v1delta/v2delta,v3delta/1000,v3delta/v4delta);
else printf(\"%14d kB %5d %14d kB %5d\n\",0,0,0,0)}"

Die Selektion kann man einschränken über die Shell-Variable GET:
Rich (BBCode):
export GET
GET="07 11 10"
netstats

GET hat den Aufbau Monat (mm), Tag (dd), Stunde (hh), also "[mm [dd [hh]]]". Wenn man nur für einen Tag die Statistiken haben will, lässt man einfach die Stunde weg: "07 11", steht für 11.Juli. Die Ausgabe sähe dann zum Beispiel so aus:
Rich (BBCode):
Synology> GET="07 11"
Synology> netstats
          2555 kB   105           9743 kB   457

Mit einer Schleife könnte man sich dann eine Tages- oder Monats-Statistik ziehen:
Rich (BBCode):
export GET
HOURS="00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23"
T1=""
$(G=`date "+%m %d "`;for t in $HOURS;
do GET=$G$t;echo -e "$t:00 - $t:59\c";/usr/sbin/netstats;done)

gibt aus:
Rich (BBCode):
00:00 - 00:59            22 kB   122             31 kB   138
01:00 - 01:59            18 kB   126             23 kB   118
02:00 - 02:59            18 kB   127             22 kB   117
03:00 - 03:59            19 kB   125             24 kB   116
04:00 - 04:59            18 kB   126             23 kB   118
05:00 - 05:59            17 kB   125             22 kB   119
06:00 - 06:59            18 kB   126             23 kB   118
07:00 - 07:59           417 kB   104           2949 kB   757
08:00 - 08:59           876 kB   147           2111 kB   466
09:00 - 09:59           326 kB    90            947 kB   326
10:00 - 10:59           240 kB   101            404 kB   503
11:00 - 11:59           560 kB    76           3159 kB   407
12:00 - 12:59             0 kB     0              0 kB     0
13:00 - 13:59             0 kB     0              0 kB     0
14:00 - 14:59             0 kB     0              0 kB     0
15:00 - 15:59             0 kB     0              0 kB     0
16:00 - 16:59             0 kB     0              0 kB     0
17:00 - 17:59             0 kB     0              0 kB     0
18:00 - 18:59             0 kB     0              0 kB     0
19:00 - 19:59             0 kB     0              0 kB     0
20:00 - 20:59             0 kB     0              0 kB     0
21:00 - 21:59             0 kB     0              0 kB     0
22:00 - 22:59             0 kB     0              0 kB     0
23:00 - 23:59             0 kB     0              0 kB     0

oder als Google-Grafik:
Rich (BBCode):
export GET
HOURS="00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23"
T1=""
for i in $HOURS; do
GET=`date "+%m %d "`$i
if [ "$T1" == "" ] ; then
T1=$(/usr/sbin/netstats | awk '{print $1}');
T2=$(/usr/sbin/netstats | awk '{print $4}');
else
T1=$T1","$(/usr/sbin/netstats | awk '{print $1'});
T2=$T2","$(/usr/sbin/netstats | awk '{print $4'});
fi
done
cat <<EOT
<img src="http://chart.apis.google.com/chart?cht=bhg&chds=0,5000&&chbh=6,0,2&chf=bg,s,efefef00
&chg=10,25&chco=3333ff,996699&chs=200x360&chxt=x&chxl=0:|0|2.5 MB|5 MB&chd=t:$T1|$T2">
EOT

chart


Man kann auch beides kombinieren (*Avg ist die durchschnittliche Packet-Size):
 

Anhänge

  • netstats.jpg
    netstats.jpg
    51,6 KB · Aufrufe: 267
Zuletzt bearbeitet:

sirana

Benutzer
Mitglied seit
28. Apr 2010
Beiträge
42
Punkte für Reaktionen
0
Punkte
6
bei mir gabs bei dem script doch so eine probleme... dann haben paar Freunde mir dabei noch geholfen (hab selber kA vom Coden) und das sind unsere ergebnisse damit es klappt:

/usr/sbin/netstatsd
Rich (BBCode):
NOW=$(</proc/net/dev sed 's/:/ /'|awk 'NR==3{printf("%d %d %d %d\n",$2,$3,$10,$11)}')
date "+%m %d %H %M $NOW" >>/var/log/netstats

/usr/sbin/netstats
die blieb so wie es war

und dann die Stunden Statistik:
Rich (BBCode):
#!/bin/sh

HOURS="00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23"
G=`date "+%m %d "`

for t in $HOURS; do
  export GET=$G$t
  echo -e "$t:00 - $t:59\c"
  /usr/sbin/netstats
done

so hatte es dann erst bei mir geklappt...
 

itari

Benutzer
Mitglied seit
15. Mai 2008
Beiträge
21.900
Punkte für Reaktionen
14
Punkte
0
Dieses Skript ist ja mittlerweise schon recht alt. Es ist jetzt im AdminTool und funktioniert dort in ähnlicher Weise ... hab jetzt nicht im Kopf, ob ich da viel geändert habe ... also bei mir gehts ja immer, aber ich kann nicht immer alle Problemmöglichkeiten ausschließen.

Kannst dir ja auch mal das AdminTool anschauen.

Itari
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat