ACS: list connected forwarders (VBScript)

Klientská část (agent) systému Operations Manager se skládá ze dvou neoddělitelných komponent, agent + acs forwarder. Druhá komponenta není ve výchozím stavu po instalaci agenta aktivována, tento krok musí zařídit správce systému.

Data jsou odesílána na server (role ACS Collector), který si zároveň řídí agenty – to například znamená, pokud nestíhá kolektor zpracovávat přijímaná data, dočasně začne pozastavovat příjem od některých agentů. Jakmile nápor pomine, agenty opět připojí a data postupně přijme a zpracuje. Agenty lze seskupit a pro jednotlivé skupiny stanovit různé priority, čímž zajistíme „přednostní“ zpracování záznamů třeba ze skupiny Domain Controllers (servery z této skupiny budou odpojeny ve výjimečných případech, jako poslední).

SCOM samotný informuje pouze o funkci (zdraví) forwarderu, nikoliv o aktivním připojení. K tomu musíme použít nástroj příkazové řádky AdtAdmin s parametrem /Stats. Výstup můžeme přesměrovat do souboru (stats.csv) a přehledně zobrazit v tabulce (MS Excel). Soubor nám vedle statistik pro jednotlivé servery také poskytuje informaci o aktivním připojení agenta (spojení forwarder – collector).

Následující skript VBS a příkazovou dávku CMD můžeme na management serveru ACS kolektoru použít jako Task nebo volat nezávisle, bez konzoly Operations Manager.
CMD

@echo off
echo.
echo WRITING ACTUAL STATUS (TXT FILE)
c:\windows\system32\security\adtserver\adtadmin -stats > Actual_Status.txt
cscript PARSER_STATS.VBS
echo.
echo CONNECTED FORWARDERS ARE:
type Connected_Forwarders.txt
echo -----------------------------------------------------
echo DISCONNECTED FORWARDERS ARE:
type disConnected_Forwarders.txt
echo -----------------------------------------------------

VBS – skript přehledně (lidsky čitelně) vypíše statistiku pro jednotlivé servery a nakonec dva seznamy podle stavu Připojen / Nepřipojen

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTxtFR = objFSO.OpenTextFile("Actual_Status.TXT", ForReading)
Set objTxtFW = objFSO.OpenTextFile("Connected_forwarders.TXT", ForWriting, True)
Set objTxtFWnot = objFSO.OpenTextFile("disConnected_forwarders.TXT", ForWriting, True)
'
' first line is Header
arrRecord = objTxtFR.Readline

i=1
Do While objTxtFR.AtEndOfStream <> True
arrRecord = split(objTxtFR.Readline, ",",-1)
wscript.echo " "
wscript.echo "Value: " & arrRecord(0)
wscript.echo "SID: " & arrRecord(1)
wscript.echo "Name: " & arrRecord(2)
wscript.echo "GrupID: " & arrRecord(3)
wscript.echo "Version: " & arrRecord(4)
wscript.echo "Connected: " & arrRecord(5)
wscript.echo "Total Transmitted Events: " & arrRecord(6)
wscript.echo "Total Size of Transmitted Events: " & arrRecord(7)
wscript.echo "Recv Packet Count: " & arrRecord(8)
wscript.echo "Recv Packet Size: " & arrRecord(9)
wscript.echo "Seconds Since Connection: " & arrRecord(10)
wscript.echo "Average Event Rate: " & arrRecord(11)
wscript.echo "Current Event Rate: " & arrRecord(12)
wscript.echo "Average time to collector(in ms): " & arrRecord(13)
wscript.echo "Connect Time: " & arrRecord(14)
wscript.echo "Last Action: " & arrRecord(15)
wscript.echo "Disconnect Time: " & arrRecord(16)
wscript.echo "---------------------------------------------------- " & i
If arrRecord(5) > 0 Then
objTxtFW.WriteLine(arrRecord(2))
Else
objTxtFWnot.WriteLine(arrRecord(2))
End If
i = i + 1
Loop

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *