Hyrje
Kur një infrastrukturë mjaft të madhe dhe të shpërndarë që përdor DFS si një pikë të vetme qasjeje në të dhëna dhe DFSR për replikimin e të dhënave midis Qendrës së Të Dhënave dhe serverëve të degës, lind pyetja e monitorimit të gjendjes së kësaj replikimi.
Rastësisht, menjëherë pas fillimit të përdorimit të DFSR, ne filluam implementimin e Zabbix me qëllim zëvendësimin e një kopshti ekzistues të mjeteve të ndryshme dhe të sjellim monitorimin e infrastrukturës në një pamje më të informuar, të plotë dhe logjike. Do të flasim për përdorimin e Zabbix për të monitoruar replikimin e DFS.
Së pari, na nevojitet të përcaktojmë cilat të dhëna rreth replikimit të DFS duhen marrë për të kontrolluar gjendjen e tij. Indikatori më i rëndësishëm është backlog. Atëherë, mbledhjen e skedarëve që nuk janë sinkronizuar me anëtarët e tjerë të grupit të replikimit e gjejmë në të. Mund ta shohim madhësinë e saj me ndihmën e dfsrdiag, i cili instalohet me rolin DFSR. Në gjendjen normale të replikimit, madhësia e backlog duhet të tendoset drejt zero. Prandaj, vlerat e mëdha të numrit të skedarëve në backlog tregojnë për probleme me replikimin.
Tani për aspektin praktik të çështjes.
Për të monitoruar madhësinë e backlog përmes Zabbix Agent, na nevojiten:
- Një skript që do të analizojë daljen dfsrdiag për të ofruar në Zabbix vlerat përfundimtare të madhësisë së backlog,
- Një skript që do të përcaktojë se sa grupe replikimi ka në server, cilat dosje ato po replikojnë dhe cilat serverë të tjerë hyjnë në to (ne nuk duam të shtojmë gjithçka manualisht në Zabbix për çdo server, apo jo?),
- Shtimi i këtyre skripteve si UserParameter në konfigurimin e agentit Zabbix për thirrje të mëvonshme nga serveri i monitorimit,
- Nxjerrja e shërbimit të agentit Zabbix në emër të një përdoruesi që ka të drejta për të lexuar backlog,
- Një model për Zabbix, ku do të konfiguroni zbulimin e grupeve, përpunimin e të dhënave të marra dhe dhënien e alarmeve për to.
Skripti-analizues
Për të shkruar analizuesin, zgjodha VBS si gjuhën më universale, e cila është e pranishme në të gjitha versionet e Windows Server. Logjika e punës së skriptit është mjaft e thjeshtë: ai merr përmes komandës emrin e grupit të replikimit, dosjen që po replikon dhe emrat e serverëve dërgues dhe marrës. Pastaj këto parametra kalohen në dfsrdiag, dhe në varësi të daljes së saj, jepet:
Numri i skedarëve — nëse është marrë një mesazh për praninë e skedarëve në backlog,
0 — nëse merrni një mesazh për mungesën e skedarëve në backlog («No Backlog»),
-1 — nëse merrni një mesazh gabimi dfsrdiag në përmbushjen e kërkesës ("[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 intBackLogSkripti i zbulimit
Për të lejuar që Zabbix të identifikojë automatikisht të gjitha grupet e replikimit që janë të pranishme në server, dhe të zbulojë të gjithë parametrat e nevojshëm për kërkesën (emri i folderit, emrat e serverëve fqinj), na nevojitet kësaj informacioni, së pari, për ta marrë, dhe së dyti, ta paraqesim në një format të kuptueshëm për Zabbix. Formati që e kupton instrumenti i zbulimit është kështu:
"data":[
{
"{#GROUP}":"Share1",
"{#FOLDER}":"Folder1",
"{#SENDING}":"Server1",
"{#RECEIVING}":"Server2"}
...
"{#GROUP}":"ShareN",
"{#FOLDER}":"FolderN",
"{#SENDING}":"Server1",
"{#RECEIVING}":"ServerN"}]}Informacioni që na intereson mund të merret më lehtë përmes WMI, duke e nxjerrë atë nga seksionet përkatëse DfsrReplicationGroupConfig. Në përfundim, u lind skripti që formon një kërkesë për WMI dhe në daljen e saj jep një listë grupesh, folderash dhe serverësh në formatin e nevojshëm.
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
E pranuar, skenari, ndoshta, nuk shquhet për shkëlqim kodesh dhe ndoshta mund të thjeshtohet disa gjëra, por funksionin e tij kryesor - të ofrojë informacion mbi parametrat e grupeve të replikimit në një format të kuptueshëm për Zabbix - e kryen me sukses.
Shtimi i skripteve në konfigurimin e agjentit Zabbix
Këtu gjithçka është jashtëzakonisht e thjeshtë. Në fund të skedarit të konfigurimit të agjentit shtojmë rreshtat:
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"
Natyrisht, rrugët i përmirësojmë në ato ku kemi skriptet. Unë i kam vendosur në të njëjtën dosje ku është instaluar agjenti.
Pas bërë ndryshimeve, rindizni shërbimin e agjentit Zabbix.
Ndryshimi i përdoruesit nga i cili funksionon shërbimi Zabbix Agent
Për të marrë informacionin përmes dfsrdiag, utilitari duhet të nisë nga një llogari që ka të drejta administrative si në anëtarët e group-it dërgues ashtu edhe në ata marrës. Shërbimi i agjentit Zabbix, që funksionon nën llogarinë sistemore si parazgjedhje, nuk mund të kryejë një kërkesë të tillë. Krijova një llogari të veçantë në domen, i dhashë të drejta administrative në serverët e nevojshëm dhe e konfigurita shërbimin që të nisë nga ajo llogari në këto servera.
Mund të shkojmë edhe në një rrugë tjetër: për shkak se dfsrdiag, në thelb, punon nëpërmjet të njëjtës WMI, mund të shfrytëzojmë , se si t'i japim llogarisë së domenit të drejtat për ta shfrytëzuar pa i dhënë të drejta administrative, por nëse kemi shumë grupe replikimi, do të ishte e vështirë të jepnim të drejta për çdo grup. Megjithatë, në rastin kur duam të monitorojmë replikimin e Domain System Volume në kontrolluesit e domenit, kjo mund të jetë opsioni i vetëm i pranueshëm, pasi t'i japësh privilegje administratori llogarisë së shërbimit të monitorimit — nuk është ideja më e mirë.
Shablloni i monitorimit
Duke u bazuar në të dhënat e marra, krijova një shabllon që:
- Nis automatikisht zbulimin e grupeve të replikimit çdo orë,
- Kontrollon madhësinë e backlog për çdo grup çdo 5 minuta,
- Përmban një nxitës që jep një alarm kur madhësia e backlog për ndonjë grup kalon 100 për 30 minuta. Nxitësi përshkruhet si një prototip, që shtohet automatikisht në grupet e zbuluara,
- Ndërton grafike të madhësisë së backlog për çdo grup replikimi.
Mund të shkarkoni shabllonin për Zabbix 2.2 .
Përfundimi
Pas importit të shabllonit në Zabbix dhe krijimit të një llogarie me të drejtat e nevojshme, mjafton vetëm të kopjoni skriptet në serverët e skedarëve që dëshirojmë të monitorojmë për DFSR, të shtoni dy rreshta në konfigurimin e agjentit dhe të riaktivizoni shërbimin agjentit Zabbix, duke e konfiguruar që të nisë nga llogaria e nevojshme. Nuk do të nevojiten asnjë konfigurim tjetër manual për monitorimin e DFSR.
Burimi: habr.com
