MRTG grafer över ramminnesanvändning

Permalänk
Medlem

MRTG grafer över ramminnesanvändning

Hej.

Jag undrar om någon har något tips på hur jag kan skapa mrtg grafer på hur mycket ramminnen min dator använder? Tacksam för alla tips och ideér!

Visa signatur

//Falcon

Permalänk
Medlem
Visa signatur

Old math teachers never die, they just tend to infinity.

Permalänk
Medlem

Får man tipsa om cacti istället kanske? Webfrontend till rrdtool. http://cacti.net

Visa signatur
Permalänk
Medlem

Tackar för svaren. Ska kolla lite på cacti.

Visa signatur

//Falcon

Permalänk
Medlem

Annars går det ju exec'a ett shellscript via mrtg som tar info från /proc (om du nu kör linux).
http://www.tty6.net/mrtg/
Detta är min mrtg, och i princip alla får sin info från script jag knåpat ihop själv. Går göra mycket roligt med mrtg om man har lust och fantasi.

Permalänk
Medlem

Man skulle inte kunna få se på dina scripts?

Visa signatur

//Falcon

Permalänk
Medlem

Det går fint. Jag kan lägga upp dem efter jobbet ida.

Permalänk

Det vore ytterst trevligt=)

/en till som är intresserad

Permalänk
Permalänk

denka: du får gärna lägga upp dina scripts också

Permalänk

Kom igen nu grabbar=)

Permalänk
Medlem

Vore verkligen trevligt att få se era mrtg script.

Visa signatur

//Falcon

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av denka
RRD är frekkare.

http://www.denniskarlsson.com/stats/rrd/index_webserver.php

riktigt schysst loadavg och memory

Här e liten samling av min.. egentligen har jag fler.. men inte sorterad på något sätt
http://stats.mada.h0ra.net/hosts.html

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av maDa
riktigt schysst loadavg och memory

Här e liten samling av min.. egentligen har jag fler.. men inte sorterad på något sätt
http://stats.mada.h0ra.net/hosts.html

Skulle man kunna få se hur du har löst ramminnes och cpu graferna?

Visa signatur

//Falcon

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av F@lcon
Skulle man kunna få se hur du har löst ramminnes och cpu graferna?

Javisst.. lägger upp scripten när jag kommer hem från jobbet

Permalänk
Medlem

fan ta er allihopa nu känner man sig tvingad att börja pyssla med detta igen istället för att spela wow

Permalänk
Medlem

Jag har satt upp lite script för att prioritera bandbredd mm... passade på att fixa grapher också: http://qos.grand1982.com/eth0/

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk

Kan inte ni som länkar till era skitsnygga grafer även lägga ut scripten någonstans? Det är det som vi vill ha i den här tråden;-)
Eller gillar ni inte open-source-idén månne?

Permalänk
Medlem

Klart vi gillar open source!

Mitt script kräver iptable och iproute2

