Forum
Arkadaşlar, bir service stop olduğunda bunu kontrol edip start yapan script'e ihtiyacım var. Böyle bir script kullanan ya da böyle bir tool varsa bilgisi olan varmı? Bunu nagios ve ntop için kullanmayı planlıyorum.
Merhabalar,
Bunları manuel olarak yapan scriptler çokca mevcut. Fakat otomatik yapana şuana kadar rastlamadım. Güzel bir istek. Umarım bilen birisi çıkacaktır.
Selamlar,
Manuel olarak yapan scripti "crontab" aracı ile dakikalık ya da saniyelik zaman dilimlerinde çalıştırarak bu işlemin otomatik gerçekleştirilmesini sağlayabiliriz diye düşünüyorum.
İyi çalışmalar.
Selamlar,
Manuel olarak yapan scripti "crontab" aracı ile dakikalık ya da saniyelik zaman dilimlerinde çalıştırarak bu işlemin otomatik gerçekleştirilmesini sağlayabiliriz diye düşünüyorum.
İyi çalışmalar.
Merhaba,
Bu seferde şöyle bir problem çıkabilir diye düşünüyorum. Zaten start olan bir servisi tekrar start edemez. Hataya neden olabilir. Artı olarak periyodik olarak ta stop olmayabilir. Bilmiyorum. Denemedim. Deneyip görmek lazım.
Olursa güzel olur tabi.
Selamlar,
Manuel olarak yapan scripti "crontab" aracı ile dakikalık ya da saniyelik zaman dilimlerinde çalıştırarak bu işlemin otomatik gerçekleştirilmesini sağlayabiliriz diye düşünüyorum.
İyi çalışmalar.
Merhaba,
Bu seferde şöyle bir problem çıkabilir diye düşünüyorum. Zaten start olan bir servisi tekrar start edemez. Hataya neden olabilir. Artı olarak periyodik olarak ta stop olmayabilir. Bilmiyorum. Denemedim. Deneyip görmek lazım.
Olursa güzel olur tabi.
Merhaba,
Scriptin içeriğini bilmiyorum ama scripte şöyle bir satır ekleyerek bu sorunuda aşabiliriz. Yapılması gereken :
eğer service stop düzeyinde ise start yap
bu şekilde olunca belirttiğiniz problemi ortadan kaldırabiliriz diye düşünüyorum.
Diyelim ki crontabı 1 dakikalık periyotlarla bu scripti çalıştıracak şekilde ayarladık. Crontab 1 dakika sonunda scripti çalıştıracak ve eğer servisimiz stop düzeyinde ise start edecek fakat servisimiz halen aktif yani start düzeyinde ise hiçbir işlem uygulamadan çalışmaya devam edecek.
Böyle bir script kullanıyorum aslında. Sistem odasında belirlediğim bir makinenin sıcaklığını ölçüyorum. 35 dereceyi geçince departmana sms ve mail geliyor. Ama bu script'i nagios üzerinde kullanıyorum. Nagios her 15 dk. bir bu script'i çalıştırıp sıcaklığı kontrol ediyor. Ve diğer bütün serverların up/down olup olmadığını kontrol ediyor. Ama sorun şu ya nagios stop olduğunda!!!!!!! Bunu da kontrol etmem gerekli.
Bu yeni script #service nagios status komutunu çalıştıracak. Eğer output'unda running satırını görürse sorun yok ama running satırı yoksa #service nagios start komutunu çalıştıracak.
# service nagios status
nagios (pid 18525) is running...
#
Birde ntop servisini kontrol etmem gerekiyor. Ntop'ı da #pgrep ntop komutu ile kontrol edebiliyorum. Komut çalıştığında output'unda bir değer varsa sorun yok, eğer değer yoksa /usr/local/bin/ntop -d -i "eth0" -L -P /usr/local/var/ntop -u ntop --skip-version-check --use-syslog=daemon komutu çalıştırıp ntop'ı up yapacak.
# pgrep ntop
17551
#
Eğer bunu C ile bir arkadaş yazarsa gcc ile compile edip binary dosyasını oluşturup, sh autostart.sh olarak crontab'a koyabilirim.
Böyle bir script herkese lazım.
Arkadaşlar, sizden bi hayır gelmedi bende kendi işimi kendim gördüm. 🙂 Nagios ve ntop için script hazırladım. servisleri stop etsem veya reboot etsem dahi servisler 10 sn. içinde tekrardan başlıyor. script'in çalışma mantığı şöyle, #ps -ef ile bütün servislerin background da nasıl çalıştığını görüyoruz. her 10 sn.de bir servis backgrounda da çalışıyormu diye kontrol ediliyor , eğer bulamazsa servisi başlatıyor. crontab, script ve dosyaların konumunu olarak üç'e ayırdım. vatana millete ve tüm insanlara hayırlı olsun 🙂
FOR NAGIOS
** crontab **
[root@GateWay /]# crontab -l
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
@reboot ./autostart.sh > /tmp/autostart.log 2>&1
[root@GateWay /]#
** autostart.sh root(/)'un altında.
[root@GateWay /]# cat autostart.sh
#!/usr/bin/env bash
#export ARGELA_RUN_HOME=/
nagios_kontrol()
{
# hOldPID=0
while :; do
hPID=0
hPID=`pgrep -f '/usr/bin/nagios -d /etc/nagios/nagios.cf'`
if [ -z "$hPID" ] ; then
if [ -f $ARGELA_RUN_HOME/sbin/service ]; then
$ARGELA_RUN_HOME/sbin/service nagios start
else
echo "############################################"
echo "### Can not find nagios service ###"
echo "### Check ARGELA_RUN_HOME setting ###"
echo "### Execution failed... ###"
echo "############################################"
break
fi
else
sleep 10
fi
done
}
nagios_kontrol &
[root@GateWay /]#
***root*********
root'da autostart.sh var.
/tmp/autostart.log //dosyayı oluştur.
FOR NTOP
** crontab **
[root@argela /]# crontab -l
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
@reboot ./autostart.sh > /tmp/autostart.log 2>&1
[root@argela /]#
** autostart.sh *** root(/)'un altında.
[root@argela /]# cat autostart.sh
#!/usr/bin/env bash
#export ARGELA_RUN_HOME=/
ntop_kontrol()
{
# hOldPID=0
while :; do
hPID=0
hPID=`pgrep -f 'ntop'`
if [ -z "$hPID" ] ; then
if [ -f $ARGELA_RUN_HOME/./autostart_ntop.sh ]; then
$ARGELA_RUN_HOME/./autostart_ntop.sh
else
echo "############################################"
echo "### Can not find ntop for executable ###"
echo "### Check NTOP please ###"
echo "### Execution failed... ###"
echo "############################################"
break
fi
else
sleep 10
fi
done
}
ntop_kontrol &
[root@argela /]#
** autostart_ntop.sh *** root(/)'un altında.
[root@argela /]# cat autostart_ntop.sh
/usr/local/bin/ntop -d -i "eth0" -L -P /usr/local/var/ntop -u ntop --skip-version-check --use-syslog=daemon > /tmp/autostart_ntop.log 2>&1
[root@argela /]#
***root************
root'da autostart.sh ve autostart_ntop.sh var.
/tmp/autostart_ntop.log // dosyası oluşturulur.
##############
script'in çalışma mantığı şöyle;
#ps -ef ile servisi kontrol et.
#pgrep ntop // ile pid'si gör.
#pgrep -f 'ntop' // script'in çalışma komutunu yaz. bu ntop için pgrep -f 'ntop' nagios için pgrep -f '/usr/bin/nagios -d /etc/nagios/nagios.cf' // çalıştırdığında daima pid çıkmalı , çıkmıyorsa sorun var demek, her zaman pid çıkmalı.
hPID=`pgrep -f 'ntop'` // buraya pid aldığın yeri yaz.
if [ -z "$hPID" ] ; then
if [ -f $ARGELA_RUN_HOME/./autostart_ntop.sh ]; then
$ARGELA_RUN_HOME/./autostart_ntop.sh // buraya servisi çalıştıracağın path ya da komutu yaz.
http://www.rfxn.com/projects/system-integrity-monitor/ bu ürünüde tercih edebilirsiniz. Fakat dikkatli kullanım gerektirebiliyor bir kaç kişiden yüksek CPU tüketimiyle ilgili olumsuz geri dönüşler gözlemlerken bazılarından ise çok olumlu geri dönüşler gözlemlemek mümkün.
Ben Redhat bir sunucuda ve Debian da kullandım. Debian da pek verim alamadım fakat Redhat sunucuda gayet sağlıklı bir şekilde kullandım fakat sorunun temel kaynağı Linux ürünlerinin farklılığından çok SIM ürünün sürüm farklılığı diye düşünmekteyim. Şuanki sürümleriyle ilgili net bir bilgim yok. Fakat denemenizde fayda görmekteim.