Ukuqapha okulula kwe-DFS Replication ku-Zabbix

Isingeniso

Ngengqalasizinda enkulu ngokwanele nesabalalisiwe esebenzisa i-DFS njengendawo eyodwa yokufinyelela kudatha kanye ne-DFSR yokuphindaphinda idatha phakathi kwezikhungo zedatha namaseva wamagatsha, uphakama umbuzo wokuqapha isimo salokhu mphindaphindo.
Ngokuqondana nje, cishe ngokushesha ngemva kokuba siqale ukusebenzisa i-DFSR, saqala ukusebenzisa i-Zabbix ngenhloso yokushintsha indawo ye-zoo ekhona yamathuluzi ahlukahlukene kanye nokuletha ukuqapha kwengqalasizinda kufomu elifundisayo, eliphelele nelinengqondo. Sizokhuluma ngokusebenzisa i-Zabbix ukuqapha ukuphindaphinda kwe-DFS.

Okokuqala, sidinga ukunquma ukuthi iyiphi idatha mayelana nokuphindaphinda kwe-DFS okudingeka itholwe ukuze kuqashwe isimo sayo. Inkomba efaneleke kakhulu wukusilela emuva. Iqukethe amafayela angazange avunyelaniswe namanye amalungu eqembu lokuphindaphinda. Ungabuka usayizi wayo usebenzisa insiza dfsrdiag, efakwe nendima ye-DFSR. Esimeni sokuphindaphinda esijwayelekile, usayizi we-backlog kufanele usondele ku-zero. Ngokufanelekile, izinombolo ezinkulu zamafayela ku-backlog zibonisa izinkinga ngokuphindaphinda.

Manje mayelana nohlangothi olusebenzayo lwendaba.

Ukuze kuqashwe usayizi we-backlog nge-Zabbix Agent, sizodinga:

  • Iskriphthi esizoncozulula okukhiphayo dfsrdiag ukuhlinzeka ngosayizi wokugcina we-backlog amanani ku-Zabbix,
  • Iskripthi esizonquma ukuthi mangaki amaqembu okuphindaphinda akhona kuseva, yimaphi amafolda abawaphindaphindayo nokuthi yimaphi amanye amaseva afakwe kuwo (asifuni ukufaka konke lokhu ku-Zabbix ngesandla kuseva ngayinye, akunjalo?),
  • Ukwengeza le mibhalo njenge-UserParameter ekucushweni komenzeli we-Zabbix ngokushaya okulandelayo okuvela kuseva yokuqapha,
  • Ukuqala isevisi ye-ejenti ye-Zabbix njengomsebenzisi onamalungelo okufunda okusalele emuva,
  • Isifanekiso se-Zabbix, lapho ukutholwa kwamaqembu, ukucutshungulwa kwedatha eyamukelwe kanye nokukhipha izexwayiso kuwo kuzolungiswa.

Umhlaziyi weskripthi

