Pythontr

husonet | Tarih: 29.08.2011

yük durumu kontrolü (load avarage) sistem restart etme

Selamun Aleykum,

Düşük sistemli ve anlık hiti yüksek makinalarda durumu kurtarmak için kullanılabilir.

#!/usr/bin/python
#-*- coding:utf-8 -*-

#------------------------------------------------------------------------------
# Hüseyin ÖZDEMİR
# 28.08.2011
# husonet
# Yük durumunu kontrol eder yük durumu 20 seviyesine geldiği yada geçtiği zaman
# Apache ve Mysql servislerini restart eder.
# Debian 6.0 Squueze de test edilmiştir.
#------------------------------------------------------------------------------

import os
from subprocess import call
import subprocess
from datetime import datetime

LOAD = 20
KOMUT = "top -b -n 1 | head -n 20 | grep average | awk '{print $12}' |"
KOMUT += " cut -d, -f1 | cut -d. -f1"
LOG_DOSYA = "/var/log/loadinfo.load"
APACHE_SERVIS = "/etc/init.d/apache2 restart"
MYSQL_SERVIS = "/etc/init.d/mysql restart"

# Debug yapilacak mi? Test ortami icin 1, gercek calisma ortami icin 0
DEBUG = 0

#------------------------------------------------------------------------------
# log dosyası
def log_dosya(sVal):
try:
dosya = open(LOG_DOSYA , 'wb')
dosya.write(sVal)
except Exception, err:
if DEBUG:
raise
else:
print(str(err))
finally:
try:
dosya.close()
except:
pass
#------------------------------------------------------------------------------
# yük durumu kontrol et uygun değilse apache servisini ve mysql servisini·
# yeniden başlat
def yuk_kontrol():
try:
pid = subprocess.Popen(KOMUT, shell=True, stdin=subprocess.PIPE,·
stdout=subprocess.PIPE, stderr=subprocess.PIPE,)
pid.wait()
load_info = pid.communicate()[0].strip()
if int(load_info) >= LOAD:
tarih = datetime.now()
paid = subprocess.Popen(APACHE_SERVIS, shell=True)
paid = paid.wait()
#pmid = subprocess.Popen(MYSQL_SERVIS, shell=True)
#pmid = pmid.wait()
log_dosya('Sistemin son çalışma tarihi:' +·
tarih.strftime("%d-%m-%Y %H:%M:%S"))
except Exception, err:
if DEBUG:
raise
else:
print(str(err))


if __name__ == "__main__":
try:
yuk_kontrol()
except Exception, err:
print(str(err))