Monitoraġġ sempliċi ta 'DFS Replication f'Zabbix

Introduzzjoni

B'infrastruttura pjuttost kbira u mqassma li tuża DFS bħala punt uniku ta 'aċċess għad-dejta u DFSR għar-replikazzjoni tad-dejta bejn iċ-ċentri tad-dejta u s-servers tal-fergħat, tqum il-kwistjoni tal-monitoraġġ tal-istatus ta' din ir-replikazzjoni.
B’kumbinazzjoni, kważi immedjatament wara li bdejna nużaw id-DFSR, bdejna nimplimentaw Zabbix bil-għan li nissostitwixxu ż-zoo eżistenti ta’ diversi għodod u nġibu l-monitoraġġ tal-infrastruttura f’forma aktar informattiva, kompluta u loġika. Se nitkellmu dwar l-użu ta' Zabbix biex tissorvelja r-replikazzjoni tad-DFS.

L-ewwelnett, irridu niddeċiedu liema dejta dwar ir-replikazzjoni tad-DFS trid tinkiseb biex timmonitorja l-istatus tagħha. L-iktar indikatur rilevanti huwa l-backlog. Fiha fajls li ma ġewx sinkronizzati ma 'membri oħra tal-grupp ta' replikazzjoni. Tista 'tara d-daqs tagħha billi tuża l-utilità dfsrdiag, installat bir-rwol DFSR. Fi stat ta' replikazzjoni normali, id-daqs tal-backlog għandu joqrob lejn iż-żero. Għaldaqstant, għadd kbir ta' fajls fil-backlog jindikaw problemi bir-replikazzjoni.

Issa dwar in-naħa prattika tal-kwistjoni.

Sabiex nissorveljaw id-daqs tal-backlog permezz ta’ Zabbix Agent, ikollna bżonn:

  • Script li se jparse l-output dfsrdiag biex tipprovdi valuri finali tad-daqs tal-backlog lil Zabbix,
  • Skript li jiddetermina kemm hemm gruppi ta’ replikazzjoni fuq is-server, liema folders jirreplikaw u liema servers oħra huma inklużi fihom (ma rridux nidħlu dan kollu f’Zabbix bl-idejn għal kull server, hux?),
  • Iż-żieda ta' dawn l-iskripts bħala UserParameter mal-konfigurazzjoni tal-aġent Zabbix għal sejħa sussegwenti mis-server tal-monitoraġġ,
  • Jibda s-servizz tal-aġent Zabbix bħala utent li għandu drittijiet biex jaqra l-backlog,
  • Mudell għal Zabbix, li fih l-iskoperta ta 'gruppi, l-ipproċessar ta' data riċevuta u l-ħruġ ta 'twissijiet fuqhom se jiġu kkonfigurati.

Parser tal-iskript

Biex tikteb il-parser, għażilt VBS bħala l-aktar lingwa universali preżenti fil-verżjonijiet kollha tal-Windows Server. Il-loġika tal-iskrittura hija sempliċi: jirċievi l-isem tal-grupp ta 'replikazzjoni, il-folder replikat, u l-ismijiet tas-servers li jibagħtu u li jirċievu permezz tal-linja tal-kmand. Dawn il-parametri mbagħad jiġu mgħoddija dfsrdiag, u skont l-output tiegħu jipproduċi:
Numru ta 'fajls - jekk jiġi riċevut messaġġ dwar il-preżenza ta' fajls fil-backlog,
0 — jekk jiġi riċevut messaġġ dwar in-nuqqas ta’ fajls fil-backlog (“L-ebda Backlog”),
-1 - jekk jiġi riċevut messaġġ ta' żball dfsrdiag meta tesegwixxi talba ("[ERROR]").

tikseb-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

Skript ta 'skoperta

Sabiex Zabbix tiddetermina l-gruppi ta 'replikazzjoni kollha preżenti fuq is-server u biex issir taf il-parametri kollha meħtieġa għat-talba (isem tal-folder, ismijiet ta' servers ġirien), għandna bżonn, l-ewwel nett, niksbu din l-informazzjoni, u t-tieni, nippreżentawha f’format li jiftiehem minn Zabbix. Il-format li tifhem l-għodda ta 'skoperta jidher bħal dan:

        "data":[
                {
                        "{#GROUP}":"Share1",
                        "{#FOLDER}":"Folder1",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"Server2"}

...

                        "{#GROUP}":"ShareN",
                        "{#FOLDER}":"FolderN",
                        "{#SENDING}":"Server1",
                        "{#RECEIVING}":"ServerN"}]}

