Monitoring: Porovnání verzí
(→Priority) |
(→Skript) |
||
| Řádek 11: | Řádek 11: | ||
#!/bin/bash | #!/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 | # temporary file with list of IP addresses to monitor | ||
| Řádek 24: | Řádek 32: | ||
HOSTS_OUTPUT=`mktemp` | 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 | 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í: | Nastavit práva pro spouštění: | ||
Verze z 2. 8. 2012, 12:06
Instalace
Závislosti
apt-get install fping
Skript
Následující kód uložit jako /usr/local/sbin/freenetis-monitor (nastavit správně proměnné HOSTS_INPUT_URL a HOSTS_OUTPUT_URL):
#!/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