本文件已封存並已停止維護。

附錄 A

更新日期: 2012年4月

ACS 調整大小範例

此附錄是針對假設的 ACS 安裝產生調整大小預估值的逐步解說範例。在此範例中,我們假設系統在未套用任何事件記錄檔篩選器的情況下收集到下列資訊:

Windows Server 網域控制站 (環境中二十個網域控制站的其中一個) 的安全性事件數目是利用「每秒產生的事件數」指令碼在 2 天內取樣的結果。伺服器平均會在特定 24 小時內產生 900,000 個事件。上午 7:30 到上午 10:00 這段時間 (150 分鐘) 為產生事件的尖峰時間,在此期間共記錄到 360,000 個事件。所有伺服器每秒共產生 800 個事件 ([20]*[360,000] / [150 分鐘] / [60 秒] = 800)。

支援記錄檔所需的磁碟數是將磁碟 RPM (假設為 15,000 RPM)、邏輯磁碟 I/O 及每秒發生之事件數等各個值,套用到下列方程式中來判斷:

1.384*800*60/15000=~5 drives *2 (for RAID 1)=10 drives

支援資料庫所需的磁碟數是將磁碟 RPM (假設為 15,000 RPM)、邏輯磁碟 I/O 及每秒發生之事件數等各個值,套用到下列方程式來判斷:

0.138*800*60/15000=~1 drive *2 (for RAID 1)=2 drives

由於磁碟陣列控制器所能支援的磁碟機數目上限為每個陣列 8 部磁碟機,因此您需要兩個收集器和兩個稽核資料庫。這 20 個 Windows Server 網域控制站將平均分配給這兩個收集器。

每個資料庫分配到的儲存容量是將收集到的事件平均大小 (0.4 KB)、每秒收集到的事件數目及資料的儲存時間等各個值,套用到下列方程式來進行估算:

900,000*20*0.4KB=6.87GB (每天收集到的資料量)

假設您想要儲存資料 14 天,則需要的儲存空間總量就是 96 GB,也就是每個稽核資料庫需要 48 GB 的儲存空間。

本節顯示的 Microsoft Visual Basic 指令碼 (「每秒產生的事件數」指令碼) 能計算並顯示電腦本機安全性記錄中每秒產生的安全性事件數。為了產生最正確的結果,您應該在記錄安全性事件的電腦本機執行此指令碼。不過,當您將目標電腦名稱當作引數時,也可以在遠端電腦上執行該指令碼。您可以指定 .csv 檔案形式的指令碼結果,藉此產生結果。若要停止指令碼,請按 CTRL+C。接著,您可以使用 Microsoft Excel 開啟 .csv 檔案,以便計算結果。

使用方法

CScript /nologo SecurityEventPerSecond.vbs >>NumOfEvtsGenPerSec.csv

CScript /nologo SecurityEventPerSecond.vbs <RemoteComputerName> >>NumOfEvtsGenPerSec.csv

範例

' ************************************************************* ' Copyright (c)2007-2008, Microsoft Corporation, All Rights Reserved ' ' SecurityEventPerSecond.vbs ' ' Written by: Joseph Chan (Microsoft Operations Manager Program Manager) ' '  This is a sample script that counts and displays the '  number of security events generated every second in the local '  security event log ' '  This script takes one parameter "Computer". You can specify a '  remote computer. If no computer name is specified then it will '  count events on the local computer. ' '  This script does not stop until you stop it manually (Ctrl+C) '  You should always run this script by using CScript.exe '  If you use WScript, you will need to '  use Task Manager to stop the WScript process ' ' *************************************************************

On Error Resume Next

Set objArgs = WScript.Arguments

If objArgs.Count >= 1 Then computer = objArgs(0) Else computer = "."End If

Dim currentTime currentTime = DateAdd("s", 0, Now)  'time = 0 seconds from now

Do While True WScript.Sleep(1000) GetEventCount computer, currentTime currentTime = DateAdd("s", 1, currentTime)  'time = 0 seconds from now Loop


Sub GetEventCount (strComputer, currentTime) On Error Resume Next Err.Clear

Dim objWMI, objItem, colLoggedEvents, nextSec, dateTimeCriteria, timeGeneratedField

count = 0

Set dateTimeCriteria = CreateObject("WbemScripting.SWbemDateTime") dateTimeCriteria.SetVarDate(currentTime) strCurrent = "'" & dateTimeCriteria.Value & "'"

Set nextSec = CreateObject("WbemScripting.SWbemDateTime") nextSec.SetVarDate(DateAdd("s", 1, currentTime)) strNext = "'" & nextSec.Value & "'"

Set timeGeneratedField = CreateObject("WbemScripting.SWbemDateTime")

Set objWMI = GetObject("winmgmts:"_ & "{impersonationLevel=impersonate,(Security)}!\\" _ & strComputer & "\root\cimv2")

If Err.Number >  0 then WScript.Echo "  Error: [" & Err.Number & "] " & Err.Description Exit Sub End If


Set colLoggedEvents = objWMI.ExecQuery _ ("Select * from Win32_NTLogEvent Where Logfile ='Security' AND TimeGenerated >= " & strCurrent & " AND TimeGenerated < " & strNext)

If Err.Number >  0 then WScript.Echo "  Error: [" & Err.Number & "] " & Err.Description Exit Sub End If

For Each objItem in colLoggedEvents 'timeGeneratedField.Value = objItem.TimeGenerated 'WScript.Echo "  " & timeGeneratedField.GetVarDate & ", " & objItem.EventCode & ", " & objItem.SourceName & ", " & objItem.User count = count +1 Next If Err.Number >  0 then WScript.Echo "  Error: [" & Err.Number & "] " & Err.Description Exit Sub End If

WScript.Echo currentTime & ", " & count End Sub
 
顯示: