Spamdyke Übersicht mit mrtg

Hi Christian,

ich bin halt ein zsh Fan. :-) Das ist ein Paket, dass Du sicherlich sehr einfach nachinstallieren kannst.

Es gibt ein paar Unterschiede zu sh, die ich manchmal nutze.

Ansonsten probiere es einfach aus: zsh in sh ändern und das Skript direkt aufrufen.

Wenn keine e-Mails gezählt werden: Kannst mal schauen, ob Du mit mysql überhaupt an die Datenbank kommst?
mysql Datenbankname --user=DBUser --password=DBPassword

Jetzt solltest Du mit: select count(*) from spamdyke_log_table; sehen können, wieviele Datensätze in der Datenbank sind.

Die SQL Kommandos findest Du im ersten Post. Da müsste eigentlich die entsprechende Zahl bei rauskommen. Kommt sie?

Ansonsten kannst Du Dich auch gerne per ICQ melden, wenn Du dann die Lösung hier postest. :-)

Grüße,
Ulrich
 
Perfekt, es funktionier jetzt auch bei Christian.

Wichtig ist, dass die Datei getstats.zsh die richtigen Rechte bekommt. Die Datei muss ausführbar sein, also 700 oder rwx.

  • Wenn der Crondienst als root läuft,
  • dann muss die Datei mrtg.cfg für root zu lesen sein, und
  • der Pfad zur getstats.zsh muss richtig sein, und
  • die Datei getstats.zsh muss ausführbar sein (700 oder rwx), dann
  • die erstellten png- und html-Dateien müssen für jeden zu lesen sein.
Man kann dann alles mit mrtg ./mrtg.cfg von Hand überprüfen. Es kommen noch zwei mal ein paar Fehlermeldungen, die nach dem dritten Aufruf aber erledigt sind.

Jetzt sind die Grafiken (png) und die HTML-Dateien geschrieben (html). Diese müssen dann noch die richtigen Rechte bekommen: chmod o+r *.png *.html damit der Webserver sie auch lesen kann.

Wer nicht zsh installiert hat, kann auch sh nutzen. In diesem Fall bitte die Dateien entsprechend umbenennen, die erste Zeile anpassen und den Aufruf in der mrtg.cfg anpassen.

Grüße,
Ulrich
 
Hallo :-)

Die Spamdryke-MRTG Verbindung funktioniert wunderbar - und ist mal richtig klasse! Danke dafür :-)
Bei meiner "alten" GreylistingLösung von meshier.com hatte ich zwar auch schon mrtg-stats, diese waren aber bei weitem nicht so gut gelöst...

Folgendes anderes Problem: Ich versuche mich gerade an dem Netzverbindungslast-Skript, läuft für den Anfang schonmal rund. Allerdings sehen die mrtg-Bilder eher seltsam aus.
Könntest du deine mrtg.cfg dafür auch einmal hier posten?
Danke :-)
 
Hallo suca,

hier die 'mrtg.cfg' für die Netzverbindungslast:
Code:
WorkDir: /srv/www/vhosts/msp-it.de/httpdocs/leistungsdaten/netzverbindungslast

Language: german

