27 Kasım 2016 Pazar

Centos Üzerinde Servisleri Kontrol Edelim!

WordPress kullananların baş belasıdır Mysql servisi! Birazcık ziyaretçi sayımız yükselsin hemen stop olur. Sonrasında ise web sitemize giren ziyaretçilerimiz “Veritabanı bağlantısı kurulurken hata oluştu” hatası alırlar. Velhasıl kelam bu hata sonucunda SSH’dan sunucuya bağlanıp, mysql’i tekrar start etmemiz gerekiyor.


Hele ki yetersiz kayaklara sahip bir sunucunuz varsa (ucuz etin yahnisi) maalesef ki bu hata sıklıkla karşınıza çıkabilir. Diğer bir yandan kullandığınız tema içerisinde çok fazla sorgu vardır ve


içerik fazla olunca (database büyük olunca) öyle ahım şahım
ziyaretçi sayısına sahip olmadan da bu hata ile karşılaşabilirsiniz. Kesin çözüm iyi bir hosting, idare edecek çözüm ise aşağıdaki gibi .)



Şöyle bir tane basit bir Bash Script yazsak ve Crontab üzerinde her dakika çalıştırsak, gitse kontrol etse mysql servisini? Stop olduğunu gördüğü zaman otomatik olarak servisi başlatsa? Üstüne üstlük bir de bize e-posta gönderse ne güzel olurdu değil mi?

Bir arkadaşımın sunucusu aynen bu durumdaydı. Her seferinde de bilgisayar başında olamadığı için sıkıntı yaşamaya devam ediyordu. Aşağıdaki gibi bir Bash Script ile sorununu çözdük.

Aşağıdaki Bash Script’i Crontab üzerinde bir dakika zamanlı çalıştırdığınız zaman, script mysql servisini kontrol eder, eğer stop durumdaysa start edip size e-posta gönderir. Eğer ki servis start olmazsa yani başka bir sorun varsa ve tekrar çalışmıyorsa mail gönderip size servisin patladığını belirtiyor.

Yapacağımız iş çok basit!

Birinci adımda /etc/ dizini altına mysql_kontrol.sh isminde bir dosya oluşturup, aşağıdaki kodu içerisine yapıştırıyoruz.

alttakı kodları sırasıyla ssh üzerinden yazıp enterlayınız
[php]cd ../etc[/php]
[php] nano mysql_kontrol.sh[/php]

Aşağıdaki kodu yapıştırdıktan sonra CTRL X ile çıkıyor ve “Yes” yaparak kayıt ediyoruz. İkinci adımda ise dosyayı çalıştırabilir bir hale getirmemiz gerekiyor bunun için,

[php]#!/bin/bash
### Servis Otomatik Başlasın Temiz Eller
service=mysql
email=info@temizeller.net
### Ayarlar bu kadar basit

if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
echo "$service is running"
else
/sbin/service $service start
if (( $(ps -ef | grep -v grep | grep $service | wc -l) > 0 ))
then
subject="$service Servisini Otomatik Başlattım!"
echo "$service Servisi Durdu! Otomatik olarak tekrar başlattım!" | mail -s "$subject" $email
else
subject="$service Servisi Patladı! Yardım Lazım!"
echo "$service Servisi patladı. Çalıştırmayı Denedim Çalışmıyor." | mail -s "$subject" $email
fi
fi[/php]

şimdi yazma izni için yine ssh üzerinden kodu çalıştırıyoruz

[php]chmod +x mysql_kontrol.sh[/php]

Son adımda ise Crontab üzerinde dosyamızı zamanlıyoruz ve dakikada bir çalışmasını sağlıyoruz.

[php]export VISUAL=nano; crontab -e[/php]

Komutu ile Crontab’ı açıyoruz ve içerisine aşağıdaki kodu yazıyoruz.

[php]*/1 * * * * /etc/mysql_kontrol.sh[/php]

Sonrasında CTRL X ile kayıt edip çıkış yapabiliriz. Artık Bash Script hazır hale geldi. Bundan sonra küçük bir test yapabiliriz. SSH komut satırına

[php]service mysql stop[/php]

yazarsanız mysql servisi duracaktır. Bir dakika sonra mysql_kontrol.sh dosyamız devreye girecek, Mysql servisinin çalışmadığını görecek ve servisi tekrar çalıştırıp size e-posta ile bildirim yollayacak. Bir dakika kadar bekledikten sonra komut satırına

[php]service mysql status[/php]

yazarak, servisin başladığını görebilirsiniz.

mysql_kontrol.sh dosyamızın içeriği;

Üçüncü satırda servisin ismi yer alıyor. Mysql yerine httpd kullanabilir aynı işlemi Apache veya başka bir servis için kullanabilirsiniz. Dördüncü satırda ise e-posta adresiniz yer alıyor. Lütfen kendi e-posta adresiniz ile değiştirin. E-postalar bana gelmesin.

“Servisi otomatik başlattım” e-postası gelirse sorun yok demektir. Eğer “mysql Servisi Patladı! Yardım Lazım!” e-postası geldiyse, script mysql servisini başlatamıyor demektir. Bu da sorunun başka bir şeyden kaynaklandığını gösterir. Bir bilene danışabilir veya /var/log/ klasöründen error_log kayıtlarını inceleyebilirsiniz.

0 yorum:

Yorum Gönder