Dzisiaj jest czw mar 28, 2024 1:38 pm


Centralny monitoring bazy infrastruktury (pinginfra.sh)

Często zadawane pytania
  • Autor
  • Wiadomość
Offline

Pyxis

Site Admin

  • Posty: 2137
  • Rejestracja: pn wrz 29, 2008 11:40 pm
  • Lokalizacja: Strzegom

Centralny monitoring bazy infrastruktury (pinginfra.sh)

Postndz lis 13, 2016 6:40 pm

Od wersji 4.23 istnieje mozliwosc wylaczenia lokalnego monitorowania bazy infrastruktury (do tej pory status i czas odpowiedzi ICMP sprawdzany byl z hosta, na ktorym uruchamiamy Pyxisa). Wtedy program zachytuje informacje o statusie i czasie z bazy danych. Zapis informacji do bazy realizuje skrypt napisany w bashu (pinginfra.sh) uruchamiany na maszynie linuxowej. Nie musi to byc maszyna na ktorej znajduje sie nasza baza danych Pyxisa.

Aby dane urzadzenie bylo uwzgledniane przy badaniu statusu zaznaczamy wskazana nizej opcje na jego karcie:

Obrazek

Skrypt znalezc mozna w katalogu programu lub pobrac:
http://pyxisisp.pl/download/pinginfra.sh

Uzupelniamy swoje dane dostepowe do bazy Pyxisa i uruchamiamy w cron'ie co jedna minute. Skrypt ma zabezpieczenie i nie uruchomi sie dopoty, dopoki jedna jego instancja nie zakonczy sprawdzania i zapisu do bazy.

Kod: Zaznacz cały
#!/bin/sh
#
# pinginframysql.sh - zapisywanie do bazy czasu odpowiedzi ICMP dla
#          wybranych urzadzen infrastruktury
#
#############################################################################
# (c) 2016 Piotr Szkut PYXIS4SQL   - v1.0  dla  PYXIS4SQL  od  wersji 4.23  #
#############################################################################

BAZA=PYXIS4SQL               # Nazwa bazy danych Pyxisa
USER=pyxis               # Uzytkownik bazy
HASLO=mojetajnehaslo            # Haslo
HOST=localhost               # Adres IP komputera na którym znajduje sie baza

# Parametry polecenia ping
SIZE=64                  # Rozmiar pakietu
CZEKAJ=0.01               # Czas pomiedzy kolejnymi probami [s]
ILOSCPROB=5               # Ilosc prob (wynik jest srenim czasem odpowiedzi ze wszystkich prob)


# Jesli nie wiesz co robisz, to nizej lepiej nie grzebac :-)
#############################################################################


LCK=/var/lock/LCK_pinginfra_$HOST"_"$BAZA

if [ -e $LCK ]; then
MOD_DATE=`stat --format=%Y ${LCK}`
TODAY=`date +%s`
DIFF=$(((TODAY-MOD_DATE)/60))
if [ $DIFF -gt 4 ]
then
echo "Usuwam stary plik lock $LCK"
rm -v ${LCK}
fi
fi
lockfile -r 0 $LCK || exit 1

PATH1=/tmp/pyxis4sql.tmp
PLIKNAZWA=/SQL_$HOST"_"$BAZA"_"$$.sql

mkdir -p $PATH1
PLIK=$PATH1$PLIKNAZWA


echo "TRUNCATE PingInfra; " > $PLIK
echo "START TRANSACTION;" >> $PLIK
START=`date +"%Y-%m-%d %H:%M:%S"`
echo "insert into PingInfra (PI_CZAS, PI_INDEXINFRA, PI_ODKIEDYDOWN, PI_STATUS) values (0, -1,'$START', 'START');" >> $PLIK
echo "insert into PingInfra (PI_CZAS, PI_INDEXINFRA) values " >> $PLIK

mysql  $BAZA -u $USER -p$HASLO -h $HOST -se \
"select INF_INDEX, INF_IP from vInfrastruktura where INF_CZYZAWIESZONE=0 and INF_POMINPING=0 and Length(INF_IP)>6 and INF_IP<>'0.0.0.0';"\
 | while read INF_INDEX INF_IP; do

CZAS=$(ping -q -s 64 -i $CZEKAJ -c $ILOSCPROB -w 0.3 -W 1 $INF_IP | tail -1| awk '{print $4}' | cut -d '/' -f 2)
if [ -z "$CZAS" ]; then CZAS="-1"
fi

SQLPART="($CZAS, $INF_INDEX), "
echo $SQLPART >> $PLIK

if [ -z $1 ]; then echo "$INF_IP   $CZAS"
elif [ $1 != "-s" ]; then echo "$INF_IP   $CZAS"
fi

done

echo "(0, 0); " >> $PLIK
echo "update PingInfra set PI_STATUS='Up' where PI_CZAS>=0 and PI_INDEXINFRA>0; " >> $PLIK
echo "update PingInfra set PI_STATUS='Down', PI_ODKIEDYDOWN=NOW() where PI_CZAS<0  and PI_INDEXINFRA>0; " >> $PLIK
echo "update PingInfra set PI_ODKIEDYDOWN=NOW(), PI_STATUS='END' where PI_INDEXINFRA=0; " >> $PLIK
echo "insert PingInfra (PI_STATUS, PI_INDEXINFRA, PI_CZAS) select 'Skip', INF_INDEX, -1 from Infrastruktura where INF_POMINPING=1 or INF_CZYZAWIESZONE=1 ; " >> $PLIK
echo "COMMIT; " >> $PLIK

ZAPIS="1"
ZAPIS=$(mysql  $BAZA -u $USER -p$HASLO -h $HOST -se "select if((select PI_ODKIEDYDOWN from PingInfra where PI_INDEXINFRA=0) > '$START', 0, 1);")

if [ $ZAPIS = "1" ]; then
if [ -z $1 ]; then echo "Zapis do MySQL na $HOST"
fi
mysql -h $HOST -u $USER -p$HASLO $BAZA < $PLIK
else
if [ -z $1 ]; then echo "Test starszy od zapisanego w bazie"
fi
fi

rm -f $PLIK
rm -f $LCK
echo "OK"
Piotr Szkut - PYXIS

Wróć do Pyxis5 SQL FAQ

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości

cron