Monitoring

Z Freenetis Wiki
Verze z 3. 8. 2012, 07:46, kterou vytvořil Dzolo (diskuse | příspěvky) (Instalace)
Přejít na: navigace, hledání

Monitoring ve FreenetISu je založena na nástroji fping. Samotný monitoring je deamon běžící na linuxuvém stroji, který má přístup do Vaší vnitřní sítě a k serveru, na kterém běží FreenetIS. (FreenetIS i monitoring mohou běžet na jednom stroji, ale tato konfigurace není doporučena, jelikož monitoring vytváří velkou zátěž na běhový server)

Monitoring komunikuje s FreenetISem pomocí nástroje wget. Z FreenetiISu získává IP adresy v síti, které má monitorovat. Poté proběhne samotný test dostupnosti jednotlivých adres. Výstup testu je zaslán zpět FreenetISu, který jej zobrazí v rozhraní monitoringu.

Instalace ze zdrojových kódů

Tento postup instalace je zde pro vývojářské účely. Koncový uživatelé by měli instalovat pomocí balíku frenetis-monitoring.

Závislosti

apt-get install fping

Skript

Následující kód uložit jako /usr/local/sbin/freenetis-monitor:

#!/bin/bash
################################################################################
#                                                                              #
# This script serves for monitoring from IS FreeNetIS                          #
#                                                                              #
# author  Kliment Michal 2012                                                  #
# email   kliment@freenetis.org                                                #
#                                                                              #
# name    freenetis-monitord.sh                                                #
# version 0.9                                                                  #
#                                                                              #
################################################################################

#Load variables from config file
CONFIG=/etc/freenetis/freenetis-monitoring.conf

# temporary file with list of IP addresses to monitor
HOSTS_INPUT=`mktemp`

# temporary file with result to send
HOSTS_OUTPUT=`mktemp`

FPING="/usr/bin/fping"

# Load variables
if [ -f $CONFIG ]; then 
        . $CONFIG
else
        echo "No config file - giving up :-(";
        exit 0
fi

# endless loop
while true;
do
		# use fping to get ip addresses states
        $FPING -e -f "$HOSTS_INPUT" 2>/dev/null | while read host
        do
                # ip address
                ip=`echo $host | awk '{print $1}'`

                # state of host (alive or unreachable)
                state=`echo $host | awk '{print $3}'` 

                # latency of host (only for alive state)
                lat=`echo $host | awk '{print $4}' | sed 's/(//'`

                # do not add ampersand to beginning of file with result
                if [ -s "$HOSTS_OUTPUT" ];
                then
                        echo -n "&" >> "$HOSTS_OUTPUT";
                fi

                # add variables to file with result
                echo "ip[]=$ip&state[]=$state&lat[]=$lat" >> "$HOSTS_OUTPUT"
        done

        # remove temporary file with IP addresses to monitor
        rm "$HOSTS_INPUT"

        echo "Sending result data back to FreenetIS..."

        # send file with result back to FreenetIS
        wget -qO- --post-file="$HOSTS_OUTPUT" "$HOSTS_OUTPUT_URL"

        # remove temporary file with result
        rm "$HOSTS_OUTPUT"
done

Nastavit práva pro spouštění:

chmod +x /usr/local/sbin/freenetis-monitor

Spuštění

Skript je nutné spouštět ve věčném cyklu (např. ve screenu):

while true; do freenetis-monitor; done

Priority

Je to jediný parametr skriptu. Nejedná se o priority v pravém slova smyslu, spíše priority jdou pomocí něj simulovat. Přesnější termín by byl zřejmě skupiny.

Ve FreenetISu si zařízení rozdělíme do jednotlivých priorit a pak na straně serveru můžeme pro každou prioritu spustit jeden proces.

Praktické použití: Zařízení sdružení (tj. nejdůležitější) si označíme prioritou 1 (např. 500 zařízení), ostatní zařízení, které chceme z nějakého důvodu monitorovat si označíme prioritou 2 (např. 2500 zařízení).

Pokud bychom skript spustili bez parametru, monitoroval by všechna zařízení (s prioritou 1 i 2) a trvalo by jedno projetí přibližně 5 minut => tj. výpadek spoje by se v systému projevil až nejdříve za 5 minut

Pokud bychom spustili skript 2x:

while true; do freenetis-monitor 1; done
while true; do freenetis-monitor 2; done

prvnímu procesu (monitorující zařízení sdružení) by projetí trvalo přibližně 1 minutu => tj. výpadek spoje by se v systému projevil už za 1 minutu