विंडोज इवेंट लॉग में 4 जीबी से अधिक होने के क्या निहितार्थ हैं?


13

मुझे यह Microsoft KB मिला जो Windows 2008 / Vista तक के ऑपरेटिंग सिस्टम के लिए अनुशंसित इवेंट लॉग सेटिंग मैक्सिमम को कवर करता है , जो अधिकतम 4GB की सिफारिश करता है, और कुछ अन्य अस्पष्ट संदर्भों को देखा है कि कम से कम 4 जीबी से बड़ा इवेंट लॉग अनुशंसित नहीं है 2008 R2, लेकिन मैं सोच रहा हूं कि क्या वास्तव में एक घटना लॉग इस आकार से अधिक है?

मैंने एक परीक्षण सर्वर (2012 R2) पर इसे पार कर लिया है और उच्च मेमोरी उपयोग आदि जैसी किसी भी चीज़ पर ध्यान नहीं दिया है। हम 2008 R2 से पहले ओएस के बारे में परवाह नहीं करते हैं, लेकिन एक बड़ा लॉग चाहते हैं क्योंकि हम कई मशीनों से घटनाओं को इकट्ठा कर रहे हैं विंडोज इवेंट फ़ॉरवर्डिंग और सभी घटनाओं को एक स्थान पर रखना चाहते हैं।


3
जैसा कि आपके सवाल ने मुझे परेशान किया है, और मेरे बॉस ने आज मुझे नाराज कर दिया है, मैं आज रात हमारे इवेंट के एक सर्वर को नियंत्रण से बाहर होने दूंगा, और अपने मौजूदा उत्तर में परिणाम वापस पोस्ट करूंगा, लेकिन जैसा कि मैं कहता हूं, 4 जीबी isn 64 बिट OS में एक कठिन सीमा नहीं है, और मेरा अनुभव है कि 32 बिट ऐप्स और API आमतौर पर फ़ाइलों को संभालते हैं> 4 जीबी।
होपलेसनब

आह, ऐसा लगता है कि यह> 4 जीबी इवेंट लॉग फ़ाइल उत्पन्न करने के लिए थोड़ा लंबा हो सकता है। हमारे सबसे व्यस्त डोमेन नियंत्रक ने 20 मिनट पहले अपना लॉग साफ़ किया।
होपलेसनब

जवाबों:


10

भयानक प्रदर्शन और हास्यास्पद प्रतीक्षा समय के अलावा जब आपको 4 जीबी लॉग लोड करना पड़ता है और नरक यह होगा यदि आपको कभी भी ऐसी राक्षसी चीज के माध्यम से खोजना होगा, तो बहुत अधिक नहीं। मुझे लगता है कि मैंने अपने वातावरण में जो सबसे बड़ा देखा है वह 10 जीबी था, और हालांकि मैंने इसे लोड करने के लिए इंतजार करना छोड़ दिया, लेकिन यह कुछ भी नुकसान नहीं पहुंचा।

सर्वर 2008 के लिए 4 जीबी सावधानी उस 32-बिट सीमा के कारण है जो अक्सर 4 जीबी पर सामना करना पड़ता है। 64 बिट सिस्टम पर, आपको इसे 16 टीबी (या 64, निर्भर) तक बढ़ने देने के लिए ठीक होना चाहिए, हालांकि मुझे नहीं पता है कि किसी को भी उस सीमा का परीक्षण करने के करीब कहीं भी मिल गया है।

बेशक, यदि आप पहले से ही नहीं हैं, तो आपको पता चलेगा कि बहुत बड़ी लॉग फाइलें केवल उपयोग करने के लिए अव्यावहारिक हैं - पिछली बार जब मैंने एक सरल 100 जीबी (टेक्स्ट) लॉग फाइल को लोड करने की कोशिश की थी, तो इसे बिना खोले भी नहीं खोला जा सकता था। इसे खोलने वाले एप्लिकेशन को क्रैश कर रहा है, और मुझे संदेह है कि आप 100 जीबी से पहले उस मुद्दे को अच्छी तरह से मारेंगे।