Ukubhala umhlaseli, ngikhethe i-VBS njengolimi olutholakala emhlabeni wonke olukhona kuzo zonke izinguqulo zeWindows Server. I-logic yeskripthi ilula: ithola igama leqembu lokuphindaphinda, ifolda ephindiwe, namagama amaseva athumelayo nawamukelayo ngomugqa womyalo. Lawa mapharamitha abe esedluliselwa kuwo dfsrdiag, futhi kuye ngokukhiphayo elikhiqizayo:
Inombolo yamafayela - uma umlayezo utholwa mayelana nokuba khona kwamafayela ku-backlog,
0 β€” uma umlayezo wamukelwe mayelana nokungabikho kwamafayela ku-backlog (β€œAkukho Ukusalela emuva”),
-1 - uma umlayezo wephutha wamukelwe dfsrdiag lapho wenza isicelo ("[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

Iskripthi sokutholwa

Ukuze i-Zabbix inqume wonke amaqembu okuphindaphinda akhona kuseva futhi ithole yonke imingcele edingekayo yesicelo (igama lefolda, amagama amaseva angomakhelwane), sidinga, okokuqala, sithole lolu lwazi, futhi okwesibili, silwethule. ngefomethi eqondakalayo ku-Zabbix. Ifomethi eqondwa ithuluzi lokuthola ibonakala kanje:

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

...

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

Indlela elula yokuthola ulwazi esiluthakaselayo ukusebenzisa i-WMI, ukuyikhipha ezigabeni ezihambisanayo ze-DfsrReplicationGroupConfig. Ngenxa yalokho, kwazalwa umbhalo okhiqiza isicelo ku-WMI futhi ukhiphe uhlu lwamaqembu, amafolda awo namaseva ngefomethi edingekayo.

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

Ngiyavuma, umbhalo ungase ungakhanyi ngobuhle bekhodi futhi ezinye izinto ezikuwo zingenziwa ngokuqinisekileyo zibe lula, kodwa zenza umsebenzi wawo oyinhloko - ukunikeza ulwazi mayelana nemingcele yamaqembu aphindaphindayo ngefomethi eqondakalayo yi-Zabbix.

Ukwengeza imibhalo ekucushweni komenzeli we-Zabbix

Konke lapha kulula kakhulu. Engeza imigqa elandelayo ekupheleni kwefayela lokumisa umenzeli:

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"

Yebo, silungisa izindlela eziya kulawo lapho sinemibhalo. Ngiwafaka kufolda efanayo lapho i-ejenti ifakwe khona.

Ngemva kokwenza izinguquko, qala kabusha isevisi yomenzeli we-Zabbix.

Ukushintsha umsebenzisi lapho isevisi ye-Zabbix Agent isebenza ngaphansi kwayo

Ukuze uthole ulwazi nge dfsrdiag, insiza kufanele isetshenziswe ngaphansi kwe-akhawunti enamalungelo okulawula kukho kokubili ukuthumela nokwamukela amalungu eqembu eliphindaphindayo. Isevisi yomenzeli we-Zabbix, esebenza ngokuzenzakalelayo ngaphansi kwe-akhawunti yesistimu, ngeke ikwazi ukwenza isicelo esinjalo. Ngidale i-akhawunti ehlukile esizindeni, ngiyinikeze amalungelo okuphatha kumaseva adingekayo, futhi ngalungisa isevisi ukuthi isebenze ngaphansi kwayo kulawa maseva.

Ungahamba ngenye indlela: ngoba dfsrdiag, empeleni, isebenza nge-WMI efanayo, bese ungasebenzisa incazelo, indlela yokunikeza i-akhawunti yesizinda amalungelo okuyisebenzisa ngaphandle kokukhipha amalungelo okuphatha, kodwa uma sinamaqembu amaningi okuphindaphinda, khona-ke ukukhipha amalungelo eqenjini ngalinye kuzoba nzima. Kodwa-ke, uma sifuna ukuqapha ukuphindaphinda kwevolumu ye-Domain System kuzilawuli zesizinda, lokhu kungase kube ukuphela kwenketho eyamukelekayo, njengoba ukunikeza amalungelo omlawuli wesizinda ku-akhawunti yesevisi yokuqapha akuwona umqondo omuhle.

Isifanekiso sokuqapha

Ngokusekelwe kudatha engiyitholile, ngidale isifanekiso sokuthi:

  • Isebenzisa ukutholwa okuzenzakalelayo kwamaqembu aphindaphindayo kanye ngehora,
  • Ihlola usayizi we-backlog yeqembu ngalinye kanye njalo emizuzwini emi-5,
  • Iqukethe i-trigger ekhipha isexwayiso uma usayizi ongemuva wanoma yiliphi iqembu ungaphezu kuka-100 imizuzu engu-30. I-trigger ichazwa njenge-prototype eyengezwa ngokuzenzakalelayo emaqenjini atholiwe,
  • Yakha amagrafu kasayizi we-backlog yeqembu ngalinye lokuphindaphinda.

Ungalanda isifanekiso se-Zabbix 2.2 lapha.

Umphumela

Ngemva kokungenisa isifanekiso ku-Zabbix nokudala i-akhawunti enamalungelo adingekayo, sizodinga kuphela ukukopisha imibhalo kumaseva wefayela esifuna ukuwaqapha ku-DFSR, sengeze imigqa emibili ekucushweni kwe-ejenti okukuyo bese siqalisa kabusha isevisi ye-ejenti ye-Zabbix. , ukuyimisa ukuthi iqalise njenge-akhawunti efunwayo. Azikho ezinye izilungiselelo ezenziwa ngesandla ezidingekayo ukuze kuqashwe i-DFSR.

Source: www.habr.com

Engeza amazwana