Exchange Server

Exchange Server Health Check

MSExchange Server Health Check Scripti, performans sorunlarını, yapılandırma sorunlarını, işleyişi bozacak hataları, düzensizlikleri ve basit bir yapılandırma değişikliğinin neden olduğu uzun süre kesintilerin sebebini bulmamıza yardımcı olmaktadır.

Ayrıca Exchange Server ortamınızın son durumunu kontrol etmenize olanak sağlamaktadır.

Ortamınızda DAG yapılandırması yapacaksanız veya yeni bir Cluster ekleyecekseniz bu işlemlerden önce mevcut ortamınızı gözden geçirmeniz gerekmektedir, bu işlemleri Microsoft’un hazırladığı Health Check scripti ile yapabilirsiniz.

Exchange Server Health Check Script İndirme ve Çalıştırma Yöntemleri

Exchange Server Healt Check scripti Microsoft tarafından hazırlanmış olup %100 PowerShell üzerinde çalışmaktadır. Ayrıca bu ürün sık sık Microsoft tarafından güncellenmektedir. Script için geri bildirim yapmanız gerekiyorsa [email protected] adresinden bildirimde bulunabiliyorsunuz.

https://github.com/microsoft/CSS-Exchange/releases/latest/download/HealthChecker.ps1

Health Check Ön Gereksinimleri

Scripti çalıştırmak için ilgili kullanıcının aşağıdaki yetkilerin verilmiş olması gerekmektedir;

  • Organization Management
  • Domain Admins

Scripti çalıştırdığınız zaman, scriptin bulunduğu konumda 2 adet dosya oluşuyor.

  • .txt: PowerShell penceresinde bulunan çıktısı .txt olarak klasör içerisinde oluşuyor.
  • .xml: Raporu daha detaylı incelemek için ayrıca birde .xml olarak oluşuyor.

Oluşan .xml raporu .html olarak alabiliyoruz veya daha sonradan BuildHtmlServersReport bileşeni ile .html yapabiliyoruz.

.\HealthChecker.ps1 -BuildHtmlServersReport -HtmlReportFile "CP-2019Report.html"

Raporu .html olarak çevirdiğiniz zaman, bazı satır veya sütünler renkli olarak geliyor. Renkli olarak incelemek nerelere dikkat etmemiz gerektirdiğini kolaylaştırıyor.

Gördüğünüz gibi Sunucu üzerindeki tüm bilgileri burda görebiliyorsunuz, sunucum üzerinde RAM miktari için uyarı vermektedir, çünkü Exchange Server 2019 Best Practice tarafında 128GB Ram önerilmektedir. Fakat bunu söylemeden geçemeceğim, sunucu üzerinde 800 – 1500 MBX çalıştırmıyorsanız 128GB RAM o sunucuya etinden sütünden koymuşsunuz anlamına gelir 🙂

Örnek: Exchange Server’ın çalıştığı sunucu PowerPlan’ı High Performance olarak ayarlanmadığı zaman, rapor bunu Kırmızı olarak gösteriyor veya PageFile yapılandırılmadığı zaman rapor bu satırı Kırmızı olarak gösteriyor.

Aşağıda görselde Power Plan’ım Exchange Server için High Performance olarak ayarlandı ve PageFile yapılandırılması bulunmuyor. Power plan satırı yeşil yani herşey normal ve stabil olduğunu ifade ediyor. Pagefile satırı ise Kırmızı burada yapılandırma yapmamız gerektiğini belirtiyor.

Rapor incelemesi yaparken aslında 4 farklı renk bulunmaktadır.

Gri renk olan satırlar bilgi vermektedir

Sarı renk olan satırlar uyarı işaret etmektedir.

Kırmızı renk olan satırlar Performans sorunları yaratabilir anlamındadır.

Yeşil renk olan satırlar ise herşey düzgün ve stabil.