Target[mrtg]: `/srv/www/vhosts/msp-it.de/httpdocs/leistungsdaten/netzverbindungslast/getstats.zsh`
MaxBytes[mrtg]: 65535 
Title[mrtg]: msp-it - Netzverbindungslast
XSize[mrtg]: 520
YSize[mrtg]: 150
PNGTitle[mrtg]: msp informations technologie - Netzverbindungslast
Options[mrtg]: growright, noinfo, nopercent, integer, gauge, noarrow, nobanner, nolegend, pngdate
kilo[mrtg]: 1000
YLegend[mrtg]: Aktuelle Verbindungen
ShortLegend[mrtg]: .
LegendI[mrtg]: UDP
LegendO[mrtg]: TCP
Dann sieht man auf meiner Webseite unter Leistungsdaten/Netzverbindungslast (http://www.msp-it.de/leistungsdaten/netzverbindungslast/), dass ich unten noch die aktuellen Verbindungen anzeige. Hierzu gab es eine Veränderung in der 'getstats.zsh':
Code:
#!/bin/zsh

_path=/srv/www/vhosts/msp-it.de/httpdocs/leistungsdaten/netzverbindungslast

# Liste der aktuellen Verbindungen schreiben
( for a in `cat /proc/net/nf_conntrack|awk '{ print substr( $0, match( $0, "src=" ) +4 ) }'|cut -d" " -f1|grep -v "0000:"|grep -v "87.106.1.103"|grep -v "87.139.91.42"|grep -v "87.139.90.243"|grep -v "87.106.254.63"|grep -v "87.106.254.18"|sort -n|uniq`; do; echo -e "`grep -c "$a" /proc/net/nf_conntrack` - $a  \t- `host $a|tail -n1|cut -d" " -f5`"; done; )|sort -nr >/srv/www/vhosts/msp-it.de/httpdocs/leistungsdaten/netzverbindungslast/currcons.txt

# Abweichung in Prozent ausrechnen
(( a = ( `grep "tcp" /proc/net/nf_conntrack|wc -l` * 100 / `cat $_path/tcpcons.txt` ) -100 ))

# Abweichung schreiben
echo "$a%" >$_path/tcpvar.txt
echo `cat $_path/tcpcons.txt` >$_path/tcpconsold.txt

# Anzahl der aktuellen Verbindungen schreiben
echo `grep "tcp" /proc/net/nf_conntrack|wc -l` >$_path/tcpcons.txt

# Wenn aktuelle Abweichung > als gemerkte Abweichung, dann Abweichung merken
if (( `cat $_path/tcpvar.txt|awk '{ printf "%i", $1 }'` > `cat $_path/tcpvarmax.txt|awk '{ printf "%i", $1 }'` ))
then 
    cat $_path/tcpvar.txt >$_path/tcpvarmax.txt
fi

# Wenn aktuelle Abweichung > 100%, dann E-Mail senden
if (( `cat $_path/tcpvar.txt|awk '{ printf "%i", $1 }'` > 100 ))
then
    ip=`head -n1 $_path/currcons.txt|cut -d" " -f3`
    echo -e "Aktuelle TCP Verbindungen     : `cat $_path/tcpcons.txt`\nTCP Verbindungen vor 5 Minuten: `cat $_path/tcpconsold.txt`\nAbweichung                    : `cat $_path/tcpvar.txt`\nMaximale Abweichung           : `cat $_path/tcpvarmax.txt`\n\n`cat $_path/currcons.txt`\n\n`grep -n "$ip" /proc/net/nf_conntrack`"|mail -s "Netzverbindungslast um mehr als 100% angestiegen" ulrich.manns@msp-it.de
fi

echo `grep "udp" /proc/net/nf_conntrack|wc -l`
echo `grep "tcp" /proc/net/nf_conntrack|wc -l`
echo `uptime|tr -s " "|cut -d" " -f4-`
echo `hostname`
Bitte genau die Pfade überprüfen! Die Dateien, wie 'curcons.txt' usw. müssen vorher mit 'touch' angelegt sein, und brauchen die richtigen Rechte.

Am Anfang der 'getstats.zsh' filtere ich ein paar IP-Adressen aus der Liste raus, die bei mir immer 'ne Menge Verbindungen haben. Diese Liste bitte selbst anpassen.

In der Webseite zeige ich die Textdateien als iFrame, hier ein Beispiel für die E-Mails in der Warteschlange als Tabelle:
Code:
<table>
  <tr>
    <td>E-Mails in der Warteschlange: </td>
    <td>
      <iframe src="http://www.msp-it.de/leistungsdaten/emaillast/remqueue.txt" width="30px" height="12px" frameborder="0" scrolling="no" marginheight="0" marginwidth="0">
      </iframe>
    </td>
  </tr>
</table>
Ich hoffe, da sind wieder ein paar Ideen mit dabei. Wenn es noch Fragen gibt, dann bitte hier Fragen. Ich helfe gerne.

Grüße,
Ulrich
 
Back
Top