फ़ाइल आकार को कुछ उचित तक सीमित करने के लिए सबसे बेहतर तरीका है, और समय-समय पर इसे खाली करने के लिए स्क्रिप्ट का उपयोग करना। मैं अपने वातावरण में नीचे का उपयोग करता हूं, हमारे सुरक्षा लॉग पर 1 जीबी आकार की सीमा के साथ संयुक्त। हमारे सर्वरों में से कुछ (अच्छी तरह से, अधिकांश) प्रति दिन 3 जीबी से अधिक सुरक्षा घटनाओं को उत्पन्न करते हैं, और हम उस सभी लॉग को खाली करने से पहले छोड़ दी जाने वाली विशाल लॉग फ़ाइलों पर उस स्थान को बर्बाद नहीं करना चाहते हैं, इसलिए मेरी स्क्रिप्ट लॉग सामग्री की प्रतिलिपि बनाती है एक अन्य फ़ोल्डर और फिर घटना लॉग को फिर से लिखे जाने के लिए साफ़ करता है। और चूंकि मैं जिस फ़ोल्डर को कॉपी करता हूं, उसका बैकअप लिया जाता है, हम हमेशा उस भयानक घटना में लॉग में वापस जा सकते हैं जिसकी हमें आवश्यकता है।

#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 ईवेंट लॉग मेमोरी-मैप की गई फ़ाइलें थीं और संपूर्ण लॉग को मेमोरी में लोड किया गया था, Windows Vista / Server 2008 में पेश किए गए नए ईवेंट लॉगिंग इन्फ्रास्ट्रक्चर द्वारा सीमा को समाप्त कर दिया गया था । हालांकि, यदि आप अभी भी सर्वर 2003 का उपयोग कर रहे हैं , आप लॉग नहीं बना सकते हैं जो आकार में 1 जीबी से अधिक है क्योंकि उस ओएस में कुल 1 जीबी से अधिक मेमोरी-मैप की गई कोई भी प्रक्रिया नहीं हो सकती है।
मैं कहता हूं कि मोनिका

आप फ़ाइल को बाद में फ़ोल्डर्स में विभाजित कर सकते हैं। ऐसा करने के लिए आप एक PHP स्क्रिप्ट लिख सकते हैं। और इसे आधे या एक साल तक चलने दें। इससे आपको डेटा व्यवस्थित करने में मदद मिलेगी। आप एक बहुत ही मूल PHP पृष्ठ के साथ एक आंतरिक सर्वर को दे सकते हैं जो आपको व्यक्तिगत फ़ोल्डरों में विशाल फाइलों से डेटा तक पहुंचने देता है, इस प्रकार आपको आवश्यक डेटा को जल्दी से देखने में मदद करता है। या आप ऐसा करने के लिए एक सरल कार्यक्रम बना सकते हैं। VB.net या C # इसके लिए अच्छे उम्मीदवार हैं।
इस्माइल मिगेल

3

अन्य उत्तर इसके पीछे तर्क को शामिल करते हैं - आधुनिक प्रणालियों के लिए, ज्यादातर घटना दर्शक जीयूआई के भीतर लोड समय को कुछ हद तक ध्यान में रखते हुए। वर्तमान लॉग को उस स्थान पर कॉपी करना जो बैकअप हो जाता है, फिर उसे साफ़ करना भी अच्छा है।

बड़े लॉग फ़ाइलों को पार्स करने के लिए जो किसी भी तरह से उत्पन्न होते हैं, दो अच्छे विकल्प होते हैं:

1) वर्तमान GUI की तुलना में लॉग को तेजी से पार्स कर सकते हैं या 2) लॉग को अलग-अलग फाइलों में विभाजित करें।

