Windows Olay Günlüğünde 4 GB'ı aşmanın etkileri nelerdir?


13

Windows 2008 / Vista'ya kadar işletim sistemleri için önerilen Olay Günlüğü ayar maksimum değerlerini kapsayan ve en fazla 4 GB öneren bu Microsoft KB'yi buldum ve en az 4 GB'den büyük bir Olay Günlüğünün önerilmediği diğer bazı belirsiz başvurular gördüm 2008 R2, ancak bir olay günlüğü bu boyutu aşarsa ne olacağını merak ediyorum?

Bunu bir test sunucusunda (2012 R2) aştım ve yüksek bellek kullanımı gibi bir şey fark etmedim. 2008 R2'den önceki işletim sistemlerini umursamıyoruz, ancak büyük bir günlük istiyoruz çünkü Windows Olay Yönlendirme ve tüm olayların tek bir yerde olmasını istiyorsanız.


3
Sorunuz beni ilgilendirdiğinden ve patronum bugün beni kızdırdığı için, sunucularımızdan birindeki olay günlüğünün bu gece kontrolden çıkmasına izin vereceğim ve sonuçları mevcut cevabıma geri göndereceğim, ancak dediğim gibi 4 GB değil 64 bit işletim sistemlerinde zor bir sınır değil ve benim deneyimim, 32 bit uygulamaların ve API'ların bile genellikle 4 GB'den büyük dosyaları işlemesi.
HopelessN00b

Ah, 4 GB'den büyük bir olay günlüğü dosyası oluşturmak biraz daha uzun olabilir gibi görünüyor. En yoğun etki alanı denetleyicimiz 20 dakika önce günlüğünü temizledi.
HopelessN00b

Yanıtlar:


10

4 GB'lık bir günlük yüklemeniz gerektiğinde korkunç performans ve gülünç bekleme süreleri dışında ve bu kadar korkunç bir şeyi aramak zorunda kalmazsanız, çok fazla değil. Ortamlarımda gördüğüm en büyük 10 GB olduğunu ve yüklenmesini beklemekten vazgeçmeme rağmen, hiçbir şeye zarar vermemiş gibi görünüyor.

Server 2008 için 4GB uyarısı, 4 GB'ta sıklıkla karşılaşılan 32 bit sınırından kaynaklanmaktadır. 64 bitlik bir sistemde, 16 TB'a (veya 64'e bağlı olarak) kadar büyümesine izin vermelisiniz, ancak kimsenin bu limiti test etmeye yakın herhangi bir yere ulaştığını bilmiyorum.

Tabii ki, henüz yapmadıysanız, çok büyük günlük dosyalarının kullanımı pratik değildir - en son 100 GB (metin) günlük dosyasını yüklemeye çalıştığımda, o olmadan da açılamadı Uygulama açılır ve 100 GB'den önce bu sorunu vuracağınızdan şüpheleniyorum.

Çok daha iyi yaklaşım, dosya boyutunu makul bir şeyle sınırlamak ve zaman zaman temizlemek için bir komut dosyası kullanmaktır. Güvenlik günlüğümüzde 1 GB boyut sınırıyla birlikte aşağıdakileri ortamımda kullanıyorum. Bazı sunucularımız günde 3 GB'ın üzerinde güvenlik etkinliği oluşturur ve taramadan önce bırakacağım devasa günlük dosyalarında bu alanı boşa harcamak istemeyiz, böylece komut dosyam günlük içeriğini sonra yeniden yazılacak olay günlüğünü temizler. Ve onları kopyaladığım klasör yedeklendiğinden, ihtiyacımız olan korkunç olayda günlüklere geri dönebiliriz.

#Adapted from: http://blogs.technet.com/b/heyscriptingguy/archive/2009/04/08/how-can-i-check-the-size-of-my-event-log-and-then-backup-and-archive-it-if-it-is-more-than-half-full.aspx

Param($logName = "security",$backupFolder = "C:\backupLogs")

Function Get-EventLog([string]$logName)
{
 $log = Get-WmiObject -Class Win32_NTEventLogFile -filter "LogFileName = '$logName'"
 If($log.FileSize / $log.MaxFileSize -ge .9)
  {
   "Log is at least 90% full. Backing up now."
   Backup-EventLog($log)
  } #end if
 Else 
 { 
   "Not backed up: $logName is only " + ($log.FileSize / $log.MaxFileSize).tostring("N2") +  " percent full" 
 } #end else
} #end Get-EventLog

Function Backup-EventLog($log)
{
 $folder = Join-Path -Path $BackUpFolder -ChildPath (Get-Date).ToString("MMddyy_hhmm")
 If(-not(Test-Path $folder)) 
   { 
     New-Item -path $folder -itemtype Directory -force | out-Null
   }
  $rtn = $log.BackupEventLog("$folder\$logName.evt").ReturnValue
  If($rtn -eq 0)
    {
     $log.ClearEventLog() | out-null
    } #end if
 ELSE 
   {
    "$logName could not be cleared. Backup ended with $($rtn)" 
  }
} #end Backup-EventLog

# *** ENTRY POINT ***
Get-EventLog -logname $logname

6
Windows Olay günlüklerinin bellek eşlemeli dosyalar olduğunu ve tüm günlüğün belleğe yüklendiğini hatırlayan herkes için bu sınırlama, Windows Vista / Server 2008'de tanıtılan yeni olay günlüğü altyapısı tarafından ortadan kaldırılmıştır . Ancak, yine de Server 2003 kullanıyorsanız , bu işletim sisteminde hiçbir işlemin toplamda 1 GB'den fazla bellek eşlemeli dosyaya sahip olamayacağı için 1 GB'ı aşan günlükler oluşturamazsınız.
Reinstate Monica diyorum

Daha sonra dosyayı klasörlere bölebilirsiniz. Bunu yapmak için bir PHP betiği yazabilirsiniz. Ve yarım yıl kadar sürmesine izin verin. Bu, verileri düzenlemenize yardımcı olur. Tek bir klasördeki devasa dosyalardan verilere erişmenizi sağlayan, böylece ihtiyacınız olan verileri hızlı bir şekilde görüntülemenize yardımcı olan çok temel bir PHP sayfasına sahip bir dahili sunucunun olmasına izin verebilirsiniz. Veya bunu yapmak için basit bir program yapabilirsiniz. VB.net veya C # bunun için iyi adaylardır.
Ismael Miguel

3

Diğer cevap, bunun ardındaki mantığı kapsıyor - modern sistemler için, çoğunlukla olay görüntüleyici GUI'sinde yükleme sürelerini biraz katlanılabilir. Geçerli günlüğün yedeklenen bir konuma kopyalanması, ardından silinmesi de iyidir.

Yine de oluşturulan büyük günlük dosyalarını ayrıştırmak için iki iyi seçenek oluşur:

1) Günlüğü geçerli GUI'nin yönetebileceğinden daha hızlı ayrıştırın veya 2) Günlüğü ayrı dosyalara bölün.

