Aféierung
Mat enger zimlech grousser a verdeeler Infrastruktur déi DFS als eenzegen Zougangspunkt op Daten an DFSR fir Datereplikatioun tëscht Datenzenteren a Brancheserver benotzt, stellt d'Fro op d'Iwwerwaachung vum Status vun dëser Replikatioun.
Zoufälleg, bal direkt nodeems mir ugefaang hunn DFSR ze benotzen, hu mir ugefaang Zabbix ëmzesetzen mam Zil den existente Zoo vu verschiddenen Tools z'ersetzen an d'Infrastruktur Iwwerwaachung op eng méi informativ, komplett a logesch Form ze bréngen. Mir schwätzen iwwer d'Benotzung vun Zabbix fir DFS Replikatioun ze iwwerwaachen.
Als éischt musse mir entscheeden wéi eng Donnéeën iwwer DFS Replikatioun musse kritt ginn fir säi Status ze iwwerwaachen. Déi relevantst Indikator ass Réckstand. Et enthält Dateien déi net mat anere Membere vun der Replikatiounsgrupp synchroniséiert goufen. Dir kënnt seng Gréisst mat dem Utility kucken dfsrdiag, installéiert mat der DFSR Roll. An engem normale Replikatiounszoustand sollt d'Backloggréisst Null ukommen. Deementspriechend weisen eng grouss Zuel vu Dateien am Réckbléck Problemer mat der Replikatioun.
Elo iwwer déi praktesch Säit vum Thema.
Fir d'Gréisst vum Réckstand duerch Zabbix Agent ze iwwerwaachen, brauche mir:
- Skript dat den Ausgang parséiert dfsrdiag fir endgülteg Réckstandsgréisst Wäerter un Zabbix ze liwweren,
- E Skript dat wäert bestëmmen wéivill Replikatiounsgruppen et um Server sinn, wéi eng Ordner se replizéieren a wéi eng aner Serveren dra sinn (mir wëllen dat alles net an Zabbix mat der Hand fir all Server aginn, richteg?),
- Dës Scripten als UserParameter an d'Zabbix Agent Konfiguratioun bäizefügen fir spéider vum Iwwerwaachungsserver ze ruffen,
- Start den Zabbix Agent Service als Benotzer deen d'Rechter huet fir de Réckstand ze liesen,
- Eng Schabloun fir Zabbix, an där d'Detektioun vu Gruppen, d'Veraarbechtung vun den empfangenen Donnéeën an d'Emissioun vun Alarmer op hinnen konfiguréiert gëtt.
Skript Parser
Fir de Parser ze schreiwen, hunn ech VBS als déi universellst Sprooch gewielt, déi an all Versioune vu Windows Server präsent ass. D'Logik vum Skript ass einfach: et kritt den Numm vun der Replikatiounsgrupp, de replizéierten Dossier, an d'Nimm vun de Sender an Empfangsserver iwwer d'Kommandozeil. Dës Parameteren ginn dann un dfsrdiag, an ofhängeg vu senger Ausgab produzéiert et:
Unzuel vun Dateien - wann e Message iwwer d'Präsenz vu Dateien am Réckstand kritt gëtt,
0 - wann e Message iwwer d'Feele vu Dateien am Réckbléck kritt gëtt ("No Backlog"),
-1 - wann e Feeler Message kritt dfsrdiag wann Dir eng Ufro ausféiert ("[ERROR]").
get-Backlog.vbs
strReplicationGroup=WScript.Arguments.Item(0)
strReplicatedFolder=WScript.Arguments.Item(1)
strSending=WScript.Arguments.Item(2)
strReceiving=WScript.Arguments.Item(3)
Set WshShell = CreateObject ("Wscript.shell")
Set objExec = WSHshell.Exec("dfsrdiag.exe Backlog /RGName:""" & strReplicationGroup & """ /RFName:""" & strReplicatedFolder & """ /SendingMember:" & strSending & " /ReceivingMember:" & strReceiving)
strResult = ""
Do While Not objExec.StdOut.AtEndOfStream
strResult = strResult & objExec.StdOut.ReadLine() & "\"
Loop
If InStr(strResult, "No Backlog") > 0 then
intBackLog = 0
ElseIf InStr(strResult, "[ERROR]") > 0 Then
intBackLog = -1
Else
arrLines = Split(strResult, "\")
arrResult = Split(arrLines(1), ":")
intBackLog = arrResult(1)
End If
WScript.echo intBackLog
Entdeckung Schrëft
Fir datt Zabbix all d'Replikatiounsgruppen um Server feststellt an all d'Parameteren erausfannen, déi fir d'Ufro erfuerderlech sinn (Dossiernumm, Nimm vun de Nopeschserveren), musse mir éischtens dës Informatioun kréien, an zweetens presentéieren se. an engem Format verständlech fir Zabbix. De Format dat den Entdeckungsinstrument versteet gesäit esou aus:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Deen einfachste Wee fir d'Informatioun ze kréien, déi mir interesséiert sinn, ass duerch WMI, an zitt se aus de entspriechende Sektiounen vun DfsrReplicationGroupConfig. Als Resultat gouf e Skript gebuer, deen eng Ufro un WMI generéiert an eng Lëscht vu Gruppen, hir Classeure a Serveren am erfuerderleche Format erausgëtt.
DFSRDiscovery.vbs
dim strComputer, strLine, n, k, i
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
strComputer = wshNetwork.ComputerName
Set oWMIService = GetObject("winmgmts:\" & strComputer & "rootMicrosoftDFS")
Set colRGroups = oWMIService.ExecQuery("SELECT * FROM DfsrReplicationGroupConfig")
wscript.echo "{"
wscript.echo " ""data"":["
n=0
k=0
i=0
For Each oGroup in colRGroups
n=n+1
Set colRGFolders = oWMIService.ExecQuery("SELECT * FROM DfsrReplicatedFolderConfig WHERE ReplicationGroupGUID='" & oGroup.ReplicationGroupGUID & "'")
For Each oFolder in colRGFolders
k=k+1
Set colRGConnections = oWMIService.ExecQuery("SELECT * FROM DfsrConnectionConfig WHERE ReplicationGroupGUID='" & oGroup.ReplicationGroupGUID & "'")
For Each oConnection in colRGConnections
i=i+1
binInbound = oConnection.Inbound
strPartner = oConnection.PartnerName
strRGName = oGroup.ReplicationGroupName
strRFName = oFolder.ReplicatedFolderName
If oConnection.Enabled = True and binInbound = False Then
strSendingComputer = strComputer
strReceivingComputer = strPartner
strLine1=" {"
strLine2=" ""{#GROUP}"":""" & strRGName & ""","
strLine3=" ""{#FOLDER}"":""" & strRFName & ""","
strLine4=" ""{#SENDING}"":""" & strSendingComputer & ""","
if (n < colRGroups.Count) or (k < colRGFolders.count) or (i < colRGConnections.Count) then
strLine5=" ""{#RECEIVING}"":""" & strReceivingComputer & """},"
else
strLine5=" ""{#RECEIVING}"":""" & strReceivingComputer & """}]}"
end if
wscript.echo strLine1
wscript.echo strLine2
wscript.echo strLine3
wscript.echo strLine4
wscript.echo strLine5
End If
Next
Next
Next
Ech averstanen, d'Skript kann net mat Eleganz vum Code blénken an e puer Saachen dran kéinte sécherlech vereinfacht ginn, awer et mécht seng Haaptfunktioun - Informatioun iwwer d'Parameter vun de Replikatiounsgruppen an engem Format verständlech vum Zabbix.
Füügt Scripten un d'Zabbix Agent Konfiguratioun
Alles hei ass extrem einfach. Füügt déi folgend Zeilen un d'Enn vun der Agent Konfiguratiounsdatei:
UserParameter=check_dfsr[*],cscript /nologo "C:Program FilesZabbix Agentget-Backlog.vbs" $1 $2 $3 $4
UserParameter=discovery_dfsr[*],cscript /nologo "C:Program FilesZabbix AgentDFSRDiscovery.vbs"
Natierlech passen mir d'Weeër un déi wou mir Skripte hunn. Ech setzen se am selwechten Dossier wou den Agent installéiert ass.
Nodeems Dir Ännerungen gemaach hutt, start den Zabbix Agent Service nei.
Ännert de Benotzer ënner deem den Zabbix Agent Service leeft
Fir Informatiounen ze kréien duerch dfsrdiag, d'Utility muss ënner engem Kont lafen, deen administrativ Rechter huet fir Membere vun der Replikatiounsgrupp ze schécken an ze kréien. Den Zabbix Agent Service, deen als Standard ënner dem Systemkonto leeft, kann esou eng Ufro net ausféieren. Ech hunn e separaten Kont am Domain erstallt, hunn et administrativ Rechter op déi néideg Serveren ginn, an de Service konfiguréiert fir op dës Serveren ze lafen.
Dir kënnt en anere Wee goen: well dfsrdiag, Tatsächlech, Wierker duerch déi selwecht WMI, da kënnt Dir benotzen
Iwwerwachung Schabloun
Baséierend op den Donnéeën déi ech krut hunn ech eng Schabloun erstallt déi:
- Leeft automatesch Entdeckung vu Replikatiounsgruppen eemol pro Stonn,
- Kontrolléiert d'Backloggréisst fir all Grupp eemol all 5 Minutten,
- Enthält en Ausléiser deen eng Alarm erausgëtt wann d'Backloggréisst fir all Grupp méi wéi 100 fir 30 Minutten ass. Den Ausléiser gëtt als Prototyp beschriwwen, deen automatesch un detektéierte Gruppen bäigefüügt gëtt,
- Baut Réckbléckgréisst Grafike fir all Replikatiounsgrupp.
Dir kënnt d'Schabloun fir Zabbix 2.2 eroflueden
D 'Resultat
Nodeems Dir d'Schabloun an Zabbix importéiert an e Kont mat den néidege Rechter erstallt hutt, brauche mir nëmmen d'Skripten op d'Dateiserver ze kopéieren, déi mir fir DFSR iwwerwaache wëllen, zwee Zeilen an d'Agentkonfiguratioun op hinnen addéieren an den Zabbix Agent Service nei starten , astellen et als de gewënschte Kont ze lafen. Keng aner manuell Astellunge si fir DFSR Iwwerwaachung erfuerderlech.
Source: will.com