L-eħfef mod biex niksbu l-informazzjoni li aħna interessati fiha huwa permezz tal-WMI, billi tiġbedha mis-sezzjonijiet korrispondenti ta 'DfsrReplicationGroupConfig. Bħala riżultat, twieled skript li jiġġenera talba lil WMI u joħroġ lista ta 'gruppi, il-folders tagħhom u s-servers fil-format meħtieġ.

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

Naqbel, l-iskrittura tista 'ma shine b'eleganza ta' kodiċi u xi affarijiet fiha ċertament jistgħu jiġu ssimplifikati, iżda twettaq il-funzjoni ewlenija tagħha - tipprovdi informazzjoni dwar il-parametri ta 'gruppi ta' replikazzjoni f'format li jiftiehem minn Zabbix.

Żieda ta' skripts mal-konfigurazzjoni tal-aġent Zabbix

Kollox hawnhekk huwa estremament sempliċi. Żid il-linji li ġejjin fl-aħħar tal-fajl tal-konfigurazzjoni tal-aġent:

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"

Naturalment, aħna naġġustaw il-mogħdijiet għal dawk fejn għandna skripts. Poġġihom fl-istess folder fejn huwa installat l-aġent.

Wara li tagħmel bidliet, ibda mill-ġdid is-servizz tal-aġent Zabbix.

Nibdlu l-utent li taħtu jaħdem is-servizz Zabbix Agent

Sabiex tirċievi informazzjoni permezz dfsrdiag, l-utilità trid titmexxa taħt kont li għandu drittijiet amministrattivi kemm lill-membri li jibagħtu kif ukoll li jirċievu l-grupp ta 'replikazzjoni. Is-servizz tal-aġent Zabbix, li jaħdem awtomatikament taħt il-kont tas-sistema, mhux se jkun jista 'jwettaq tali talba. Ħloqt kont separat fid-dominju, tajtu drittijiet amministrattivi fuq is-servers meħtieġa, u kkonfigurajt is-servizz biex jaħdem taħtu fuq dawn is-servers.

Tista 'tmur mod ieħor: għaliex dfsrdiag, fil-fatt, jaħdem permezz tal-istess WMI, allura tista 'tuża deskrizzjoni, kif tagħti kont tad-dominju d-drittijiet biex tużah mingħajr ma toħroġ drittijiet amministrattivi, imma jekk ikollna ħafna gruppi ta 'replikazzjoni, allura l-ħruġ tad-drittijiet għal kull grupp ikun diffiċli. Madankollu, f'każ li rridu nissorveljaw ir-replikazzjoni tal-Volum tas-Sistema tad-Dominju fuq il-kontrolluri tad-dominju, din tista 'tkun l-unika għażla aċċettabbli, peress li l-għoti tad-drittijiet tal-amministratur tad-dominju għall-kont tas-servizz ta' monitoraġġ mhix idea tajba.

Mudell ta' monitoraġġ

Ibbażat fuq id-dejta li rċevejt, ħloqt mudell li:

  • Imexxi skoperta awtomatika ta' gruppi ta' replikazzjoni darba fis-siegħa,
  • Jiċċekkja d-daqs tal-backlog għal kull grupp darba kull 5 minuti,
  • Fih trigger li joħroġ twissija meta d-daqs tal-backlog għal kwalunkwe grupp ikun aktar minn 100 għal 30 minuta. Il-grillu huwa deskritt bħala prototip li jiġi miżjud awtomatikament mal-gruppi misjuba,
  • Tibni graffs tad-daqs tal-backlog għal kull grupp ta 'replikazzjoni.

Tista' tniżżel il-mudell għal Zabbix 2.2 hawn.

Total

Wara li nimportaw il-mudell f'Zabbix u noħolqu kont bid-drittijiet meħtieġa, ikollna bżonn biss nikkopjaw l-iskripts fis-servers tal-fajls li rridu nissorveljaw għal DFSR, żid żewġ linji mal-konfigurazzjoni tal-aġent fuqhom u nibdew mill-ġdid is-servizz tal-aġent Zabbix. , issettjaha biex taħdem bħala l-kont mixtieq. L-ebda settings manwali oħra ma huma meħtieġa għall-monitoraġġ tad-DFSR.

Sors: www.habr.com

Żid kumment