Einfalt eftirlit með DFS afritun í Zabbix

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.

Nú um praktíska hlið málsins.

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ð lýsingu, hvernig á að gefa lénsreikningi réttindi til að nota hann án þess að gefa út stjórnunarréttindi, en ef við höfum marga afritunarhópa, þá verður erfitt að gefa út réttindi fyrir hvern hóp. Hins vegar, ef við viljum fylgjast með afritun lénakerfismagns á lénsstýringum, gæti þetta verið eini ásættanlegi kosturinn, þar sem það er ekki góð hugmynd að gefa lénsstjóraréttindi á eftirlitsþjónustureikningnum.

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 hér.

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

Bæta við athugasemd