Shell Script ile Disk IO İzleme

Mina

Astsubay Başçavuş
Admin
Katılım
25 Kasım 2025
Mesajlar
996
Reaksiyon puanı
34

Disk IO Neden Önemlidir?​


Disk Girdi/Çıktı (Input/Output) işlemleri, bir sistemin performansını doğrudan etkileyen kritik bir bileşendir. Bir sunucunun veya bilgisayarın uygulamaları çalıştırması, veri tabanlarına erişmesi, dosya okuma ve yazma işlemleri yapması tamamen disk performansına bağlıdır. Yavaş disk IO, veritabanı sorgularının gecikmesine, web uygulamalarının yanıt sürelerinin uzamasına ve genel sistem tepkisinin düşmesine yol açabilir. Başka bir deyişle, CPU ve RAM ne kadar hızlı olursa olsun, disk IO bir darboğaz haline geldiğinde, tüm sistemin performansı bu yavaşlığa takılır. Bu nedenle, disk IO aktivitesini düzenli olarak izlemek, potansiyel performans sorunlarını erken teşhis etmek ve sistem sağlığını korumak için hayati önem taşır.

Temel Disk IO İzleme Araçları​


Linux sistemlerde disk IO aktivitesini izlemek için çeşitli güçlü komut satırı araçları bulunur. Bu araçlar, sistem yöneticilerine disk kullanımına dair derinlemesine bilgi sağlar. Örneğin, `iostat` komutu disk aygıtlarının okuma/yazma hızlarını, IOPS (saniyedeki G/Ç işlemleri) değerlerini ve disk kullanım yüzdelerini ayrıntılı bir şekilde gösterir. `vmstat` ise sistemin genel durumunu, bellek, CPU ve disk aktivitesini bir arada sunar. `sar` komutu ise sistem aktivitesi verilerini arşivleyerek geçmişe dönük analiz yapılmasına olanak tanır. Bu araçlar, farklı detay seviyelerinde bilgi sağlayarak disk performansını kapsamlı bir şekilde anlamamıza yardımcı olur. Her biri kendi başına değerli olsa da, bunları bir shell script içinde birleştirmek, daha otomatize ve anlamlı bir izleme çözümü oluşturur.

Basit Bir Shell Script ile İzleme​


Disk IO verilerini periyodik olarak toplamak ve kaydetmek için basit bir shell script oluşturabiliriz. Bu script, belirli aralıklarla `iostat` gibi bir aracı çalıştırarak çıktıları bir dosyaya yönlendirebilir. Örneğin, aşağıdaki gibi bir script, her 5 saniyede bir `iostat` çıktısını zaman damgasıyla birlikte bir log dosyasına ekleyebilir: `#!/bin/bash while true; do echo "--- $(date) ---" >> disk_io_log.txt iostat -x 1 5 >> disk_io_log.txt sleep 300 # Her 5 dakikada bir veri topla done`. Bu scripti bir `nohup` komutuyla veya bir sistem servisi olarak arka planda çalıştırabiliriz. Sonuç olarak, bu yöntemle sürekli bir veri akışı elde ederiz. Ek olarak, bu log dosyasını daha sonra analiz edebilir veya belirli desenleri tespit etmek için kullanabiliriz.

İzleme Verilerini Yorumlama​


Topladığımız disk IO verilerini doğru bir şekilde yorumlamak, performans sorunlarının kök nedenini anlamak için kritik öneme sahiptir. `iostat` çıktısında dikkat etmemiz gereken bazı temel metrikler bulunur. Örneğin, `%util` değeri diskin ne kadar meşgul olduğunu gösterir; %80'in üzerindeki değerler genellikle bir darboğaza işaret edebilir. `await` değeri, bir işlemin diske erişmek için ne kadar beklediğini milisaniye cinsinden ifade eder; yüksek değerler, disk gecikmesinin arttığını gösterir. `r/s` ve `w/s` değerleri saniyedeki okuma ve yazma işlemlerini, `rkB/s` ve `wkB/s` ise saniyede okunan ve yazılan kilobayt miktarını belirtir. Bu değerleri karşılaştırarak, diskin okuma ağırlıklı mı yoksa yazma ağırlıklı mı kullanıldığını anlayabiliriz. Bu nedenle, bu metriklerin normal sistem davranışından sapmaları, acil müdahale gerektiren bir sorunu ortaya koyabilir.

