Webstatt.org - Community seit 2006 - 2012 (2024?)

Traffic im Griff

Avatar user-236
27.11.2006 20:00

Hi zusammen,

ich bin auf der Suche nach einer guten Möglichkeit meinen Traffic auf dem VServer leichter zu kontrollieren. Habt ihr vielleicht script parat, dass Auswertungen versenden kann?
Da ich in letzter Zeit sehr wenig Zeit habe mich um den Server zu kümmern, bin ich schon am überlegen, ob ich nicht zu einem Managed Webserver greifen soll. Zwar ist das ein Managed VServer, aber ich hab nicht gerade das Gefühl, dass sich das Netclusive Team gut darum kümmert. Hat von euch auch jemand einen VServer bei denen und kann das bestätigen? Irgendwie möchte man halt schon ruhiger schlafen Fettes Grinsen und ich hab keine Lust irgendwann draufzublechen nur weil die Kiste irgendwo ein Loch hat. Hat da von euch vielleicht jemand mehr Erfahrung?

signature in progress
user-303
27.11.2006 20:43

hab mal en kleines script geschrieben(php), das aktuelle traffic zahlen in die db geschrieben hat (per cron). dazu noch ne classe, mit der man das dann als statistik auswerten kann. allerdings nicht unbedingt bedienfreundlich...willste haben?

Avatar user-168
27.11.2006 21:31

Das würd mich auch mal interessieren. Wenn es dir nichts ausmacht, kannste mir mal ne PN schicken. Vllt kann man dann ja mal kurz ICQ Nummer austauschen.


Zu deiner Sig: Wasn da los bei euerm Radio?

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-182
27.11.2006 21:37

leute, ihr müsst wissen, dass ein php script alleine wohl nicht dafür ausreicht zwinkern
ich könnte mir nur gut denken, dass er im hintergrund so programme wie vnstat laufen hat zwinkern und das php-script macht halt nicht mehr, als die daten zusammenzufassen und zu loggen lächeln

Seid ihr auch schon wix'r? xD
Avatar user-168
27.11.2006 22:18

Mich interessiert auch vornehmlich ein Script, an dem ich das Erzeugen von Graphen erlernen kann. Hab da bisher noch keine wirklich guten Tutorials gefunden, die auch mal was inhaltlich sinnvolles machen.

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
user-303
28.11.2006 07:43

franky, das script liest einfach in regelmäßigen abstenden den linux internen traffic zähler ab. der zähler wird aber bei 4gig auf 0 gesetzt. deswegen muss mans immer neu auslesen. und das macht bei mir en php script im cron.

user-303
28.11.2006 07:52

also hier...

bin in der schule und kanns deswegen nicht als zip anhängen. (die rechner sind kacka).

db struktur:
CREATE TABLE `traffic` (
`id` int(100) NOT NULL auto_increment,
`day` int(2) NOT NULL default '0',
`month` int(2) NOT NULL default '0',
`year` int(4) NOT NULL default '0',
`hour` int(2) NOT NULL default '0',
`minute` int(2) NOT NULL default '0',
`rx` bigint(255) NOT NULL default '0',
`tx` bigint(255) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM


traffic.php (per cron ausführen (befehl: "php traffic.php"zwinkern, nicht im web ordner!)

<?php
/*
das problem:
der linux interne traffic zähler wird bei 4gb auf 0 gesetzt.
dieses script soll dem entgegen wirken, in dem es dauernd aufgerufen wird und somit den unterschied
auffasst und in einer datenbank ablegt.

Snake

*/
chdir('/root/traffic/'zwinkern;
function getfile($file) { return file_exists($file) ? file_get_contents($file) : 0; }
function setfile($file, $content, $mode='w'zwinkern {
$fp = fopen($file, $mode);
fwrite($fp, $content);
fclose($fp);
}
require('traffic.lib.php'zwinkern;
$oldrx = getfile('temp.rx'zwinkern; //old stats since last script run
$oldtx = getfile('temp.tx'zwinkern;
setfile('temp.rx', $rx); //set new states for the next script run
setfile('temp.tx', $tx);
if($oldrx > $rx) { //if the new state is lower than the old, the timer was reset since the last run
$rx = 4294967296-$oldrx+$rx; //4294967296byte=4gb
} else {
$rx = $rx-$oldrx; //no reset. new-old=since last script run
}
if($oldtx > $tx) { //same as rx
$tx = 4294967296-$oldtx+$tx; //4294967296byte=4gb
} else {
$tx = $tx-$oldtx;//no reset. new-old=since last script run
}

$hMysql = mysql_connect('localhost', 'abcdef', 'abcdef'zwinkern or die(__FILE__.':'.__LINE__.':'.mysql_error().chr(10));
mysql_select_db('traffic', $hMysql) or die(__FILE__.':'.__LINE__.':'.mysql_error().chr(10));
mysql_query('INSERT INTO `traffic` (`day`, `month`, `year`, `hour`, `minute`, `rx`, `tx`) VALUES
('.date('d, m, Y, H, i'zwinkern.' , '.$rx.', '.$tx.'zwinkern', $hMysql) or die(__FILE__.':'.__LINE__.':'.mysql_error().chr(10));
mysql_close($hMysql);


traffic.lib.php:
<?php
//read traffic from /proc/net/dev
// 07.01.06 user-303 <snake@s-n-a-k-e.net>
function gettraffic() {
$traffic = file('/proc/net/dev'zwinkern;
/*
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo:587345569 12585471 0 0 0 0 0 0 587345569 12585471 0 0 0 0 0 0
venet0:3440747962 218989495 0 0 0 0 0 0 2674333424 344658534 0 0 0 0 0 0
*/
//search line with 'eth0';
for($i=0;$i<count($traffic);$i++) {
if(substr(trim($traffic[$i]), 0, 4) == 'eth0'zwinkern {
$line = $traffic[$i];
break;
}
}
if(!isset($line)) die(__FILE__.':'.__LINE__.': ethenet controler not active! abort!'.chr(10));

$line = substr($line, strpos($line, ':'zwinkern+1);
while(strpos($line, ' 'zwinkern>0) {
$line = str_replace(' ', ' ', $line); //remove all double spaces
}
$ex = explode(' ', trim($line));
$rx = $ex[0]; //current states
$tx = $ex[8];
return array($rx, $tx);
}
list($rx, $tx) = gettraffic();
?>


nehmt es mir nicht übel, aber ich hatte das ding nie gecodet um es weiter zu geben. dementsprechend ist es auch geschrieben

user-303
28.11.2006 07:55

und hier zums im web auslesen (ein ordner 'temp' muss existieren und lesbar sein)

index.php
traffic.lib.php
graphite.lib.php

Avatar user-236
28.11.2006 18:31

hi snake,

vielen dank, ich schau mir das script am wochenende genauer an.

signature in progress