Inngangur
Með nokkuð stórum og dreifðum innviðum sem notar DFS sem einn aðgangsstað að gögnum og DFSR fyrir gagnaafritun milli gagnavera og útibúsþjóna, vaknar spurningin um að fylgjast með stöðu þessarar afritunar.
Fyrir tilviljun, næstum strax eftir að við byrjuðum að nota DFSR, byrjuðum við að innleiða Zabbix með það að markmiði að skipta um núverandi dýragarð af ýmsum tækjum og koma innviðaeftirliti á upplýsandi, fullkomnara og rökréttara form. Við munum tala um að nota Zabbix til að fylgjast með DFS afritun.
Fyrst af öllu þurfum við að ákveða hvaða gögn um DFS afritun þarf að fá til að fylgjast með stöðu þess. Mikilvægasta vísbendingin er backlog. Það inniheldur skrár sem hafa ekki verið samstilltar við aðra meðlimi afritunarhópsins. Þú getur skoðað stærð þess með því að nota tólið dfsrdiag, sett upp með DFSR hlutverkinu. Í venjulegu afritunarástandi ætti eftirstöðvarstærðin að nálgast núll. Í samræmi við það gefur mikill fjöldi skráa í bakdaga til kynna vandamál með afritun.
Til þess að fylgjast með stærð eftirstöðvanna í gegnum Zabbix Agent, þurfum við:
- Forskrift sem mun flokka úttakið dfsrdiag til að veita Zabbix lokastærðargildi,
- Forskrift sem mun ákvarða hversu margir afritunarhópar eru á þjóninum, hvaða möppur þeir endurtaka og hvaða aðrir netþjónar eru með í þeim (við viljum ekki slá allt þetta inn í Zabbix handvirkt fyrir hvern netþjón, ekki satt?),
- Að bæta þessum skriftum sem UserParameter við Zabbix umboðsmannstillingu fyrir síðari símtöl frá vöktunarþjóninum,
- Að hefja Zabbix umboðsmannaþjónustuna sem notandi sem hefur réttindi til að lesa eftirstöðvarnar,
- Sniðmát fyrir Zabbix, þar sem uppgötvun hópa, vinnsla móttekinna gagna og útgáfu viðvarana um þá verður stillt.
Forskriftarþjálfari
Til að skrifa þáttarann valdi ég VBS sem alhliða tungumálið sem er til staðar í öllum útgáfum af Windows Server. Rökfræði handritsins er einföld: það fær nafn afritunarhópsins, endurteknu möppu og nöfn sendandi og móttökuþjóna í gegnum skipanalínuna. Þessar breytur eru síðan sendar til dfsrdiag, og eftir framleiðslu þess framleiðir það:
Fjöldi skráa - ef skilaboð eru móttekin um tilvist skráa í bakskránni,
0 — ef skilaboð berast um að skrár séu ekki til í bakskránni („No Backlog“),
-1 - ef villuboð berast dfsrdiag þegar beiðni er framkvæmd ("[VILLA]").
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
Uppgötvunarhandrit
Til þess að Zabbix geti ákvarðað alla afritunarhópa sem eru til staðar á þjóninum og til að finna út allar færibreytur sem krafist er fyrir beiðnina (möppuheiti, nöfn nærliggjandi netþjóna), þurfum við í fyrsta lagi að afla þessara upplýsinga og í öðru lagi kynna þær á sniði sem Zabbix skilja. Snið sem uppgötvunartólið skilur lítur svona út:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}
Auðveldasta leiðin til að fá upplýsingarnar sem við höfum áhuga á er í gegnum WMI, draga þær út úr samsvarandi hlutum DfsrReplicationGroupConfig. Þess vegna fæddist handrit sem býr til beiðni til WMI og gefur út lista yfir hópa, möppur þeirra og netþjóna á tilskildu sniði.
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
Ég er sammála, handritið skín kannski ekki af glæsileika kóðans og sumt í því gæti vissulega verið einfaldað, en það sinnir aðalhlutverki sínu - að veita upplýsingar um breytur afritunarhópa á sniði sem Zabbix skilja.
Bætir forskriftum við Zabbix umboðsmannstillingu
Hér er allt ákaflega einfalt. Bættu eftirfarandi línum við lok umboðsstillingarskrárinnar:
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"
Að sjálfsögðu stillum við slóðirnar að þeim þar sem við erum með forskriftir. Ég setti þá í sömu möppu þar sem umboðsmaðurinn er settur upp.
Eftir að hafa gert breytingar skaltu endurræsa Zabbix umboðsþjónustuna.
Að breyta notandanum sem Zabbix Agent þjónustan keyrir undir
Til að fá upplýsingar í gegnum dfsrdiag, tólið verður að vera keyrt undir reikningi sem hefur stjórnunarréttindi fyrir bæði sendandi og móttökumeðlimi afritunarhópsins. Zabbix umboðsmannaþjónustan, sem keyrir sjálfgefið undir kerfisreikningnum, mun ekki geta framkvæmt slíka beiðni. Ég bjó til sérstakan reikning á léninu, gaf honum stjórnunarréttindi á nauðsynlegum netþjónum og stillti þjónustuna til að keyra undir honum á þessum netþjónum.
Þú getur farið aðra leið: vegna þess dfsrdiag, í raun, virkar í gegnum sama WMI, þá geturðu notað
Vöktunarsniðmát
Byggt á gögnunum sem ég fékk bjó ég til sniðmát sem:
- Keyrir sjálfvirka uppgötvun afritunarhópa einu sinni á klukkustund,
- Athugar stærð eftirstöðvar fyrir hvern hóp á 5 mínútna fresti,
- Inniheldur kveikju sem gefur út viðvörun þegar eftirstöðvarstærð hvers hóps er meira en 100 í 30 mínútur. Kveikjan er lýst sem frumgerð sem er sjálfkrafa bætt við greinda hópa,
- Byggir graf eftir stærðarafslátt fyrir hvern afritunarhóp.
Þú getur halað niður sniðmátinu fyrir Zabbix 2.2
Samtals
Eftir að hafa flutt sniðmátið inn í Zabbix og búið til reikning með nauðsynlegum réttindum, þurfum við aðeins að afrita forskriftirnar á skráarþjónana sem við viljum fylgjast með fyrir DFSR, bæta tveimur línum við umboðsmannstillinguna á þeim og endurræsa Zabbix umboðsþjónustuna. , stilla það til að keyra sem viðkomandi reikning. Engar aðrar handvirkar stillingar eru nauðsynlegar fyrir DFSR eftirlit.
Heimild: www.habr.com