Zabbix-en DFS Erreplikazioaren jarraipen sinplea

Sarrera

DFS datuetarako sarbide-puntu bakar gisa eta DFSR datu-zentroen eta sukurtsal-zerbitzarien arteko datuen erreplikaziorako nahiko azpiegitura handi eta banatuarekin, erreplikazio honen egoera kontrolatzeko galdera sortzen da.
Kasualitatez, DFSR erabiltzen hasi eta ia berehala, Zabbix inplementatzen hasi ginen hainbat tresnaren zooa ordezkatzeko eta azpiegituren monitorizazioa forma informatibo, osatu eta logikoago batera eramateko helburuarekin. Zabbix DFS erreplikazioa kontrolatzeko erabiltzeari buruz hitz egingo dugu.

Lehenik eta behin, bere egoera kontrolatzeko DFS erreplikazioari buruzko zer datu lortu behar diren erabaki behar dugu. Adierazle garrantzitsuena atzerapena da. Erreplikazio-taldeko beste kide batzuekin sinkronizatu ez diren fitxategiak ditu. Bere tamaina erabilgarritasuna erabiliz ikus dezakezu dfsrdiag, DFSR rolarekin instalatuta. Erreplikazio-egoera normal batean, atzerapenaren tamaina zerora hurbildu beharko litzateke. Horren arabera, atzerapeneko fitxategi kopuru handiek errepikapenarekin arazoak adierazten dituzte.

Orain gaiaren alde praktikoari buruz.

Zabbix Agent bidez atzerapenaren tamaina kontrolatzeko, beharrezkoa izango dugu:

  • Irteera analizatuko duen scripta dfsrdiag Zabbix-i azken atzerapenaren tamainaren balioak emateko,
  • Zerbitzarian zenbat erreplika talde dauden, zein karpetak erreplikatzen dituzten eta zein beste zerbitzari sartzen diren zehaztuko duen script bat (ez dugu hori guztia Zabbixen eskuz sartu nahi zerbitzari bakoitzeko, ezta?),
  • Script hauek Zabbix agentearen konfigurazioan UserParameter gisa gehitzea monitorizazio zerbitzaritik gero deitzeko,
  • Zabbix agente zerbitzua abian jartzea atzerapena irakurtzeko eskubideak dituen erabiltzaile gisa,
  • Zabbix-erako txantiloi bat, zeinetan taldeen detekzioa, jasotako datuak prozesatzea eta horien gaineko alertak igortzea konfiguratuko den.

Script analizatzailea

Analizatzailea idazteko, VBS aukeratu nuen Windows Server-en bertsio guztietan dagoen hizkuntza unibertsalena bezala. Script-aren logika sinplea da: komando-lerroaren bidez erreplika-taldearen izena, errepikatutako karpeta eta zerbitzari bidaltzaileen eta jasotzaileen izenak jasotzen ditu. Ondoren, parametro horiek pasatzen dira dfsrdiag, eta bere irteeraren arabera sortzen du:
Fitxategi-kopurua - Atzerako bilduman fitxategiak egoteari buruzko mezu bat jasotzen bada,
0 β€” Atzerako erregistroan fitxategirik ez egoteari buruzko mezu bat jasotzen bada ("Atzeragorik ez"),
-1 - errore-mezu bat jasotzen bada dfsrdiag eskaera bat exekutatzen denean ("[ERROREA]").

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

Aurkikuntzaren gidoia

Zabbix-ek zerbitzarian dauden erreplika-talde guztiak zehazteko eta eskaera egiteko beharrezkoak diren parametro guztiak ezagutzeko (karpetaren izena, aldameneko zerbitzarien izenak), lehenik eta behin, informazio hori lortu behar dugu eta, bigarrenik, aurkeztu. Zabbixek ulertzeko moduko formatuan. Aurkikuntza tresnak ulertzen duen formatua honelakoa da:

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

...

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

Interesatzen zaigun informazioa lortzeko modurik errazena WMI bidezkoa da, DfsrReplicationGroupConfig-en dagozkion ataletatik ateratzea. Ondorioz, WMIri eskaera bat sortu eta taldeen zerrenda, haien karpetak eta zerbitzariak behar den formatuan ateratzen dituen script bat sortu zen.

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

Ados nago, baliteke gidoiak ez duela distira kodearen dotoreziaz eta, zalantzarik gabe, zenbait gauza sinplifikatu litezke, baina bere funtzio nagusia betetzen du - Zabbix-ek uler daitekeen formatuan erreplikazio-taldeen parametroei buruzko informazioa ematea.

Zabbix agentearen konfigurazioari scriptak gehitzea

Hemen dena oso erraza da. Gehitu lerro hauek agentearen konfigurazio fitxategiaren amaieran:

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"

Noski, gidoiak dauzkagunetara egokitzen ditugu bideak. Agentea instalatuta dagoen karpeta berean jarri ditut.

Aldaketak egin ondoren, berrabiarazi Zabbix agente zerbitzua.

Zabbix Agent zerbitzua exekutatzen den erabiltzailea aldatzea

bidez informazioa jasotzeko dfsrdiag, erabilgarritasuna erreplikazio-taldeko kideak bidaltzeko eta jasotzeko administrazio-eskubideak dituen kontu batean exekutatu behar da. Zabbix agente-zerbitzuak, lehenespenez sistemaren kontuarekin exekutatzen dena, ezin izango du horrelako eskaerarik exekutatu. Domeinuan aparteko kontu bat sortu nuen, administrazio-eskubideak eman nizkion beharrezko zerbitzarietan eta zerbitzua zerbitzari horietan exekutatzeko konfiguratu nuen.

Beste bide bat jo dezakezu: zeren dfsrdiagIzan ere, WMI beraren bidez funtzionatzen du, orduan erabil dezakezu deskribapena, nola eman domeinu-kontu bati administrazio-eskubideak eman gabe erabiltzeko eskubideak, baina erreplika-talde asko baditugu, talde bakoitzari eskubideak ematea zaila izango da. Hala ere, domeinu-sistemaren bolumenaren erreplikazioa domeinu-kontrolagailuetan kontrolatu nahi badugu, hau izan daiteke aukera onargarri bakarra, domeinu-administratzaile-eskubideak jarraipen-zerbitzuaren kontuari ematea ez baita ona.

Jarraipen txantiloia

Jaso ditudan datuetan oinarrituta, txantiloi bat sortu dut:

  • Erreplikazio-taldeen aurkikuntza automatikoa egiten du orduko behin,
  • Talde bakoitzaren atzerapenaren tamaina egiaztatzen du 5 minutuz behin,
  • Edozein talderen atzerapenaren tamaina 100 minutuz 30 baino gehiagokoa denean alerta bat igortzen duen abiarazle bat dauka. Aktibatzailea detektatutako taldeei automatikoki gehitzen den prototipo gisa deskribatzen da,
  • Erreplikazio-talde bakoitzerako atzerapenaren tamaina grafikoak eraikitzen ditu.

Zabbix 2.2rako txantiloia deskargatu dezakezu Hemen.

Guztira

Txantiloia Zabbix-en inportatu eta behar diren eskubideekin kontu bat sortu ondoren, scriptak DFSR kontrolatu nahi ditugun fitxategi-zerbitzarietan kopiatu beharko ditugu, bi lerro gehitu horien agentearen konfigurazioan eta Zabbix agente-zerbitzua berrabiarazi beharko dugu. , nahi duzun kontu gisa exekutatzeko ezarriz. Ez da beste eskuzko ezarpenik behar DFSR monitorizatzeko.

Iturria: www.habr.com

Gehitu iruzkin berria