Mevcut Exchange Sunucunuz için Rapor almak için, scripti bileşen belirtmeden çalıştırmanız yeterli olacaktır. Size bir .txt ve XML raporu sunacaktır.

.\HealthChecker.ps1

Ortamınızda bulunan başka bir sunucu için rapor oluşturmak isterseniz;

.\HealthChecker.ps1 -Server <Server Adı>

Ortamınızda bulunan tüm sunucuların raporunu .XML olarak aldınız ve script dosyasının bulunduğu klasör içerisinde topladınız. Bunların tamamını birleştirme işlemi yaparak .HTML hale getirmek isterseniz;

.\HealthChecker.ps1 -BuildHtmlServersReport

Tüm sunucularınız XML raporlarını script dosyasının olmadığı bir klasöre topladınız, XMLDirectoryPath bileşeni ile belirtmiş olduğunuz klasördeki XML dosyalarını .HTML olarak çevirebilirsiniz.

.\HealthChecker.ps1 -BuildHtmlServersReport -XMLDirectoryPath C:\XMLReport

Ortamınızda bulunan tüm sunucuların raporunu almak istiyorsanız ve .HTML olarak incelemek istiyorsanız kullanmanız gereken komut seti aşağıdaki gibidir;

Get-ExchangeServer | ?{$_.AdminDisplayVersion -Match "^Version 15"} | %{.\HealthChecker.ps1 -Server $_.Name}; .\HealthChecker.ps1 -BuildHtmlServersReport; .\ExchangeAllServersReport.html

Belirtmiş olduğunuz sunucu üzerinde Mailbox Report almak için;

.\HealthChecker.ps1 -MailboxReport -Server CP-EXC
PARAMETREAÇIKLAMA
ServerSistem Durumu Denetleyicisi komut dosyasını çalıştırmak istediğiniz sunucu. Parametre -BuildHTMLServersReport veya LoadBalancingReport ile geçerli değil. Varsayılan değer localhost’tur.
OutputFilePathKomut dosyasının ürettiği günlük dosyalarının çıktı konumu. Varsayılan değer geçerli dizindir.
MailboxReportSağlanan sunucu için Posta Kutusu Raporu’nu üretir.
LoadBalancingReportKomut dosyası için LoadBalancing raporunu çalıştırmaktadır.
CasServerListKomut dosyasının hangi sunuculara karşı çalışacağını bilmesini sağlamak için LoadBalancingReport anahtarıyla birlikte kullanılır.
SiteNameKomut dosyasının sitede hangi sunuculara karşı çalışacağını bilmesini sağlamak için LoadBalancingReport anahtarıyla birlikte kullanılır.
XMLDirectoryPathRapora dahil edilmesini istediğiniz sunucuların HealthChecker XML dosyalarının konumu için BuildHtmlServersReport anahtarıyla birlikte kullanılır. Varsayılan konum geçerli dizindir.
BuildHtmlServersReportTüm sunucular için HTML raporu oluşturmak üzere komut dosyasını etkinleştirmek için geçiş yapın XML sonuçları XMLDirectoryPath konumuna belirtmeniz gerekir..
HtmlReportFileBuildHtmlServersReport’tan HTML çıktı dosyasının adı. Varsayılan değer ExchangeAllServersReport’tur.html
DCCoreRatioExchange – DC/GC Çekirdek oranını toplar ve sonuçları komut dosyasının çalıştığı geçerli sitede görüntüler.
AnalyzeDataOnlyVarolan HealthChecker XML dosyalarını çözümlemek için geçiş yapın. Sonuçlar ekranda görüntülenir ve bir HTML raporu oluşturulur.
SkipVersionCheckBu anahtar kullanıldığında sürüm denetimi yapılmaz.
SaveDebugLogHata ayıklama günlüğü, komut dosyası başarıyla yürütülse bile tutulur.
ScriptUpdateOnlyKomut dosyasının en son sürümünü denetlemek için geçiş yapın ve daha yeni bir sürüm bulunursa otomatik güncelleştirme gerçekleştirin. İnternet bağlantısı olan herhangi bir makinede çalıştırılabilir. Yükseltilmiş izinler veya EMS gerekmez.