Eminim orada 2 için kolayca kullanılabilir bazı araçlar vardır), bu yüzden 1) odaklanacağım.

İlk olarak, Powershell 'get-winevent' adı verilen bu işlevsellik için mükemmel bir cmdlet'e sahiptir. Gördüğüm en hızlı performans karma tabloları kullanmayı içeriyor. Güvenlik günlüğündeki belirli bir kullanıcıya ait tüm olayları son günden alan bir örnek:

$timeframe = (get-date) - (new-timespan -day 1)
$userevt = Get-WinEvent -ComputerName <specify> -FilterHashTable @{LogName='Security'; Data='<enter username here>'; StartTime=$timeframe}

$ userevt artık bir etkinlik topluluğudur. Eşleşme sayısına bağlı olarak, az sayıda etkinliği kolayca okumak için biçim listesine aktarabilirsiniz. Orta bir sayı için, aynısını yapın ancak çıktıyı bir dosyaya yönlendirin:

$userevt | format-list > <outputfile>.txt

Büyük bir sayı için filtrelemeye başlayın (arayan kişinin yukarıda elde ettiğimiz kullanıcıdaki bir kilitleme etkinliği için olmasını istediğinizi varsayalım):

$userevt | %{if ($_.message -match "Caller Computer .*") {$matches[0]}}

Bu, her kilitleme olayı için tek satırlık bir sonuç gösterir. Yukarıdaki işlemler, 2008 R2'de 4 GB'lik bir oturum için genellikle 1-4 dakika sürer.

İkincisi, özellikle yönetmek zorunda kalabileceğiniz herhangi bir 2003 makinesi için, olay görüntüleyicide sol bölmedeki belirli bir günlük dosyasına sağ tıklayıp 'günlük dosyasını farklı kaydet'i seçebilirsiniz.

Yerel makinede olay görüntüleyici çalıştırıyorsanız, get-winevent tarafından ayrıştırılabilen bir .evt dosyasını kaydedebilirsiniz.

Alternatif olarak, grep veya findstr gibi uygun komut satırı yardımcı programları veya notepad ++ gibi belirli programlar tarafından ayrıştırılabilen bir metin veya CSV dosyasını (CSV'yi daha kolay bulurum) kaydedebilirsiniz.


1

Gerçek dünya örneği: Bu durum, bir uyumluluk gereksinimi başına 6 ay saklanabilmesi için Güvenlik günlüklerinin 12 GB boyutuna yükseltilmesiyle gerçekleşti.

3 aya kadar 2008r2 ve 2012r2 sunucularına giriş yapamadık. Oturum açma "Hoş Geldiniz" ekranında sıkışır. Açılan büyük dosyaları barındırmak için sunucu belleğini 20 gb'a çıkarmayı denedik ve sunucu hala kızgındı. Motorun 1 GB'lık yönetim önerisini izlemeye karar verdik ve üzerine tam yazıldığında eski dosyayı arşivleyecek şekilde ayarladık.

İhtiyacımız olursa 180 günden eski eski dosyaları temizlemek için bu komut dosyasına sahibiz, ancak büyük olasılıkla dosyaları yerinde tutabiliriz.

get-childitem -Path "C:\Windows\System32\winevt\Logs" |
  where-object {$_.LastWriteTime -lt (get-date).AddDays(-180)} |
  remove-item –whatif

https://www.manageengine.com/products/active-directory-audit/help/getting-started/event-log-size-retention-settings.html

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.