İçindekiler

    Yazıyı Dinle

    Hazır
    Tarayıcınızın yerleşik ses sentezi özelliğini kullanır.

    Yazı Boyutu

    Küçük Aa
    Normal Aa
    Büyük Aa
    Çok Büyük Aa

    Kaydet

    📑

    Bu makaleyi daha sonra okumak için kaydedin

    Sunucu Hizmet İzleme, PowerShell ile Güvenli ve Etkili Betik Oluşturma

    Sunucu Hizmet İzleme, PowerShell ile Güvenli ve Etkili Betik Oluşturma
    Yazıyı dinlemek için oynat butonuna tıklayın
    Havayolu şirketleri gibi kritik sistemlerde çalışan ortamlarda, sunucular üzerindeki hizmetlerin sürekli olarak izlenmesi hayati öneme sahiptir. Herhangi bir hizmetin durması veya bağlantı hatası, uçuş planlaması, rezervasyon sistemi veya güvenlik süreçlerini doğrudan etkileyebilir. Bu yazıda, Get-Service cmdlet'i ve try-catch hata işleme yapısı kullanılarak, havayolu şirketinin birden fazla Windows sunucusunda belirli bir hizmetin durumunu güvenli bir şekilde kontrol eden PowerShell betiği nasıl yazılır?

    Neden Get-Service ve try-catch?

    Bu senaryo için önerilen yaklaşımın temel gerekçeleri şunlardır:
    A. Get-Service Cmdlet'i: Doğal ve Basit Çözüm
    • Get-Service, Windows hizmetlerini sorgulamak için doğrudan tasarlanmıştır.
    • Komut satırında Get-Service -Name "Spooler" gibi basit bir komutla hizmetin durumu (Running, Stopped, vb.) alınabilir.
    • Uzak sunucularda çalıştırılabilmesi için Invoke-Command ile birlikte kullanılabilir.
    B. try-catch: Bağlantı Hatalarını Yakalama ve Yönetme
    Uzak sunuculara bağlantı sırasında şu hatalar oluşabilir:
    • Sunucu kapalı veya erişilemez.
    • Hizmet adı yanlış veya mevcut değil.
    • Yetkilendirme sorunları (örneğin, erişim reddedildi).
    try-catch yapısı, bu tür istisnaları yakalayarak betiğin çökmesini engeller ve özel hata mesajları gösterir. Örneğin, bir sunucuya erişilemediğinde kullanıcıya "Sunucuya ulaşılamıyor" gibi bilgilendirici bir mesaj verilebilir.

    Uzak Sunucularda Hizmet Durumu Kontrolü

    # İzlenecek sunucular ve hizmet adı $servers = "Server01", "Server02", "Server03" $serviceName = "FlightScheduler" foreach ($server in $servers) { try { # Uzak sunucuda hizmet durumunu sorgula $service = Invoke-Command -ComputerName $server -ScriptBlock { Get-Service -Name $using:serviceName -ErrorAction Stop } -ErrorAction Stop # Hizmet durumunu kontrol et if ($service.Status -eq "Running") { Write-Host "$server üzerinde $serviceName hizmeti aktif." -ForegroundColor Green } else { Write-Host "$server üzerinde $serviceName hizmeti durmuş!" -ForegroundColor Red # Alternatif işlem (örneğin, uyarı e-postası gönderme) Send-MailMessage -To "admin@airline.com" -From "monitor@airline.com" ` -Subject "Uyarı: Hizmet Durduruldu - $server" ` -Body "$serviceName hizmeti $server üzerinde çalışmıyor!" ` -SmtpServer "smtp.airline.com" } } catch { # Bağlantı veya hata durumlarını yakala Write-Host "$server üzerinde hizmet kontrolü başarısız: $($_.Exception.Message)" -ForegroundColor Yellow # Kritik hataları logla Write-EventLog -LogName "Application" -Source "ServiceMonitor" ` -EntryType Error -EventID 5001 ` -Message "Sunucu: $server | Hata: $($_.Exception.Message)" } }

    A. Invoke-Command ile Uzak Sunucu Erişimi

    • Invoke-Command cmdlet'i, uzak sunucularda komut çalıştırmanızı sağlar.
    • -ComputerName parametresiyle hedef sunucu belirlenir.
    • using: değişkeni, yerel değişkenleri uzak komut bloğuna aktarır.

    B. -ErrorAction Stop ile İstisna Tetikleme

    • Get-Service, hizmet bulunamadığında varsayılan olarak hata vermez (non-terminating error).
    • -ErrorAction Stop ile bu tür hatalar istisna olarak tetiklenir ve catch bloğu tarafından yakalanabilir.

    C. Send-MailMessage ile Uyarı Bildirimi

    • Hizmet durduğunda e-posta ile bildirim gönderilir.
    • Bu, IT ekibine hızlı müdahale imkanı sunar.

    D. Write-EventLog ile Hata Kaydı

    • Kritik hatalar Windows Olay Günlüğüne yazılır.
    • Bu loglar, ileride analiz için saklanabilir.
    Gereksinimler:
    • A. Güvenli Bağlantılar:
      • Invoke-Command için PowerShell Remoting (WinRM) yapılandırması yapılmalıdır.
      • Güvenli protokoller (örneğin HTTPS) kullanın.
    • B. Sıkışık Ağları Dikkate Alın:
      • -ThrottleLimit parametresiyle aynı anda kaç sunucuya bağlanılacağını sınırlayın.
    • C. Hata Mesajlarını Özelleştirin:
      • Kullanıcıya anlamlı bilgiler verin (örneğin, "Hizmet bulunamadı" yerine "FlightScheduler hizmeti Server01'de yok").
    • D. Düzenli Test Edin:
      • Sunucular kapalı olduğunda betiğin nasıl davranacağını test edin.

        Hata
        Açıklama
        Çözüm
        Access is denied
        Yetki eksikliği
        Betiği yönetici haklarıyla çalıştırın veyaEnter-PSSessionile kimlik doğrulaması yapın.
        The RPC server is unavailable
        Sunucuya erişilemiyor
        Ağ bağlantısını kontrol edin veya-ThrottleLimitazaltın.
        Service does not exist
        Hizmet adı yanlış
        Get-Servicekomutunu doğrulayın.
        Bu betik, havayolu şirketinin sunucularındaki kritik hizmetlerin izlenmesi için güvenilir bir çözüm sunar. Get-Service ve try-catch kombinasyonu, hem basit hem de güçlüdür. Özellikle bağlantı hatalarını yönetebilme ve özel uyarılar tanımlayabilme özellikleri, havayolu sektöründe kesintisiz hizmet sunulmasını sağlar. Betiği Zamanlanmış Görev (Task Scheduler) ile otomatikleştirerek her X dakikada bir çalıştırabilirsiniz.
    Önceki Yazı Azure Key Vault Nedir?
    Azure Key Vault Nedir?

    Bulut bilişimde hassas verilerin güvenli bir şekilde saklanması ve yönetilm...

    Sonraki Yazı Active Directory Ortamında LDAP ve Kerberos Entegrasyonu AD LDS
    Active Directory Ortamında LDAP ve Kerberos Entegrasyonu AD LDS

    Modern BT altyapılarında farklı dizin hizmetlerinin entegrasyonu, kullanıcı...