Rapor Üzerinde Dikkat Etmeniz gereken önemli yerler;

TCP/IP Settings Check

KeepAliveTime değeri varsayılan olarak 2 saat olarak gelmektedir ve Microsoft bu değerin Regedit tarafına ekleyeceğimiz anahtar ile düşürmemiz öneriyor. Önerilen 15 DK veya 30DK olması gerekmektedir. Bu değeri ortamımıza doğru ayarlayamazsak bağlantı veya performans sorunları oluşturabilir. Yine aynı şekilde bu değer varsayılan olarak bırakılırsa Load Balancing tarafında bağlantı sorunlarına sebebiyet vermektedir. Çünkü, Exchange Server’a gelen istek iptal olduysa bunu Exchange Server’ında kısa sürede iptal etmesi gerekmektedir. Ortamınızda birden fazla sunucu varsa PowerShell ile tüm sunucularınız için KeepAliveTime raporu çekebilirsiniz ve hepsini aynı değere ayarlayabilirsiniz.

Benim LAB sunucumda bu değer ayarlı değil ve HealthCheck raporumda Kırmızı satır olarak gözükmektedir.

NETFramework Check

MSExchange Server için olmazsa olmaz olan, NET Framework’tür. Bağlı olduğumuz sürüme göre NETFramework sürümü değişiklik gösterebilir. Health Check raporunda sunucularınız üzerinde kurulu olan NET Framework sürümlerini kontrol edebilirsiniz ve sürüm kontrolü yapabilirsiniz.

Benim işletim sistemim Windows Server 2022 ve Exchange Server 2019 kurulu. Üzerinde NET Framework 4.8 var, rapor satırımda burası yeşil yani herhangi bir sorun bulunmuyor.

Microsoft’un NET Framework Matrisini incelemek isterseniz;

Exchange Server supportability matrix | Microsoft Docs

TLS Configuration Check

Sunucuların TLS yapılandırmasını kontrol etmektedir. ( TLS 1.0 – 1.2) Sunucu üzerindeki TLS uyuşmazlıklarını analiz ediyor. TLS hem istemcide hem sunucu üzerinde önemlidir

Geçersiz bir TLS yapılandırması Exchange Server üzerinde bağlantı, güvenlik veya performans sorunlarına sebebiyet vermektedir. Hatta Takvim yetkilendirmesi sırasında Free/Busy sorunu yaratmaktadır. Ortamda 1.2 ve 1.1 kullanan sunucular varsa Free/Busy çalışmamaktadır.

Ayrıca, .NET Framework’ün varsayılanlarını Windows Schannel DisabledByDefault kayıt defteri değerlerinden devralıp almayacağını denetleyen SystemDefaultTlsVersions kayıt defteri değerini de denetlemektedir.

Kayıt defteri değeri tanımlanmadığında, .NET Framework’ün farklı sürümleri TLS seçeneklerini farklı şekilde ele almaktadır. Bu nedenle, anahtar tanımlanmamışsa bir hata atarız ve bunu mümkün olan en kısa sürede düzeltmek için harekete geçilmesi gerekir.

Open Relay Domain

Ortamınızda Open Relay durumu ayarlanmışsa, rapor kırmızı olarak satır göstermektedir.

Sleepy NIC Check

Exchane Server üzerinde NIC ayarlarında Power Management’ı Paket Kaybına neden olabileceğinden devre dışı bırakmanız önerilmektedir. LAB sunucumda bu ayarı gerçekleştirmiyorum ama Gerçek dünyada sunucuyu aktif etmeden önce yaptığım ayarlardan birtanesidir.

İlgili Makaleler

2 Yorum

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu