Fanaraha-maso tsotra ny DFS Replication ao amin'ny Zabbix

fampidirana

Miaraka amin'ny fotodrafitrasa midadasika sy mizarazara izay mampiasa DFS ho toy ny teboka tokana ahafahana miditra amin'ny angona sy ny DFSR ho an'ny replication ny angona eo amin'ny foibe data sy ny lohamilina sampana, dia mipetraka ny fanontaniana momba ny fanaraha-maso ny satan'ity replication ity.
Kisendrasendra, saika avy hatrany taorian'ny nanombohanay nampiasa ny DFSR, dia nanomboka nampihatra Zabbix izahay miaraka amin'ny tanjona hanoloana ny zoo efa misy amin'ny fitaovana isan-karazany ary hitondra ny fanaraha-maso ny fotodrafitrasa ho amin'ny endrika fampahafantarana, feno ary lojika kokoa. Hiresaka momba ny fampiasana Zabbix izahay hanaraha-maso ny famerenan'ny DFS.

Voalohany indrindra, mila manapa-kevitra momba ny angon-drakitra momba ny replication DFS isika mba hanaraha-maso ny toerany. Ny famantarana manan-danja indrindra dia ny backlog. Izy io dia misy rakitra izay tsy natambatra tamin'ny mpikambana hafa ao amin'ny vondrona replication. Azonao atao ny mijery ny habeny amin'ny fampiasana ny utility dfsrdiag, napetraka miaraka amin'ny anjara DFSR. Amin'ny toe-javatra replication mahazatra, ny haben'ny backlog dia tokony hanakaiky ny zero. Noho izany, maro ny rakitra ao amin'ny backlog manondro olana amin'ny replication.

Izao ny momba ny lafiny azo ampiharina amin'ilay olana.

