Tek bir kitaplık ile çok sayıda sistem ölçümünü izleyebilir ve her şeyin sorunsuz çalıştığından emin olabilirsiniz.
Çoğu kuruluş, operasyonlarını yürütmek için büyük ölçüde BT altyapılarına güveniyor. Planlanmamış sistem arızaları veya performans düşüşleri kesintilere, mali kayıplara ve itibarın zarar görmesine yol açabilir.
Otomatik sistem durumu kontrolleri, BT altyapısının istikrarlı ve güvenilir kalmasını sağlamak için çok önemlidir. Kritik ölçümleri izleyerek ve anormallikleri anında tespit ederek kesinti süresini en aza indirebilirsiniz.
Durum Denetimlerini Tanımlama
Sisteminizde hangi sağlık kontrollerini gerçekleştirmek istediğinizi tanımlamanız önemlidir. Neyi ve nedenini izleyeceğiniz konusunda net kriterler oluşturmalısınız. Sisteminizin birincil hedeflerini tanımlayarak başlayın. Hangi işlevleri veya hizmetleri sağlıyor?
Ardından geçmiş verilere dayalı performans kıyaslamaları belirleyin ve durum kontrollerinizin sistem kaynaklarının verimli kullanımını değerlendirdiğinden emin olun. Son olarak, bir soruna işaret eden eşikleri tanımlayın. Kaynak kullanımının yüzde kaçını yüksek veya düşük olarak değerlendiriyorsunuz? Sistem hangi noktada bir uyarı tetiklemelidir?
Kütüphaneleri Seçmek ve Ortamınızı Kurmak
Python'da sistem izleme sürecini otomatikleştirmek için sistem ölçümlerini toplamanıza ve ardından kontrolleri planlamanıza yardımcı olacak aşağıdaki kitaplıklara ihtiyacınız olacak.
- psutil: Bu, sistem kullanımı (CPU, bellek, diskler, ağ, sensörler) hakkında bilgi almak için bir arayüz sağlayan platformlar arası bir kütüphanedir.
- takvim: Bu kitaplık, görevleri belirli aralıklarla çalışacak şekilde planlamanın basit bir yolunu sağlar.
- zaman: Zamanla ilgili işlemler için kullanacağınız Python yerleşik kütüphanesi.
- Kerestecilik: Sistem sağlık kontrollerinin günlüklerini oluşturmak için kullanacağınız başka bir yerleşik kütüphane.
İşleri ayarlamaya başlayın: yeni bir Python sanal ortamı oluşturmak. Bu, olası sürüm kitaplığı çakışmalarını önleyecektir. Daha sonra aşağıdaki terminal komutunu çalıştırın gerekli kütüphaneleri Pip ile kurun:
pip install psutil schedule
Kütüphaneler sisteminize kurulduğunda ortamınız hazırdır.
Kaynak kodunun tamamı şu adreste mevcuttur: GitHub deposu.
Gerekli Kitaplıkları İçe Aktarma
Yeni bir komut dosyası oluşturun, izleme.pyve gerekli kitaplıkları içe aktararak başlayın:
import psutil
import schedule
import time
import logging
Kitaplıkları içe aktarmak, kodunuzda sundukları işlevleri kullanmanıza olanak tanır.
Loglama ve Raporlama
Sağlık kontrollerinizin sonuçlarını kaydetmenin bir yoluna ihtiyacınız var. Günlüğe kaydetme, olayların tarihsel kayıtlarını yakalamak ve korumak için hayati bir araç olarak hizmet eder ve kodunuzdaki sorunları ayıklama. Performans analizinde de kritik bir rol oynar.
Bu projeye yönelik günlüklerinizi oluşturmak için yerleşik günlük kitaplığını kullanın. Günlük mesajlarını adlı bir dosyaya kaydedebilirsiniz. system_monitor.log.
# Function to log messages
deflog_message(message):
# Configure logging
logging.basicConfig(filename='system_monitor.log', level=logging.INFO,
format='%(asctime)s - %(message)s')
logging.info(message)
Raporlama için, dikkat edilmesi gereken sorunlar hakkında anında bildirim sağlamak üzere konsola bir uyarı mesajı yazdırın.
# Function to print alerts to the console
defprint_alert(message):
print(f"ALERT: {message}")
Durum denetimi işlevleri, ilgili bulgularını günlüğe kaydetmek ve raporlamak için bu işlevleri kullanacaktır.
Sağlık Kontrolü Fonksiyonları Oluşturma
Her durum denetimi için, altyapınızın kritik bir yönünü değerlendiren belirli bir testi kapsayacak bir işlev tanımlayın.
CPU Kullanımı İzleme
CPU kullanımını izleyecek bir işlev tanımlayarak başlayın. Bu, sistemin genel performansının ve kaynak kullanımının kritik bir göstergesi olarak hizmet edecektir. Aşırı CPU kullanımı, sistemin yavaşlamasına, yanıt vermemesine ve hatta çökmelere neden olarak temel hizmetlerin ciddi şekilde kesintiye uğramasına neden olur.
Sistem yöneticileri, CPU kullanımını düzenli olarak kontrol ederek ve uygun eşikleri ayarlayarak performans darboğazlarını, yoğun kaynak kullanan süreçleri veya olası donanım sorunlarını belirleyebilir.
# Health check functions
defcheck_cpu_usage(threshold=50):
cpu_usage = psutil.cpu_percent(interval=1)
if cpu_usage > threshold:
message = f"High CPU usage detected: {cpu_usage}%"
log_message(message)
print_alert(message)
İşlev, sistemin mevcut CPU kullanımını kontrol eder. CPU kullanımı eşiği yüzde olarak aşarsa, yüksek CPU kullanımını belirten bir mesajı günlüğe kaydeder ve bir uyarı mesajı yazdırır.
Bellek Kullanımı İzleme
Bellek kullanımını izleyecek başka bir işlev tanımlayın. Bellek kullanımını düzenli olarak izleyerek şunları yapabilirsiniz: bellek sızıntılarını tespit etme, kaynağa aç süreçler ve potansiyel darboğazlar. Bu yöntem sistem yavaşlamalarını, çökmelerini ve kesintileri önler.
defcheck_memory_usage(threshold=80):
memory_usage = psutil.virtual_memory().percent
if memory_usage > threshold:
message = f"High memory usage detected: {memory_usage}%"
log_message(message)
print_alert(message)
CPU kullanım kontrolüne benzer şekilde, yüksek bellek kullanımı için bir eşik belirlersiniz. Bellek kullanımı eşiği aşarsa günlüğe kaydeder ve bir uyarı yazdırır.
Disk Alanı İzleme
Disk alanını izleyecek bir işlev tanımlayın. Disk alanının kullanılabilirliğini sürekli izleyerek kaynak tükenmesinden kaynaklanan olası sorunları çözebilirsiniz. Disk alanının tükenmesi sistem çökmelerine, verilerin bozulmasına ve hizmet kesintilerine neden olabilir. Disk alanı kontrolleri yeterli depolama kapasitesinin olduğundan emin olmanıza yardımcı olur.
defcheck_disk_space(path='/', threshold=75):
disk_usage = psutil.disk_usage(path).percent
if disk_usage > threshold:
message = f"Low disk space detected: {disk_usage}%"
log_message(message)
print_alert(message)
Bu işlev, belirtilen yolun disk alanı kullanımını inceler. Varsayılan yol kök dizindir /. Disk alanı eşiğin altına düşerse günlüğe kaydeder ve bir uyarı yazdırır.
Ağ Trafiği İzleme
Sisteminizin veri akışını izleyecek son bir işlev tanımlayın. Ağ trafiğinde güvenlik ihlallerinin veya altyapı sorunlarının göstergesi olabilecek beklenmedik artışların erken tespit edilmesine yardımcı olacaktır.
defcheck_network_traffic(threshold=100 * 1024 * 1024):
network_traffic = psutil.net_io_counters().bytes_recv +\
psutil.net_io_counters().bytes_sent
if network_traffic > threshold:
message = f"High network traffic detected: {network_traffic:.2f} MB"
log_message(message)
print_alert(message)
İşlev, gönderilen ve alınan baytları toplayarak ağ trafiğini izler. Eşik bayt cinsindendir. Ağ trafiği eşiği aşarsa günlüğe kaydeder ve bir uyarı yazdırır.
İzleme Mantığını Uygulama
Artık durum kontrolü işlevlerine sahip olduğunuza göre, denetleyici işlevinden her birini sırayla çağırmanız yeterlidir. Bu genel kontrolün her çalıştırılmasında çıktıyı yazdırabilir ve bir mesajı günlüğe kaydedebilirsiniz:
# Function to run health checks
defrun_health_checks():
print("Monitoring the system...")
log_message("Running system health checks...")check_cpu_usage()
check_memory_usage()
check_disk_space()
check_network_traffic()
log_message("Health checks completed.")
Bu işlev, tüm durum kontrollerini çalıştırarak sisteminizin sağlık durumuna ilişkin birleşik bir görünüm sağlar.
Otomatik Kontrollerin Planlanması ve Programın Çalıştırılması
İzlemeyi belirli aralıklarla otomatikleştirmek için zamanlama kitaplığını kullanacaksınız. Aralığı gerektiği gibi ayarlayabilirsiniz.
# Schedule health checks to run every minute
schedule.every(1).minutes.do(run_health_checks)
Şimdi sistem izleme sürecini sürekli bir döngüde çalıştırın.
# Main loop to run scheduled tasks
whileTrue:
schedule.run_pending()
time.sleep(1)
Bu döngü, zamanlanmış görevleri sürekli olarak kontrol eder ve zamanı geldiğinde bunları yürütür. Programı çalıştırdığınızda çıktısı aşağıdaki gibidir:
Program, izleme günlüklerini system_monitor.log dosyasını açar ve terminalde bir uyarı görüntüler.
Sistem İzleme Programının Geliştirilmesi
Bu izleme kontrolleri psutil'in desteklediği tek kontroller değildir. İhtiyaçlarınıza uyacak şekilde benzer bir yaklaşım kullanarak daha fazla izleme işlevi ekleyebilirsiniz.
Konsolda basit bir mesaj göndermek yerine e-postayı kullanacak şekilde raporlama işlevini de geliştirebilirsiniz.