#!/bin/bash #Flushing all tables iptables -F INPUT iptables -F FORWARD iptables -F OUTPUT iptables -t mangle -F iptables -t mangle -F INPUT iptables -t mangle -F FORWARD iptables -t mangle -F OUTPUT tc qdisc del dev eth0 root tc qdisc del dev eth1 root #Classes # eth0 tc qdisc add dev eth0 root handle 1: htb default 30 tc class add dev eth0 parent 1: classid 1:1 htb rate 9Mbit burst 6k tc class add dev eth0 parent 1:1 classid 1:10 htb rate 9Mbit burst 6k prio 1 tc class add dev eth0 parent 1:1 classid 1:20 htb rate 8Mbit burst 6k prio 2 tc class add dev eth0 parent 1:1 classid 1:30 htb rate 8Mbit burst 6k prio 3 tc class add dev eth0 parent 1:1 classid 1:40 htb rate 8Mbit burst 6k prio 4 tc class add dev eth0 parent 1:1 classid 1:50 htb rate 8Mbit burst 6k prio 5 tc class add dev eth0 parent 1:1 classid 1:60 htb rate 8Mbit burst 6k prio 6 tc class add dev eth0 parent 1:1 classid 1:70 htb rate 8Mbit burst 6k prio 7 tc class add dev eth0 parent 1:1 classid 1:80 htb rate 8Mbit burst 6k prio 8 tc class add dev eth0 parent 1:1 classid 1:90 htb rate 8Mbit burst 6k prio 9 tc class add dev eth0 parent 1:1 classid 1:100 htb rate 8Mbit burst 6k prio 10 tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10 tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10 tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10 tc qdisc add dev eth0 parent 1:40 handle 40: sfq perturb 10 tc qdisc add dev eth0 parent 1:50 handle 50: sfq perturb 10 tc qdisc add dev eth0 parent 1:60 handle 60: sfq perturb 10 tc qdisc add dev eth0 parent 1:70 handle 70: sfq perturb 10 tc qdisc add dev eth0 parent 1:80 handle 80: sfq perturb 10 tc qdisc add dev eth0 parent 1:90 handle 90: sfq perturb 10 tc qdisc add dev eth0 parent 1:100 handle 100: sfq perturb 10 #eth1 tc qdisc add dev eth1 root handle 2: htb default 30 tc class add dev eth1 parent 2: classid 2:1 htb rate 99Mbit burst 6k tc class add dev eth1 parent 2:1 classid 2:10 htb rate 99Mbit burst 6k prio 1 tc class add dev eth1 parent 2:1 classid 2:20 htb rate 99Mbit burst 6k prio 2 tc class add dev eth1 parent 2:1 classid 2:30 htb rate 99Mbit burst 6k prio 3 tc class add dev eth1 parent 2:1 classid 2:40 htb rate 99Mbit burst 6k prio 4 tc class add dev eth1 parent 2:1 classid 2:50 htb rate 99Mbit burst 6k prio 5 tc class add dev eth1 parent 2:1 classid 2:60 htb rate 99Mbit burst 6k prio 6 tc class add dev eth1 parent 2:1 classid 2:70 htb rate 99Mbit burst 6k prio 7 tc class add dev eth1 parent 2:1 classid 2:80 htb rate 99Mbit burst 6k prio 8 tc class add dev eth1 parent 2:1 classid 2:90 htb rate 99Mbit burst 6k prio 9 tc class add dev eth1 parent 2:1 classid 2:100 htb rate 99Mbit burst 6k prio 10 tc qdisc add dev eth1 parent 2:10 handle 10: sfq perturb 10 tc qdisc add dev eth1 parent 2:20 handle 20: sfq perturb 10 tc qdisc add dev eth1 parent 2:30 handle 30: sfq perturb 10 tc qdisc add dev eth1 parent 2:40 handle 40: sfq perturb 10 tc qdisc add dev eth1 parent 2:50 handle 50: sfq perturb 10 tc qdisc add dev eth1 parent 2:60 handle 60: sfq perturb 10 tc qdisc add dev eth1 parent 2:70 handle 70: sfq perturb 10 tc qdisc add dev eth1 parent 2:80 handle 80: sfq perturb 10 tc qdisc add dev eth1 parent 2:90 handle 90: sfq perturb 10 tc qdisc add dev eth1 parent 2:100 handle 100: sfq perturb 10 ##Classifying network stream #HLDS #eth0 iptables -t mangle -A FORWARD -p tcp --sport 27015 -j MARK --set-mark 1 iptables -t mangle -A OUTPUT -p tcp --sport 27015 -j MARK --set-mark 1 iptables -t mangle -A FORWARD -p udp --sport 27015 -j MARK --set-mark 1 iptables -t mangle -A OUTPUT -p udp --sport 27015 -j MARK --set-mark 1 iptables -t mangle -A FORWARD -p tcp --sport 27016 -j MARK --set-mark 1 iptables -t mangle -A OUTPUT -p tcp --sport 27016 -j MARK --set-mark 1 iptables -t mangle -A FORWARD -p udp --sport 27016 -j MARK --set-mark 1 iptables -t mangle -A OUTPUT -p udp --sport 27016 -j MARK --set-mark 1 iptables -t mangle -A FORWARD -p udp --dport 27005 -j MARK --set-mark 1 iptables -t mangle -A OUTPUT -p udp --dport 27005 -j MARK --set-mark 1 #eth1 iptables -t mangle -A FORWARD -p tcp --dport 27015 -j MARK --set-mark 11 iptables -t mangle -A OUTPUT -p tcp --dport 27015 -j MARK --set-mark 11 iptables -t mangle -A FORWARD -p udp --dport 27015 -j MARK --set-mark 11 iptables -t mangle -A OUTPUT -p udp --dport 27015 -j MARK --set-mark 11 iptables -t mangle -A FORWARD -p tcp --dport 27016 -j MARK --set-mark 11 iptables -t mangle -A OUTPUT -p tcp --dport 27016 -j MARK --set-mark 11 iptables -t mangle -A FORWARD -p udp --dport 27016 -j MARK --set-mark 11 iptables -t mangle -A OUTPUT -p udp --dport 27016 -j MARK --set-mark 11 iptables -t mangle -A FORWARD -p udp --sport 27005 -j MARK --set-mark 11 iptables -t mangle -A OUTPUT -p udp --sport 27005 -j MARK --set-mark 11 tc filter add dev eth0 protocol ip parent 1:0 handle 1 fw flowid 1:10 tc filter add dev eth1 protocol ip parent 2:0 handle 11 fw flowid 2:10 #Apache # http serve iptables -t mangle -A FORWARD -p tcp --sport 80 -j MARK --set-mark 5 iptables -t mangle -A OUTPUT -p tcp --sport 80 -j MARK --set-mark 5 tc filter add dev eth0 protocol ip parent 1:0 handle 5 fw flowid 1:50 tc filter add dev eth1 protocol ip parent 2:0 handle 5 fw flowid 2:50 # https serve iptables -t mangle -A FORWARD -p tcp --sport 443 -j MARK --set-mark 6 iptables -t mangle -A OUTPUT -p tcp --sport 443 -j MARK --set-mark 6 tc filter add dev eth0 protocol ip parent 1:0 handle 6 fw flowid 1:60 tc filter add dev eth1 protocol ip parent 2:0 handle 6 fw flowid 2:60 #FTP serve iptables -t mangle -A FORWARD -p tcp --sport 20 -j MARK --set-mark 8 iptables -t mangle -A OUTPUT -p tcp --sport 20 -j MARK --set-mark 8 iptables -t mangle -A FORWARD -p tcp --sport 21 -j MARK --set-mark 8 iptables -t mangle -A OUTPUT -p tcp --sport 21 -j MARK --set-mark 8 tc filter add dev eth0 protocol ip parent 1:0 handle 8 fw flowid 1:80 tc filter add dev eth1 protocol ip parent 2:0 handle 8 fw flowid 2:80 #SSH serve iptables -t mangle -A FORWARD -p tcp --sport 22 -j MARK --set-mark 7 iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 7 tc filter add dev eth0 protocol ip parent 1:0 handle 7 fw flowid 1:70 tc filter add dev eth1 protocol ip parent 2:0 handle 7 fw flowid 2:70 #ICMP iptables -t mangle -A FORWARD -p icmp -j MARK --set-mark 2 iptables -t mangle -A OUTPUT -p icmp -j MARK --set-mark 2 tc filter add dev eth0 protocol ip parent 1:0 handle 2 fw flowid 1:20 tc filter add dev eth1 protocol ip parent 2:0 handle 2 fw flowid 2:20 #smtp serve iptables -t mangle -A FORWARD -p tcp --sport 25 -j MARK --set-mark 4 iptables -t mangle -A OUTPUT -p tcp --sport 25 -j MARK --set-mark 4 tc filter add dev eth0 protocol ip parent 1:0 handle 4 fw flowid 1:40 tc filter add dev eth1 protocol ip parent 2:0 handle 4 fw flowid 2:40

