Exchange Server Sorun Çözümü için Kolay Log Toplama Yöntemi – Exchange Log Collector Script

Özellikle Exchange Server 2013 sonrasında loglama alt
yapısında pek çok değişiklik oldu. Özellikle kendi kendine yönetim ve
iyileştirme politikasının bir ürünü olan “Managed Availability” kavramını çok
ciddi manada sistemin log üretmesine neden oldu.

https://www.cozumpark.com/blogs/exchangeserver/archive/2015/03/01/exchange-server-2013-managed-availability.aspx

Öncelikle 2010 uzmanları bu loglar ile sık sık dolan C
disklerinden dolayı tanıştı, daha çok neden bu kadar çok log üretildiğini
araştırdılar, sonuca ulaşınca ise genelde otomatik temizleme komutlarını
zamanlanmış görev yapıp sorundan kurtuldular. Ancak gelin görün ki zaman
içerisinde sorun çözümlemek için bu logların hayati önemi olduğunu anladılar.
Durum böyle olunca logların silme sürelerini en azından son 7 günden 30 güne
yükselttiler. Buraya kadar hayat güzel gidiyordu ancak yine başka bir sorun ile
karşı karşıya kaldık. Çok büyük yapılarda özellikle bildiğiniz gibi sorunların
çözülmesi için yeniden kurmak, silmek tekrar oluşturmak gibi kobi çözümleri çok
kabul edilen çözümler değildir. Şimdi bir kobi çalışanı iseniz sakın alınmayın
bu sektörün bir gerçeği. Bende kobide çalıştım ve çok iyi biliyorum. Eğer sarf
edeceğiniz efor, alacağınız danışmanlığın ücreti karşılığını bulmayacak ise bu
kadar uzman bir personel veya danışmana gerek yoktur. Ancak bir mail kesintisi
ile milyonları kaybeden veya kaybedeceği prestijin telafisi olmayan kurumlar
için bu tarz iletişim alt yapılarındaki kesiniler kabul edilemez. Bir sorunun bu
nedenle kök neden araştırması çok önemlidir. Bir uzman olarak sizlerin de çok
iyi bildiği gibi sorun çözmek için öncelikle teşhisi iyi koymak lazım, bunun
için de iyi bir analiz yani log okumak lazım. Makalemin başında anlattığım
dağınık yapı itibari ile büyük bir exchange sunucu ortamı için bu kadar bilgiyi
toplamak son derece zor olacaktır.

Ama her türlü zorlukta imdadımıza yetişen powershell
burada da hayatımızı kurtarıyor. Aşağıdaki linkten edineceğiniz log collector
komut seti sayesinde tüm exchange loglarını merkezi olarak alabilir ve daha
sonra sorun çözümlemek için kullanabilirsiniz.

https://github.com/dpaulson45/ExchangeLogCollector

Peki nasıl kullanıyoruz. Öncelikle bildiğiniz gibi
exchange server çok fazla log üretiyor ve siz merkezi olarak birden çok sunucu
log dosyasını bir sunucu üzerine toplamak istiyorsanız öncelikle yeterli boş
alanınızın olduğunu kontrol edin. Benim tavsiye yanlış hesaplama durumuna
karşılık C diskinizin dolması = işletim sisteminizin her an mavi ekran vermesi
ve bir daha normal açılmamasına yol açabilir. Ondan en temizi bir yönetim
sunucusu gibi bir sunucuda komutu çalıştırmanız veya gerçekten yeterli
yerinizin olduğundan emin olduktan sonra çalıştırmanızı öneririm.

İlk komutumuz aşağıdaki gibidir;

.\ExchangeLogCollector.ps1 -AllPossibleLogs

Bu komutu çalıştırdıktan sonra komutu çalıştırdığınız
sunucu üzerindeki tüm varsayılan logları toplayıp aşağıdaki dizine
yerleştirecektir;

C:\MS_Logs_Collection

Not: Ortalama 1000 kullanıcı ve iki MBX sunucu olan bir
exchange server ortamında tek bir sunucu için bu komut ortalama 30GB log
topladı, tabiki bu sizin kullanıcı, mail alma gönderme sayısı, ekleri, DAG
yapısı vb pek çok değişkene göre değişir ancak fikir vermesi açısından
paylaşmak istiyorum ki olası bir disk boş yer sorunu yaşamayın.

clip_image002

Bir uyarı sonrası “y” tuşuna basarak toplama işlemi
için onay verebilirsiniz.

clip_image004

Not: remote toplama için exchange server minimum 2012
ve üstü bir OS de çalışmalı. 2008 ve 2008 R2 üzerinde ise bu log toplama
işlemini remote yapamazsınız.

clip_image006

Log toplama işlemi başladı.

clip_image007

Tamamlandıktan sonra sıkıştırma özelliği ile logların
sıkıştırılmış halini görebilirsiniz;

clip_image008

İçeriği ise aşağıdaki gibidir;

clip_image009

Eğer daha belirli bir log için çalışmak istiyorsanız
aşağıdaki gibi bir komut çalıştırabilirsiniz

.\ExchangeLogCollector.ps1 -DatabaseFailoverIssue
-Servers EXCH1,EXCH2 -FilePath Z:\Data\Logs

Bu durumda ilgili sunucular için DB failover loglarını
ilgili path’ e toplar.

clip_image011

clip_image013

Log toplama işleminde bir detay gözünüze çarpmış
olabilir. Log dizini için 15GB boş alan gereksinimi vardır.

clip_image015

Kısa bir süre sonra log toplama işinin bittiğini
görebiliyoruz. Burada yine önemli bir nokta var, her iki sunucu için ilgili
loglar yerel disklerinde toplandı ancak sonra uzak sunucudaki bu loglar network
üzerinden komutu çalıştırdığınız sunucuya kopyalandı.

Uzak sunucu diskinin durumu bu şekilde;

clip_image017

Klasör hala orada duruyor, ama komutu çalıştırdığım
sunucu D diski ise her iki ya da kaç exchange sunucu için çalıştırmış iseniz
onların log klasörünü görebilirsiniz;

clip_image019

Bir diğer örnek ise IIS ve RPC logları için
kullanılabilir

.\ExchangeLogCollector.ps1 -Servers EXCH1,EXCH2
-IISLogs -RPCLogs

Ancak IIS loglar için son 3 günlük ( bu varsayılan
ayardır, sonuçta amaç sorun çözmek için log toplamak olduğu için bu şekilde
çalışıyor, siz isterseniz komutu güncelleyebilirsiniz) veri
toplanmaktadır.

Eğer daha fazla parametre öğrenmek istiyorsanız
aşağıdaki link’ i kullanabilirsiniz.

https://github.com/dpaulson45/ExchangeLogCollector

Umarım faydalı bir makale olmuştur. Bir sonraki
makalemde görüşmek üzere.

Kaynak

https://www.cozumpark.com/blogs/exchangeserver/archive/2018/07/01/exchange-server-sorun-cozumu-i-in-kolay-log-toplama-yontemi-exchange-log-collector-script.aspx