Freifunk-Gateway aufsetzen/Statistik/mrtg: Unterschied zwischen den Versionen

Aus Freifunk Franken
Wechseln zu:Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(14 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 8: Zeile 8:


snmpd restarten.
snmpd restarten.
Damit das syslog nicht vollgemüllt wird, noch folgende Befehle ausführen:
<pre>
sed -i "s|-Lsd|-LS4d|" /lib/systemd/system/snmpd.service
systemctl daemon-reload
systemctl restart snmpd
</pre>
Ordner anlegen:
<pre>
mkdir /etc/mrtg
mkdir /var/www/mrtg
</pre>


Die mrtg CPU Config neu anlegen:
Die mrtg CPU Config neu anlegen:
Zeile 52: Zeile 65:
LegendO[dhcpleasecount]:
LegendO[dhcpleasecount]:
</pre>
</pre>
<b>Tipp:</b> Damit die DHCP Anzeige dynamisch skaliert, <code>Unscaled[dhcpleasecount]: ymwd</code> auskommentieren.


Hier muss der MaxBytes Parameter auf die maximale Zahl der DHCP Leases eingestellt werden.
Hier muss der MaxBytes Parameter auf die maximale Zahl der DHCP Leases eingestellt werden.


Anschließend noch das Script anlegen:
Anschließend noch das Script anlegen: </br>
<code>
<pre>
vi /etc/mrtg/dhcp.sh<br>
vi /etc/mrtg/dhcp.sh
chmod +x /etc/mrtg/dhcp.sh
</pre>
</code>
<pre>
<pre>
#!/bin/bash
#!/bin/bash
leasecount=$(/usr/sbin/dhcp-lease-list --parsable --lease /var/lib/dhcp/dhcpd.leases 2>&1  |wc -l)
 
# -> zutreffendes auskommentieren
# isc-dhcp-server
#leasecount=$(/usr/sbin/dhcp-lease-list --parsable --lease /var/lib/dhcp/dhcpd.leases 2>&1  |wc -l)
# dnsmasq
#leasecount=$(cat /var/lib/misc/bat0.leases | wc -l)
 
echo "$leasecount"
echo "$leasecount"
echo "$leasecount"
echo "$leasecount"
echo 0
echo 0
echo 0
echo 0
</pre>
<pre>
chmod +x /etc/mrtg/dhcp.sh
</pre>
</pre>


Die mrtg traffic Config neu anlegen:
Die mrtg traffic Config neu anlegen:
<pre>
<pre>
/usr/bin/cfgmaker --output=/etc/mrtg/traffic.cfg -zero-speed=100000000 --global "WorkDir: /var/www/mrtg" --ifdesc=name,ip,desc,type --ifref=name,desc --global "Options[_]: bits,growright" public@localhost
/usr/bin/cfgmaker --output=/etc/mrtg/traffic.cfg --snmp-options=:::::2 -zero-speed=100000000 --global "WorkDir: /var/www/mrtg" --ifdesc=name,ip,desc,type --ifref=name,desc --global "Options[_]: bits,growright" public@localhost  
 
sed -i -e 's/^\(MaxBytes.*\)$/\10/g' /etc/mrtg/traffic.cfg
sed -i -e 's/^\(MaxBytes.*\)$/\10/g' /etc/mrtg/traffic.cfg
</pre>
</pre>
Zeile 82: Zeile 106:
Den eigenen Index neu machen:
Den eigenen Index neu machen:
<pre>
<pre>
cat /var/www/mrtg/index.html | sed -e 's/SRC="/SRC="mrtg\//g' -e 's/HREF="/HREF="mrtg\//g' -e 's/<\/H1>/<\/H1><img src="topology.png">/g' > /var/www/mrtg/index.html  
cat /var/www/mrtg/index.html | sed -e 's/SRC="/SRC="mrtg\//g' -e 's/HREF="/HREF="mrtg\//g' > /var/www/index.html  
</pre>
 
/etc/olsrd/dotDraw.pl:
<pre>
#!/usr/bin/perl
 
use IO::Socket;
 
$TOPPATH = "/var/www";
$NAME = "topology";
$FILENAME = "$TOPPATH/$NAME.dot";
$EXT = "png";
 
`touch $TOPPATH/$NAME.$EXT`;
 
$remote = IO::Socket::INET->new(
                        Proto    => "tcp",
                        PeerAddr => "localhost",
                        PeerPort => "2004",
                    )
                  or die "cannot connect to daytime port at localhost";
 
$f;
 
while ( <$remote> ) {
 
        $line = $_;
        if ( m/^[\{\\}]$|digraph|topology|^"10\.50\..*" -> "10\.50.*"|^"10\.50\.[0-9]+\.[0-9\/]+"\[/) {
                $f = $f . $line;
        }
 
        if ( $line =~ /}/i ) {
                print "* ";
                open DOTFILE, ">$FILENAME";
                print DOTFILE $f;
                close DOTFILE;
                $f = "";
 
                `neato -Tpng -Gsize=9,6 -Gbgcolor=white -Gsplines=true -Nstyle=filled -Nfontsize=15 -Ncolor=black -Nfillcolor=white -Nfontname=verdana -Ecolor=black -Elen=4 -Earrowsize=2 $FILENAME -o $TOPPATH/$NAME.new`;
 
                `mv $TOPPATH/$NAME.new $TOPPATH/$NAME.$EXT`;
                `cp $TOPPATH/$NAME.dot $TOPPATH/$NAME-\$(date +'%Y-%m-%d-%H-%M-%S').dot`;
        }
}
</pre>
 
/etc/olsrd/olsrd.conf:
<pre>
LoadPlugin "olsrd_dot_draw.so.0.3"
{
}
</pre>
 
eventuell wird noch "graphviz" benötigt um die png zu zeichnen:
 
<pre>
apt-get install graphviz
</pre>
</pre>


Crontab:
Crontab:
<pre>
<pre>
*/5 *  *  *  *    perl /etc/olsrd/dotDraw.pl > /dev/null 2>&1
*/1 *  *  *  *    env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg > /dev/null 2>&1
*/1 *  *  *  *    env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg > /dev/null 2>&1
*/1 *  *  *  *    env LANG=C /usr/bin/mrtg /etc/mrtg/traffic.cfg > /dev/null 2>&1
*/1 *  *  *  *    env LANG=C /usr/bin/mrtg /etc/mrtg/traffic.cfg > /dev/null 2>&1
*/1 *  *  *  *    env LANG=C /usr/bin/mrtg /etc/mrtg/dhcp.cfg > /dev/null 2>&1
*/1 *  *  *  *    env LANG=C /usr/bin/mrtg /etc/mrtg/dhcp.cfg > /dev/null 2>&1
</pre>
</pre>

Aktuelle Version vom 24. März 2022, 12:25 Uhr

snmpd und mrtg installieren.

/etc/snmp/snmpd.conf: systemonly auskommentiert

 rocommunity public  default    #-V systemonly
 rocommunity6 public  default   #-V systemonly

snmpd restarten.

Damit das syslog nicht vollgemüllt wird, noch folgende Befehle ausführen:

sed -i "s|-Lsd|-LS4d|" /lib/systemd/system/snmpd.service
systemctl daemon-reload
systemctl restart snmpd

Ordner anlegen:

mkdir /etc/mrtg
mkdir /var/www/mrtg

Die mrtg CPU Config neu anlegen: vi /etc/mrtg/cpu.cfg und folgendes einfügen:

LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt
WorkDir: /var/www/mrtg
Target[localhost.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:public@127.0.0.1 + ssCpuRawSystem.0&ssCpuRawSystem.0:public@127.0.0.1 + ssCpuRawNice.0&ssCpuRawNice.0:public@127.0.0.1 + ssCpuRawSoftIRQ.0&ssCpuRawSoftIRQ.0:public@127.0.0.1 + ssCpuRawInterrupt.0&ssCpuRawInterrupt.0:public@127.0.0.1 + ssCpuRawKernel.0&ssCpuRawKernel.0:public@127.0.0.1
RouterUptime[localhost.cpu]: public@127.0.0.1
MaxBytes[localhost.cpu]: 100
Title[localhost.cpu]: CPU Load
PageTop[localhost.cpu]: <h1>Active CPU Load %</h1>
Unscaled[localhost.cpu]: ymwd
ShortLegend[localhost.cpu]: %
YLegend[localhost.cpu]: CPU Utilization
Legend1[localhost.cpu]: Active CPU in % (Load)
Legend2[localhost.cpu]:
Legend3[localhost.cpu]:
Legend4[localhost.cpu]:
LegendI[localhost.cpu]:  Active
LegendO[localhost.cpu]:
Options[localhost.cpu]: growright,nopercent

Die mrtg dhcp config neu anlegen: vi /etc/mrtg/dhcp.cfg und folgendes einfügen:

WorkDir: /var/www/mrtg
Title[dhcpleasecount]: DHCP-Leases
PageTop[dhcpleasecount]: <H1>DHCP-Leases</H1>
Options[dhcpleasecount]: gauge,nopercent,growright,noinfo
Target[dhcpleasecount]: `/etc/mrtg/dhcp.sh`
MaxBytes[dhcpleasecount]: 255
YLegend[dhcpleasecount]: Lease Count
ShortLegend[dhcpleasecount]: x
Unscaled[dhcpleasecount]: ymwd
LegendI[dhcpleasecount]: Count
LegendO[dhcpleasecount]:

Tipp: Damit die DHCP Anzeige dynamisch skaliert, Unscaled[dhcpleasecount]: ymwd auskommentieren.


Hier muss der MaxBytes Parameter auf die maximale Zahl der DHCP Leases eingestellt werden.

Anschließend noch das Script anlegen:

vi /etc/mrtg/dhcp.sh
#!/bin/bash

# -> zutreffendes auskommentieren
# isc-dhcp-server
#leasecount=$(/usr/sbin/dhcp-lease-list --parsable --lease /var/lib/dhcp/dhcpd.leases 2>&1  |wc -l)
# dnsmasq
#leasecount=$(cat /var/lib/misc/bat0.leases | wc -l)

echo "$leasecount"
echo "$leasecount"
echo 0
echo 0
chmod +x /etc/mrtg/dhcp.sh

Die mrtg traffic Config neu anlegen:

/usr/bin/cfgmaker --output=/etc/mrtg/traffic.cfg --snmp-options=:::::2 -zero-speed=100000000 --global "WorkDir: /var/www/mrtg" --ifdesc=name,ip,desc,type --ifref=name,desc --global "Options[_]: bits,growright" public@localhost 

sed -i -e 's/^\(MaxBytes.*\)$/\10/g' /etc/mrtg/traffic.cfg

Den mrtg Index neu machen:

/usr/bin/indexmaker --output=/var/www/mrtg/index.html --title="$(hostname)" --sort=name --enumerat /etc/mrtg/traffic.cfg /etc/mrtg/cpu.cfg /etc/mrtg/dhcp.cfg

Den eigenen Index neu machen:

cat /var/www/mrtg/index.html | sed -e 's/SRC="/SRC="mrtg\//g' -e 's/HREF="/HREF="mrtg\//g' > /var/www/index.html 

Crontab:

*/1 *  *   *   *     env LANG=C /usr/bin/mrtg /etc/mrtg/cpu.cfg > /dev/null 2>&1
*/1 *  *   *   *     env LANG=C /usr/bin/mrtg /etc/mrtg/traffic.cfg > /dev/null 2>&1
*/1 *  *   *   *     env LANG=C /usr/bin/mrtg /etc/mrtg/dhcp.cfg > /dev/null 2>&1