====== MRTG ====== http://oss.oetiker.ch/mrtg/ ===== Docs ===== * http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/ * http://www.linux-sottises.net/mrtg.php * http://fabien.cei.free.fr/mrtg/ ===== Softs dérivés ===== http://www.linux-sottises.net/software.php#mrtnk http://www.cacti.net/ [[http://www.inter7.com/index.php?page=qmailmrtg7|QMailMRTG7]] ===== Data acquisition ===== External Monitoring Scripts If you want to monitor something which does not provide data via snmp you can use some external program to do the data gathering. The external command must return 4 lines of output: Line 1 current state of the first variable, normally 'incoming bytes count' Line 2 current state of the second variable, normally 'outgoing bytes count' Line 3 string (in any human readable format), telling the uptime of the target. Line 4 string, telling the name of the target. Depending on the type of data your script returns you might want to use the 'gauge' or 'absolute' arguments for the Options keyword. ====QMail==== Agrégation de stats pour [[/informatique/reseau/qmail|QMail]] avec [[http://www.inter7.com/index.php?page=qmailmrtg7|QMailMRTG7]] QMail Message `/usr/local/bin/qmailmrtg7 m /var/log/qmail` QMail Queue size `/usr/local/bin/qmailmrtg7 q /var/qmail/queue` Qmail Local/Remote concurrency `/usr/local/bin/qmailmrtg7 c /var/log/qmail` QMail messages status `/usr/local/bin/qmailmrtg7 s /var/log/qmail` QMail Bits transfered `/usr/local/bin/qmailmrtg7 b /var/log/qmail` QMail SMTP `/usr/local/bin/qmailmrtg7 t /var/log/smtp` QMail SMTP Total `/usr/local/bin/qmailmrtg7 a /var/log/smtp` QMail POP3 Concurrency `/usr/local/bin/qmailmrtg7 t /var/log/pop3` QMail POP3 Total `/usr/local/bin/qmailmrtg7 a /var/log/pop3` SMTP SSL Concurrency `/usr/local/bin/qmailmrtg7 t /var/log/smtps` SMTP SSL Totals `/usr/local/bin/qmailmrtg7 a /var/log/smtps` POP3 SSL Concurrency `/usr/local/bin/qmailmrtg7 t /var/log/pop3s` POP3 SSL Totals `/usr/local/bin/qmailmrtg7 a /var/log/pop3s` ==== Other mail stuff ==== Clamd virus-scanner `/usr/local/bin/qmailmrtg7 C /var/log/clamd` Spammassassin `/usr/local/bin/qmailmrtg7 S /var/spamd.log` ==== CPU, Mem & Disks ==== CPU0 Usage `/usr/bin/awk '/cpu0 /{print $2+$3; print $2+$3+$4; print "quite some time"; print "home"}' #!/bin/sh # Thierry Nkaoua tnkaoua@yahoo.fr USED=`free -b|grep cache:|cut -d ":" -f2|cut -c1-11` FREE=`free -b|grep cache:|cut -d ":" -f2|cut -c12-22` echo $FREE echo $USED Checkdisk #!/bin/sh df="/bin/df" cut="/usr/bin/cut" grep="/bin/grep" part=$1 line=`$df -m -x nfs| grep "$part"` libre=`echo $line|$cut -d" " -f 4` utilise=`echo $line|$cut -d" " -f 3` echo $libre echo $utilise ==== NIC ==== eth0 bytes `grep eth0 /proc/net/dev | sed 's/eth0://' | awk '{print $1; print $9; print ""; print ""}'` eth0 packets `grep eth0 /proc/net/dev | sed 's/eth0://' | awk '{print $2; print $10; print ""; print ""}'` Ping #!/bin/sh # Thierry Nkaoua tnka@linux-sottises.net P=`ping -w6 -c3 -q 62.4.16.248|grep rtt|cut -d" " -f4` MIN=`echo $P|cut -d"/" -f1` MAX=`echo $P|cut -d"/" -f2` echo $MAX echo $MIN Tcp Open $l = `netstat -tn | grep ESTABLISHED | wc -l`; $l =~ /(\d+)/; $data = $1; Tcp Count #!/bin/bash # # Script MRTG - David Du SERRE-TELMON (daviddst@netcourrier.com) # Indique le nombre de connexions TCP actives avec Netfilter # # Syntaxe : # # ./tcpcount # => Nombre de connexions tcp totales traversant la passerelle # ./tcpcount 21 # => Nombre de connexions FTP # ./tcpcount 80 dst www.linux-sottises.net # => Nombre de connexion web vers le serveur web www.linux-sottises.net # ./tcpcount 1214 src 192.168.0.2 # => Nombre de connexions Kazaa pour l'utilisateur 192.168.0.2 netstat="/bin/netstat" grep="/bin/grep" sed="/bin/sed" wc="/usr/bin/wc" cat="/bin/cat" printf="/usr/bin/printf" host="/usr/bin/host" port=$1 filter="$2" ip="$3" ip_conntrack=`$cat /proc/net/ip_conntrack | $grep ESTABLISHED` if [ -n "$port" ] then if [ "$filter" = src ] || [ "$filter" = dst ] then ip=`$host "$3" | grep "has address" | cut -d" " -f4` res=`$printf "$ip_conntrack" | $grep "dport=$port " | $grep "$filter=$ip" | $wc -l | $sed s/" "//g` else res=`$printf "$ip_conntrack" | grep "dport=$port " | $wc -l | $sed s/" "//g` fi else res=`$printf "$ip_conntrack" | $wc -l | $sed s/" "//g` fi printf "$res\n$res\n" Netstat #!/bin/sh # Usage : # netstat lan eth0 # netstat adsl ppp0 grep="/bin/grep" cut="/usr/bin/cut" uptime="/usr/bin/uptime" devsta="/proc/net/dev" # netstat name interface name=$1 interface=$2 line=`/bin/cat $devsta | $grep "$interface"` line=`echo $line | $cut -d":" -f 2` ibytes=`echo $line | $cut -d" " -f 1` obytes=`echo $line | $cut -d" " -f 9` uptim=`$uptime | $cut -d"," -f1` uptim=`echo $uptim | $cut -d" " -f3,4` echo $ibytes echo $obytes echo $uptim echo $name Volume échangé #! /bin/sh in=`ifconfig $1|grep bytes|cut -d"(" -f2|grep Mb|cut -d"." -f1` out=`ifconfig $1|grep bytes|cut -d"(" -f3|grep Mb|cut -d"." -f1` if ! [ "$in" ]; then in=0 fi if ! [ "$out" ]; then out=0 fi echo $in echo $out ==== Mysql ==== Mysql stats\\ Takes one argument (Variable name) and returns it's value.\\ http://www.cacti.net/downloads/scripts/sql_stat.php.txt #!/usr/local/bin/php -q Mysql rows count\\ Counts rows in a MySQL table.\\ http://www.cacti.net/downloads/scripts/sql_cnt.php.txt #!/usr/local/bin/php -q ==== Apache ==== Apache requests per second $output = `/bin/bash -c 'wget --quiet -O - \"http:\/\/localhost\/server-status"'`; $output =~ /(.*) requests\/sec/; print $1." "; $output =~ /(.*) requests currently being processed/; print $1; Apache stats #!/usr/bin/perl # depends on availability of status and extended status info from your # Apache webserver -- your httpd.conf needs to include something like the # following: (uncommented) # # SetHandler server-status # Order allow,deny # Allow from localhost # #ExtendedStatus On # can return hits or bytes (counters) @res = `lynx -dump http://localhost:80/server-status`; foreach $res (@res) { if ($res =~ /Server uptime: (.*)$/) { $up = $1; last } else { next } if ($res =~ /Server at/) { $server = $res; last } else { next } } @res = `lynx -dump http://localhost:80/server-status?auto`; foreach $res (@res) { if ($res =~ /Total Accesses: (\d+)/) { $d1 = $1; next } if ($res =~ /Total kBytes: (\d+)/) { $d2 = $1 * 1024; next } } $d1 = int($d1); $d2 = int($d2); if ($ARGV[0] eq "hits") { print "$d1\n"; print "$d1\n"; } elsif ($ARGV[0] eq "bytes") { print "$d2\n"; print "$d2\n"; } print "$up\n"; print "$server"; ==== Divers ==== ftpd concurrency `/usr/local/bin/qmailmrtg7 t /var/log/ftpd` ftpd allow/deny `/usr/local/bin/qmailmrtg7 a /var/log/ftpd` Tinydns Queries `/usr/local/bin/qmailmrtg7 l /var/log/tinydns` Dnscache Queries `/usr/local/bin/qmailmrtg7 Q /var/log/dnscache`