Sedan kör man detta perl script för att generera graferna:

#!/usr/bin/perl # # Kristian Kallenberg, 28/5-2004 - 13/9-2004, GPL, This is NOT to be patented! # You are encouraged to start this scrip with nice! # Constants $tc = "/sbin/tc"; $clock = 0; @graphs = ( # title, data, update, average ["1 minut", 60, 10, 30], ["5 minutter", 5 * 60, 30, 50], ["15 minutter", 15 * 60, 5 * 60, 180], ["1 time", 60 * 60, 5 * 60, 300], ["5 timer", 5 * 60 * 60, 15 * 60, 600] #["1 dag", 24 * 60 * 60, 60 * 60, 24 * 60], #["5 dage", 5 * 24 * 60 * 60, 60 * 60, 60 * 60] ); # Count qdiscs if (open(TC, "$tc qdisc show dev eth2|wc -l|")) { $qdiscs = readline(TC); $qdiscs--; close(TC); } else { die("cannot run $tc"); } # Create gnuplot files for $table (@graphs) { ($title, $data, $update, $average) = @$table; $filename = $title; $filename =~ s/ //; if (open(GNUPLOT, ">$filename.gplt")) { print GNUPLOT "set terminal png\n"; print GNUPLOT "set xlabel \"Dato og Klokkeslet\"\n"; print GNUPLOT "set ylabel \"Data [KB/s]\"\n"; print GNUPLOT "set xdata time\n"; print GNUPLOT "set timefmt \"%d/%m %H:%M:%S\"\n"; print GNUPLOT "set format x \" %d/%m\\n%H:%M:%S \"\n"; print GNUPLOT "set lmargin 10\n"; print GNUPLOT "set rmargin 5\n"; print GNUPLOT "set output \"$filename-new.png\"\n"; print GNUPLOT "set title \"$title\"\n"; $plot = "plot "; $qdisc = 0; print "$users"; while ($qdisc < $qdiscs) { $qdisc++; $using = $qdisc + 2; $plot .= "\"$filename.log\" using 1:$using smooth unique title \""; $plot .= chr($qdisc + 64); $plot .= "\""; if ($qdisc < $qdiscs) { $plot .= ", "; } } print GNUPLOT "$plot\n"; close(GNUPLOT); } else { print "Cannot create gnuplot file: $title.gplt"; } } # Create index.html if (open(FILE, ">index.html")) { print FILE "<html>\n"; print FILE "\t<head>\n"; print FILE "\t\t<title>qos.pl</title>\n"; print FILE "\t</head>\n"; print FILE "\t<body>\n"; #print FILE "\t\t<meta http-equiv=\"refresh\" content=\"10\">\n"; for $table (@graphs) { ($title, $data, $update, $average) = @$table; $title =~ s/ //; print FILE "\t\t<img src=\"$title.png\" width=\"640\" hight=\"480\">\n"; print FILE "\t\t<br>\n"; print FILE "\t\t<br>\n"; } print FILE "\t\tdownload(<a href=\"qos.pl\">qos.pl</a>)<br>\n"; print FILE "\t\t<br>\n"; print FILE "\t\t/kallenberg\n" ; print FILE "\t</body>\n"; print FILE "</html>"; close(FILE); } else { print "Cannot create file: index.html"; } sub logdata { $data = time(); if (open(TC, "$tc -s qdisc show dev eth2|")) { while (! eof(TC)) { ($qdisc, $queue) = split(" ", <TC>); if ($qdisc eq "qdisc" && $queue eq "sfq") { ($one, $sent) = split(" ", <TC>); $data .= "\t"; $data .= $sent; } } close(TC); } else { die("cannot run $tc"); } if (open(LOG, ">>qos.log")) { flock(LOG, LOCK_EX); seek(LOG, 0, SEEK_END); print LOG "$data\n"; close(LOG); flock(LOG, LOCK_UN); } else { die("cannot write \"qos.log\""); } } sub plotdata { foreach $graph (@graphs) { ($title, $data, $update, $average) = @$graph; if (!($clock % $update)) { $filename = $title; $filename =~ s/ //; $lines = $data + $average; if (open(LOG, "tail -n $lines qos.log|")) { if (open(PLOT, ">$filename.log")) { flock(LOG, LOCK_EX); # Get first line @logdata = split("\t", <LOG>); @buffer = [ @logdata ]; $lines--; # Get average lines while ($lines-- > $data && ! eof(LOG)) { @logdata = split("\t", <LOG>); push @buffer, [ @logdata ]; } # Get remaining lines and write gnuplot data while (! eof(LOG)) { @logdata = split("\t", <LOG>); push @buffer, [ @logdata ]; $seconds = $logdata[0] - $buffer[0][0]; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($logdata[0]); $mon += 1; $plotdata = "$mday/$mon $hour:$min:$sec"; $qdisc = @logdata; while ($qdisc-- > 1) { $plotdata .= "\t"; $value = ($logdata[$qdisc] - $buffer[0][$qdisc]) / 1024; if ($value < 0 ) { $value = 0; } if ($seconds > 0) { $value /= $seconds; } else { $value = 0; } $plotdata .= $value; } print PLOT "$plotdata\n"; shift @buffer; } close(PLOT); flock(PLOT, LOCK_UN); # Generate plots system("nice -n +19 gnuplot $filename.gplt"); system("rm -f $filename.png $filename.log"); system("mv $filename-new.png $filename.png"); } else { die("cannot write \"$filename.log\""); } close(LOG); } else { die("cannot read \"qos.log\""); } } } } while (true) { logdata; plotdata; $clock++; sleep(1); }

