Ý nghĩa của việc vượt quá 4 GB trong Nhật ký sự kiện Windows là gì?


12

Tôi đã tìm thấy Microsoft KB này bao gồm tối đa cài đặt Nhật ký sự kiện được đề xuất cho các hệ điều hành lên tới Windows 2008 / Vista , khuyến nghị tối đa 4GB và đã thấy một số tài liệu tham khảo mơ hồ khác rằng Nhật ký sự kiện lớn hơn 4 GB không được khuyến nghị 2008 R2, nhưng tôi tự hỏi điều gì thực sự xảy ra nếu một bản ghi sự kiện vượt quá kích thước này?

Tôi đã vượt quá điều này trên máy chủ thử nghiệm (2012 R2) và không nhận thấy bất cứ điều gì như sử dụng bộ nhớ cao, v.v. Chúng tôi không quan tâm đến các hệ điều hành trước 2008 R2, nhưng muốn có một bản ghi lớn vì chúng tôi đang thu thập các sự kiện từ nhiều máy thông qua Windows Event Forwarding và muốn có tất cả các sự kiện ở một nơi.


3
Khi câu hỏi của bạn khiến tôi tò mò và hôm nay ông chủ của tôi đã làm tôi bực mình, tôi sẽ để sự kiện đăng nhập vào một trong những máy chủ của chúng tôi vượt quá tầm kiểm soát tối nay và đăng lại kết quả vào câu trả lời hiện có của tôi, nhưng như tôi nói, 4 GB không phải là Đó là một giới hạn cứng trong các HĐH 64 bit và kinh nghiệm của tôi là các ứng dụng và API 32 bit thường xử lý các tệp> 4 GB.
HoplessN00b

À, có vẻ như có thể lâu hơn một chút để tạo tệp nhật ký sự kiện> 4 GB. Bộ điều khiển miền bận rộn nhất của chúng tôi đã xóa nhật ký của nó 20 phút trước.
HoplessN00b

Câu trả lời:


9

Khác với hiệu suất khủng khiếp và thời gian chờ đợi vô lý khi bạn phải tải nhật ký 4 GB và sẽ thật tệ nếu bạn phải tìm kiếm thông qua một thứ quái dị như vậy, không nhiều. Tôi nghĩ rằng cái lớn nhất tôi từng thấy trong môi trường của mình là 10 GB và mặc dù tôi đã từ bỏ chờ đợi để tải, nhưng nó dường như không gây hại gì.

Sự thận trọng 4GB cho Server 2008 là do giới hạn 32 bit thường gặp ở mức 4 GB. Trên hệ thống 64 bit, bạn sẽ ổn khi để nó tăng lên tới 16 TB (hoặc 64, tùy theo), mặc dù tôi không biết rằng bất kỳ ai cũng có thể đạt được giới hạn kiểm tra đó.

Tất nhiên, nếu bạn chưa có, bạn sẽ phát hiện ra rằng các tệp nhật ký rất lớn chỉ đơn giản là không thực tế để sử dụng - lần cuối cùng tôi thử tải tệp nhật ký 100 GB (văn bản) đơn giản, thậm chí không thể mở được mà không có làm hỏng ứng dụng khi mở ứng dụng và tôi nghi ngờ bạn sẽ xử lý vấn đề đó tốt trước 100 GB.

Cách tiếp cận tốt hơn nhiều là giới hạn kích thước tệp ở mức hợp lý và thỉnh thoảng sử dụng tập lệnh để xóa nó. Tôi sử dụng bên dưới trong môi trường của mình, kết hợp với giới hạn kích thước 1 GB trên nhật ký bảo mật của chúng tôi. Một số (tốt, hầu hết) các máy chủ của chúng tôi tạo ra hơn 3 GB sự kiện bảo mật mỗi ngày và chúng tôi không muốn lãng phí tất cả dung lượng đó trên các tệp nhật ký lớn mà tôi sẽ thoát trước khi duyệt qua, vì vậy tập lệnh của tôi sao chép nội dung nhật ký vào một thư mục khác và sau đó xóa nhật ký sự kiện sẽ được ghi lại. Và vì thư mục tôi sao chép chúng vào được sao lưu, chúng tôi luôn có thể quay lại nhật ký trong sự kiện khủng khiếp mà chúng tôi cần.

#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
Đối với bất kỳ ai nhớ rằng Nhật ký sự kiện Windows là các tệp được ánh xạ bộ nhớ và toàn bộ nhật ký đã được tải vào bộ nhớ, giới hạn đó đã được loại bỏ bởi cơ sở hạ tầng ghi nhật ký sự kiện mới được giới thiệu trong Windows Vista / Server 2008. Tuy nhiên, nếu bạn vẫn đang sử dụng Server 2003 , bạn không thể tạo nhật ký có kích thước vượt quá 1GB vì trong hệ điều hành đó, không có quá trình nào có thể có tổng số hơn 1 GB tệp ánh xạ bộ nhớ.
Tôi nói Phục hồi Monica

