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