Gelişmiş Script Teknikleri ve Uyarı Sistemleri​


Basit bir izleme scriptini daha gelişmiş hale getirmek için çeşitli teknikler uygulayabiliriz. Öncelikle, belirli eşik değerlerinin aşılması durumunda otomatik uyarı gönderme mekanizmaları ekleyebiliriz. Örneğin, `%util` değeri belirli bir seviyeyi geçtiğinde e-posta veya Slack bildirimi göndermek için `grep`, `awk` ve `mailx` (veya `curl`) komutlarını birleştirebiliriz. Scriptlerimize ayrıca, toplanan verileri daha okunabilir formatlara dönüştürmek için JSON veya CSV çıktıları oluşturma yeteneği katabiliriz. Bu sayede, verileri grafiksel izleme araçlarına kolayca aktarabiliriz. Ek olarak, scriptleri `cron` ile düzenli aralıklarla çalışacak şekilde planlamak, manuel müdahaleyi ortadan kaldırarak sürekli izleme sağlar. Böylece, proaktif bir yaklaşım benimseyerek olası sorunları kullanıcılar etkilenmeden önce çözebiliriz.

Pratik Senaryolar ve Kullanım Alanları​


Disk IO izleme, çeşitli pratik senaryolarda işletmeler ve geliştiriciler için büyük fayda sağlar. Örneğin, bir veritabanı sunucusunda yavaş sorgularla karşılaşıldığında, disk IO izlemesi sorunun diskin yoğunluğundan mı yoksa CPU veya bellekten mi kaynaklandığını anlamamıza yardımcı olur. Yüksek IOPS gerektiren bir e-ticaret sitesinde, kampanya dönemlerinde disk performansının düşmesi müşteri deneyimini olumsuz etkileyebilir. Bu durumda, önceden yapılan izleme ve analizler sayesinde olası darboğazlar tespit edilir. Başka bir deyişle, yedekleme işlemleri sırasında veya büyük veri aktarımlarında sistemin genel performansına olan etkiyi ölçmek için disk IO izlemesi kritik öneme sahiptir. Sanallaştırma ortamlarında ise farklı sanal makineler arasında disk kaynaklarının adil dağıtılıp dağıtılmadığını kontrol etmek için bu yöntemlerden yararlanırız. Bu araçlar, geliştirme, test ve üretim ortamlarında sorun giderme ve performans optimizasyonu için vazgeçilmezdir.

En İyi Uygulamalar ve İpuçları​


Disk IO izlemesini yaparken bazı en iyi uygulamaları takip etmek, daha etkili sonuçlar almanızı sağlar. İlk olarak, sistemlerinizin normal çalışma koşullarındaki "baseline" (temel) değerlerini belirleyin. Bu, anormallikleri tespit etmenizi kolaylaştırır. Ek olarak, sadece disk IO'yu değil, aynı zamanda CPU, bellek ve ağ kullanımını da birlikte izleyin; çünkü bu metrikler genellikle birbirini etkiler. SSD'ler ve HDD'ler farklı performans karakteristiklerine sahip olduğundan, kullandığınız depolama türüne göre beklentilerinizi ve eşik değerlerinizi ayarlayın. Scriptlerinizi modüler ve yorumlanabilir tutun, böylece başkaları da kolayca anlayabilir ve geliştirebilir. Sonuç olarak, topladığınız verileri düzenli olarak arşivleyin ve görselleştirin. Bu sayede, uzun vadeli trendleri analiz edebilir ve gelecekteki kapasite planlaması için bilinçli kararlar verebilirsiniz. Güvenlik açısından, scriptlerinizi sadece yetkili kullanıcıların çalıştırabildiğinden emin olun.
 
Geri
Üst Alt