Bạn có thể chia tập tin thành các thư mục sau đó. Bạn có thể viết một đoạn script PHP để làm như vậy. Và để nó chạy trong nửa năm hoặc lâu hơn. Điều đó sẽ giúp bạn tổ chức dữ liệu. Bạn có thể cho phép một máy chủ nội bộ có trang PHP rất cơ bản cho phép bạn truy cập dữ liệu từ các tệp khổng lồ trong các thư mục riêng lẻ, do đó giúp bạn xem nhanh dữ liệu bạn cần. Hoặc bạn có thể làm một chương trình đơn giản để làm điều đó. VB.net hoặc C # là những ứng cử viên tốt cho điều đó.
Ismael Miguel

2

Câu trả lời khác bao gồm lý do đằng sau điều này - đối với các hệ thống hiện đại, chủ yếu là giữ thời gian tải trong GUI trình xem sự kiện có thể chịu được. Sao chép nhật ký hiện tại vào một vị trí được sao lưu, sau đó xóa nó, cũng tốt.

Để phân tích cú pháp các tệp nhật ký lớn cuối cùng vẫn được tạo, có hai tùy chọn tốt xảy ra:

1) Phân tích nhật ký nhanh hơn GUI hiện tại có thể quản lý hoặc 2) Chia nhật ký thành các tệp riêng biệt.

Tôi chắc chắn có một số tiện ích có sẵn dễ dàng cho 2), vì vậy tôi sẽ tập trung vào 1).

Đầu tiên, Powershell có một lệnh ghép ngắn tuyệt vời cho chức năng này được gọi là 'get-winevent'. Hiệu suất nhanh nhất tôi thấy liên quan đến việc sử dụng bảng băm. Dưới đây là một ví dụ nhận được tất cả các sự kiện trong nhật ký bảo mật liên quan đến một người dùng cụ thể từ ngày cuối cùng:

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

$ userevt hiện là một tập hợp các sự kiện. Tùy thuộc vào số lượng trận đấu, bạn có thể chuyển nó qua danh sách định dạng để dễ dàng đọc một số lượng nhỏ sự kiện. Đối với một số trung bình, làm tương tự nhưng chuyển hướng đầu ra thành một tệp:

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

Đối với một số lượng lớn, hãy bắt đầu lọc (giả sử bạn muốn máy tính của người gọi cho một sự kiện khóa trên người dùng mà chúng tôi có được ở trên):

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

Điều này sẽ hiển thị kết quả một dòng cho mỗi sự kiện khóa. Các quy trình trên thường mất 1-4 phút cho nhật ký 4GB trên 2008 R2.

Thứ hai, đặc biệt đối với bất kỳ máy 2003 nào bạn có thể phải quản lý, bạn có thể nhấp chuột phải vào một tệp nhật ký cụ thể trong khung bên trái trong trình xem sự kiện và chọn 'lưu tệp nhật ký dưới dạng'.

Nếu bạn đang chạy trình xem sự kiện trên máy cục bộ, bạn có thể lưu tệp .evt có thể được phân tích cú pháp bằng get-winevent.

Ngoài ra, bạn có thể lưu tệp văn bản hoặc tệp CSV (tôi thấy CSV dễ dàng hơn) có thể được phân tích cú pháp bởi các tiện ích dòng lệnh thích hợp như grep hoặc findstr hoặc một số chương trình nhất định như notepad ++.


0

Ví dụ trong thế giới thực: Chúng tôi đã xảy ra điều này với nhật ký bảo mật được tăng lên kích thước 12GB để cho phép duy trì 6 tháng cho mỗi yêu cầu tuân thủ.

Đến tháng thứ 3, chúng tôi không thể đăng nhập vào máy chủ 2008r2 và 2012r2. Đăng nhập sẽ bị kẹt ở màn hình "Chào mừng". Chúng tôi đã thử tăng bộ nhớ máy chủ lên 20gb để chứa các tệp lớn đang được mở và máy chủ vẫn còn tức giận. Cuối cùng, chúng tôi quyết định làm theo khuyến nghị 1GB của công cụ quản lý và điều chỉnh nó để lưu trữ tệp cũ khi đầy đủ so với ghi đè.

Chúng tôi có tập lệnh này để dọn sạch các tệp cũ hơn 180 ngày nếu chúng tôi cần nhưng chúng tôi có thể chỉ giữ các tệp đúng vị trí.

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-sinstall.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.