मुझे यकीन है कि वहाँ 2 के लिए कुछ आसानी से उपलब्ध उपयोगिताओं हैं), इसलिए मैं 1 पर ध्यान केंद्रित करूँगा)।

सबसे पहले, पॉवर्सशेल में इस कार्यक्षमता के लिए एक उत्कृष्ट cmdlet है जिसे 'गेट-वाइनवेंट' कहा जाता है। सबसे तेज प्रदर्शन जो मैंने देखा है उसमें हैश टेबलों का उपयोग करना शामिल है। यहां एक उदाहरण दिया गया है जो अंतिम दिन से एक विशिष्ट उपयोगकर्ता से संबंधित सुरक्षा लॉग में सभी घटनाओं को प्राप्त करता है:

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

$ userevt अब घटनाओं का एक संग्रह है। मैचों की संख्या के आधार पर, आप इसे आसानी से घटनाओं की एक छोटी संख्या को पढ़ने के लिए प्रारूप-सूची के माध्यम से पाइप कर सकते हैं। एक मध्यम संख्या के लिए, एक ही करें, लेकिन आउटपुट को फ़ाइल में पुनर्निर्देशित करें:

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

बड़ी संख्या के लिए, फ़िल्टर करना शुरू करें (आप जिस उपयोगकर्ता को हमने उपार्जित किया है, उसके लॉकआउट ईवेंट के लिए कॉलर कंप्यूटर चाहते हैं):

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

यह प्रत्येक लॉकआउट इवेंट के लिए एकल-पंक्ति परिणाम दिखाएगा। उपरोक्त प्रक्रियाएं आमतौर पर 2008 R2 पर 4GB लॉग के लिए 1-4 मिनट का समय लेती हैं।

दूसरे, विशेष रूप से 2003 की किसी भी मशीन के लिए जिसे आप प्रबंधित कर सकते हैं, आप इवेंट व्यूअर में बाएँ फलक में किसी विशेष लॉग फ़ाइल पर राइट-क्लिक कर सकते हैं, और 'लॉग फ़ाइल को सहेजें' चुनें।

यदि आप स्थानीय मशीन पर ईवेंट व्यूअर चला रहे हैं, तो आप एक .evt फ़ाइल को सेव कर सकते हैं, जिसे गेट-वाइनवेंट द्वारा पार्स किया जा सकता है।

वैकल्पिक रूप से, आप एक पाठ या CSV फ़ाइल (मुझे CSV आसान लगता है) को बचा सकते हैं जिसे उपयुक्त कमांड-लाइन उपयोगिताओं जैसे कि grep या findstr, या कुछ प्रोग्राम जैसे नोटपैड ++ द्वारा पार्स किया जा सकता है।


1

वास्तविक विश्व उदाहरण: हमने ऐसा किया था कि सुरक्षा लॉग को अनुपालन आवश्यकता के अनुसार 6 महीने की अवधारण की अनुमति देने के लिए 12GB आकार तक बढ़ा दिया गया था।

3 महीने तक हम 2008r2 और 2012r2 सर्वर के लिए लॉगऑन करने में असमर्थ थे। लॉगऑन "वेलकम" स्क्रीन पर अटक जाएगा। हमने बड़ी फ़ाइलों को खोलने के लिए सर्वर मेमोरी को 20 जीबी तक बढ़ाने की कोशिश की और सर्वर अभी भी नाराज था। हमने 1 जीबी की इंजन की सिफारिश का पालन करने और पूर्ण बनाम अधिलेखित होने पर पुरानी फ़ाइल को संग्रहीत करने के लिए इसे समायोजित करने का निर्णय लिया।

हमारे पास 180 दिनों से अधिक पुरानी पुरानी फाइलों को साफ करने के लिए यह स्क्रिप्ट है अगर हमें इसकी आवश्यकता है लेकिन हम संभवत: फाइलों को रख सकते हैं।

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.