Mba hanaraha-maso ny haben'ny backlog amin'ny alΓ lan'ny Zabbix Agent dia mila:

  • Script izay hamafa ny vokatra dfsrdiag hanome ny soatoavin'ny haben'ny backlog farany amin'ny Zabbix,
  • Skripta hamaritana hoe firy ny vondrona replication ao amin'ny server, inona ny lahatahiry averin'izy ireo ary inona ny lohamilina hafa ampidirina ao aminy (tsy te hampiditra izany rehetra izany amin'ny Zabbix amin'ny tanana ho an'ny mpizara tsirairay izahay, sa tsy izany?),
  • Manampy ireo script ireo ho UserParameter amin'ny fanamafisam-peo Zabbix ho an'ny fiantsoana manaraka avy amin'ny mpizara mpanara-maso,
  • Manomboka ny serivisy Zabbix agent ho toy ny mpampiasa manana zo hamaky ny backlog,
  • MΓ΄dely ho an'ny Zabbix, izay hahitana ny vondrona, ny fanodinana ny angon-drakitra voaray ary ny famoahana fampandrenesana azy ireo.

Script parser

Mba hanoratana ny parser dia nisafidy ny VBS aho ho fiteny manerantany indrindra amin'ny dikan-teny Windows Server rehetra. Tsotra ny lojikan'ny script: mandray ny anaran'ny vondrona replication, ny lahatahiry averina, ary ny anaran'ny mpizara mandefa sy mandray amin'ny alàlan'ny baiko. Ampitaina amin'izay ireo paramètre ireo dfsrdiag, ary miankina amin'ny vokatra azony:
Isan'ny rakitra - raha misy hafatra voaray momba ny fisian'ny rakitra ao amin'ny backlog,
0 - raha misy hafatra voaray momba ny tsy fisian'ny rakitra ao amin'ny backlog ("No Backlog"),
-1 - raha misy hafatra diso voaray dfsrdiag rehefa manatanteraka fangatahana ("[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

script Discovery

Mba hamaritana an'i Zabbix ny vondrona replication rehetra hita ao amin'ny mpizara ary hahitana ny mari-pamantarana rehetra ilaina amin'ny fangatahana (anaran'ny lahatahiry, anaran'ireo mpizara mpifanolo-bodirindrina), dia mila mahazo izany vaovao izany isika, ary faharoa, manolotra izany. amin'ny endrika takatry ny Zabbix. Toy izao ny endrika takatry ny fitaovana fitadiavana:

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

...

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

Ny fomba tsotra indrindra hahazoana ny vaovao mahaliana anay dia amin'ny alΓ lan'ny WMI, misintona azy avy amin'ny fizarana mifanaraka amin'ny DfsrReplicationGroupConfig. Vokatr'izany dia teraka ny script izay miteraka fangatahana amin'ny WMI ary mamoaka lisitry ny vondrona, ny lahatahiry ary ny lohamilina amin'ny endrika takiana.

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

Manaiky aho, ny script dia mety tsy hamirapiratra amin'ny kaody kaody ary ny zavatra sasany ao anatiny dia azo tsotsotra, fa manatanteraka ny asany fototra - manome fampahalalana momba ny mason'ny vondrona replication amin'ny endrika takatry ny Zabbix.

Fanampiana script amin'ny fandrindrana mpiasan'ny Zabbix

Tsotra ny zava-drehetra eto. Ampio ireto andalana manaraka ireto any amin'ny faran'ny fichier configuration agent:

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"

Mazava ho azy fa manitsy ny lalana mankany amin'ireo izay ananantsika script isika. Apetrako ao amin'ny lahatahiry iray izay ametrahana ilay agent izy ireo.

Rehefa avy nanao fanovana dia avereno indray ny serivisy Zabbix agent.

Fanovana ny mpampiasa izay iasan'ny serivisy Zabbix Agent

Mba hahazoana vaovao amin'ny alalan'ny dfsrdiag, ny fitaovana dia tsy maintsy atao amin'ny kaonty manana zo ara-pitantanana amin'ny fandefasana sy fandraisana mpikambana ao amin'ny vondrona replication. Ny serivisy mpiasan'ny Zabbix, mandeha amin'ny alΓ lan'ny default eo ambanin'ny kaonty rafitra, dia tsy afaka manatanteraka fangatahana toy izany. Namorona kaonty mitokana ao amin'ny sehatra aho, nanome azy zo ara-pitantanana amin'ireo lohamilina ilaina, ary nanamboatra ny serivisy mba hihazakazaka eo ambanin'izany amin'ireo lohamilina ireo.

Afaka mandeha amin'ny fomba hafa ianao: satria dfsrdiag, raha ny marina, miasa amin'ny WMI mitovy, dia azonao ampiasaina Description, ny fomba hanomezana ny kaonty domain ny zo hampiasa azy nefa tsy mamoaka zo ara-pitantanana, fa raha manana vondrona replication maro isika, dia ho sarotra ny famoahana zo ho an'ny vondrona tsirairay. Na izany aza, raha te-hanara-maso ny famerenan'ny Domain System Volume amin'ny fanaraha-maso ny sehatra izahay, dia mety ho io ihany no safidy azo ekena, satria tsy hevitra tsara ny fanomezana ny zon'ny mpandrindra sehatra amin'ny kaonty serivisy fanaraha-maso.

MΓ΄dely fanaraha-maso

Araka ny angon-drakitra azoko dia namorona mΓ΄dely iray aho izay:

  • Mandeha ho azy ny fitadiavana vondrona replication indray mandeha isan'ora,
  • Manamarina ny haben'ny backlog isaky ny vondrona indray mandeha isaky ny 5 minitra,
  • Misy trigger izay mamoaka fanairana rehefa mihoatra ny 100 ny haben'ny backlog ho an'ny vondrona rehetra mandritra ny 30 minitra. Ny trigger dia lazaina ho prototype izay ampiana ho azy amin'ny vondrona hita,
  • Manangana sarin'ny haben'ny backlog ho an'ny vondrona replication tsirairay.

Azonao atao ny misintona ny mΓ΄dely ho an'ny Zabbix 2.2 eto.

Ny vokany

Rehefa avy nanafatra ny mΓ΄dely ao amin'ny Zabbix ary mamorona kaonty miaraka amin'ny zo ilaina, dia mila mandika ny script amin'ny mpizara rakitra izay tiantsika hojerena ho an'ny DFSR, ampio andalana roa amin'ny fanamafisana ny agence amin'izy ireo ary avereno indray ny serivisy Zabbix agent. , mametraka azy hihazakazaka toy ny kaonty irina. Tsy ilaina ny fanitsiana manual hafa amin'ny fanaraha-maso ny DFSR.

Source: www.habr.com

Add a comment