Windowsイベントログで4 GBを超えるとどうなりますか?


12

最大4GBを推奨するWindows 2008 / Vistaまでのオペレーティングシステムの推奨イベントログ設定の最大値をカバーするこのMicrosoft KBを見つけました。 2008 R2、しかし、イベントログがこのサイズを超えた場合、実際に何が起こるのだろうか?

テストサーバー(2012 R2)でこれを超えており、メモリ使用量の増加などに気づいていません。2008R2より前のOSは気にしませんが、多くのマシンからイベントを収集しているため、 Windowsイベント転送。すべてのイベントを1か所にまとめたい。


3
あなたの質問が興味をそそり、上司が今日私を怒らせたので、私たちのサーバーの1つのイベントログを今夜制御できなくなり、結果を私の既存の答えに戻しますが、私が言うように、4 GBは64ビットOSの厳しい制限ではありません。私の経験では、32ビットのアプリやAPIでさえ、通常4 GBを超えるファイルを処理します。
HopelessN00b

ああ、4 GBを超えるイベントログファイルを生成するのに少し時間がかかるようです。最も忙しいドメインコントローラーは20分前にログをクリアしました。
HopelessN00b

回答:


9

4 GBのログをロードしなければならないときのひどいパフォーマンスとばかげた待機時間以外に、そのような怪しいものを検索する必要があったとしても、それほど多くはありません。私の環境で見た最大のものは10 GBで、ロードするのを待つのをあきらめましたが、何も害はないようでした。

Server 2008の4GBの警告は、4 GBで頻繁に発生する32ビットの制限によるものです。64ビットシステムでは、最大16 TB(または64に応じて)にまで拡張できますが、その制限をテストするところに誰かがいることはわかりません。

もちろん、まだお持ちでない場合は、非常に大きなログファイルを使用するのは非現実的であることがわかります。前回、単純な100 GB(テキスト)ログファイルを読み込もうとしても、それなしで開くことさえできませんでした。それを開いているアプリケーションをクラッシュさせると、100 GBのかなり前にその問題にぶつかります。

はるかに優れたアプローチは、ファイルサイズを適切なサイズに制限し、スクリプトを使用して時々クリアすることです。私の環境では、セキュリティログの1 GBのサイズ制限と組み合わせて、以下を使用しています。一部の(ほとんどの)サーバーは1日あたり3 GBを超えるセキュリティイベントを生成します。また、コームする前に終了する巨大なログファイルのすべてのスペースを無駄にしたくないため、スクリプトでログの内容をコピーします。別のフォルダに移動してから、再度書き込まれるイベントログをクリアします。また、コピー先のフォルダーはバックアップされているため、必要な恐ろしいイベントのログにいつでも戻ることができます。

#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で導入された新しいイベントログインフラストラクチャによってその制限が解消されました。そのOSではプロセスで合計で1 GBを超えるメモリマップファイルを持つことはできないため、サイズが1 GBを超えるログを作成することはできません。
私は言う1:15でモニカを

後でファイルをフォルダーに分割できます。そのためのPHPスクリプトを作成できます。そして、半年ほど実行します。これは、データを整理するのに役立ちます。内部サーバーに非常に基本的なPHPページを持たせて、個々のフォルダー内の巨大なファイルからデータにアクセスできるようにして、必要なデータをすばやく表示できるようにすることができます。または、それを行う簡単なプログラムを作成できます。VB.netまたはC#はそのための良い候補です。
イスマエルミゲル

2

もう1つの答えは、この背後にある理由をカバーしています。最新のシステムでは、ほとんどの場合、イベントビューアーGUI内でのロード時間はある程度耐えられます。バックアップする場所に現在のログをコピーしてからクリアすることも適切です。

とにかく生成される大きなログファイルを解析するには、2つの適切なオプションが発生します。

1)現在のGUIが管理できるよりも速くログを解析するか、2)ログを個別のファイルに分割します。

2)には簡単に利用できるユーティリティがあるはずなので、1)に焦点を当てます。

まず、Powershellには「get-winevent」と呼ばれるこの機能のための優れたコマンドレットがあります。私が見た中で最も速いパフォーマンスは、ハッシュテーブルの使用を伴います。以下は、最終日から特定のユーザーに関連するセキュリティログ内のすべてのイベントを取得する例です。

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

$ userevtはイベントのコレクションになりました。一致する数に応じて、それをformat-listにパイプ処理して、少数のイベントを簡単に読み取ることができます。中程度の数の場合、同じことを行いますが、出力をファイルにリダイレクトします。

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

多数の場合、フィルタリングを開始します(たとえば、上記で取得したユーザーのロックアウトイベントの呼び出し元コンピューターが必要です)。

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

これにより、ロックアウトイベントごとに単一行の結果が表示されます。上記のプロセスは、2008 R2で4 GBのログを記録するのに通常1〜4分かかります。

第二に、特に管理しなければならない2003マシンの場合、イベントビューアーの左ペインで特定のログファイルを右クリックし、[ログファイルの名前を付けて保存]を選択できます。

ローカルコンピューターでイベントビューアーを実行している場合は、get-wineventで解析できる.evtファイルを保存できます。

または、grepやfindstrなどの適切なコマンドラインユーティリティ、またはnotepad ++などの特定のプログラムで解析できるテキストファイルまたはCSVファイル(CSVの方が簡単です)を保存できます。


0

実際の例:コンプライアンス要件ごとに6か月の保存を許可するために、セキュリティログが12GBサイズに拡大されて、これが発生しました。

3か月目までに、サーバー2008r2および2012r2サーバーにログオンできませんでした。ログオンは「ようこそ」画面で止まってしまいます。開いている大きなファイルに対応するためにサーバーのメモリを20ギガバイトに増やしてみましたが、サーバーは依然として怒っていました。最終的に、1GBの管理エンジンの推奨事項に従うことを決定し、それを調整して、フルとオーバーライトのときに古いファイルをアーカイブします。

必要に応じて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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.