Detta är orginal koden av scriptet, jag har moddat mitt lite. Scriptet för grapherna kommer från http://qos.kallenberg.dk/.

KanoN!

UPDATE: Får man ingen syntax highlightning på bash eller perl script? Eller ska man använda något annat än code taggen?

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Citat:

Ursprungligen inskrivet av tear
Klart vi gillar open source!

Mitt script kräver iptable och iproute2

Detta är orginal koden av scriptet, jag har moddat mitt lite. Scriptet för grapherna kommer från http://qos.kallenberg.dk/.

KanoN!

UPDATE: Får man ingen syntax highlightning på bash eller perl script? Eller ska man använda något annat än code taggen?

Jag kan inte tillåta att mina iptables flushas. Är det bara att ta bort dem regler för flushning så läggs dem nya reglerna till tilll dem andra?

Visa signatur

Firewall 1 och 2: obsd Filserver: fbsd Mediaserver till Atv: debian Testserver: debian Produktionsserver: debian Desktop: os x, svorak

Permalänk
Medlem

Jepp, anledningen till att jag flushar är att om jag ändra så köra jag bara om scriptet. Då nollar den och sedan sätter dom igen. Så visst, skippa flushningen. Eller så lägger du till dessa i det script du redan har... Tänk på att mitt script är anpassat efter min uppkoppling och de regler jag vill ha...

Här kan du läsa mer om hur det funkar:
http://forums.gentoo.org/viewtopic-t-225863-highlight-bandwid...
http://gentoo-wiki.com/HOWTO_Packet_Shaping

Visa signatur

Är man inte bra så måste man se bra ut!

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av peppelorum
Kan inte ni som länkar till era skitsnygga grafer även lägga ut scripten någonstans? Det är det som vi vill ha i den här tråden;-)
Eller gillar ni inte open-source-idén månne?

ofcourse.
http://ftp.mada.h0ra.net/products/mada-rrd-scripts-2.0.tar.gz

3 perl script bara... Använder sig av SNMP för att kunna polla från flera hosts..

Permalänk
Medlem

Tackar

Visa signatur

//Falcon